From 2b05f2949c43d60abd3dedccbbe6d557e99ed084 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 24 Apr 2026 18:32:43 +0000 Subject: [PATCH 1/4] chore: checkpoint before timeout quarantine change Agent-Logs-Url: https://github.com/potemkin666/AlbertAlert/sessions/2a1f5bd3-98fd-4ec6-94a2-1047ece8090d Co-authored-by: potemkin666 <183807833+potemkin666@users.noreply.github.com> --- data/albertalert.sqlite | Bin 2396160 -> 2404352 bytes data/quarantined-sources.json | 18783 +--------------- data/source-remediation-sweep.json | 92 +- data/top-20-source-remediation.json | 41 +- live-alerts.json | 31162 +++----------------------- source-quarantine.html | 12 +- 6 files changed, 3707 insertions(+), 46383 deletions(-) diff --git a/data/albertalert.sqlite b/data/albertalert.sqlite index c900dc1a9c5a150e54de13e4e63d577174774c7d..e6da0625a3004655d018e8a316331e4b176ee762 100644 GIT binary patch delta 4089 zcmbVP3vd(18NS^;Nq5rePDaAA<%i_h#yl)r4@itRRAIw6EM(>$2AJf^6VKm%!MLjwu#gk(Z^q>xTCBs4P#leTI11Tw}v z>~!Zo&1i4`_wN7gt$TI|tUEUZHf1T6Q50+#w9E#}c0T@`z~l>Vipp;toYkMx{XPvHD|He>fZo1VcVz!Ifyt1H1S*Svv@dDd7|0obVT6kAQ^@ zLaR_NOcm1jFZg%)Kk(1--{)iecleonI*+vf(4N-r)&5euNxM=jYHPJ++CnYOea4;T z-r|18ZQ%w$3n&KlTqpNk?taeA<#JGSPV=hf8O?yEOVgy8r*UZv>Z|Ir>etlU)WdOg zmwLXsNtUy|8s4s26vq|&6u(kDp=eXoE9{DNg@V37ze(?> zx6lK0AH9U0OJ|^q=+7v=9Sx#YD1;WFS~MN;@G^V{z6^f~WAHKPfm5IYd;(5_-QZ_n zEk$J`FKi92i1kE7YezI3vUW$rc46WaSsu~Iw!Eu$&k+H!94ty7Ze&Np(5B85@Xhg z7!`dHe>=FAbf_lqXXY+4zVXfz2RcbAtQ9o;iT-R&D^56nHJc>;QTIULLH@#+5t4 z6DCGJXR?k?UnC@2W5F&l3W{vV4{_5qG-Ckn0t7GtccK4Qm6Ejvs)iC4DHHq)ik0*- z?KN#N>g8HAJK#3;yXv{%MRpH!l{&%HsdiE|gVp-D#PvJ$PFI$mVHt+4qA2oEOjT+J zj@o3k*Egl5=K7wq)QV!@#{MI#95#pBYAdrk$`;xyDxHo>XIV*w+y3Y{^J%vUB({Hw z&MM>5q<*`;++)6nUn2!bc~+mQNYb~F*Z+@qxpxUin$mC6`(3#4OJo{ozlI2C0tJDR zKt;e1umoxX4FN}>CEy7J0v$mb!6X7bfq`H$K{|nvAcG*2K-Ql{kWG+7kV{}Dun^=C z+?Qy-mj857fex?~e}&g+OSy+NF?9>u&h)F+C^sqg(r==_!}H(^zz(OaJ6|GoND3`g zl~wAMsKgR5M1r^R(%u;`tKAC0+7Qz@wyC*BSFBBz44->L=#W;p3(q*7fw-uMvFp z2WBJw=&0!+Sd$F>&T)_wW#CVbnVyBctMOOI&6(!WXDyYUP?+%WjpVpbm|sQfg;n@! zNkL}XZL9ILW9Cc6%`0!zw`ijE-QKNwy7=L~8)6_Utzo?Cu39 z3vHfCr>)XvE3w&ZkM6f@mdDSfCB1T9s=N|1XL`nl7{A#Y33-f;@mAg*39+Tj=Mh_6 z6&{u5jVWd)ow%zj7>kLbWr4q)9E(mdO6GcGt=5HNBodC00G9{FUdvp#b|6Q(quw6UBh_jt?`4`NgeZRGNm3gXrT%VkJbL0;V~ZFCbWgzE6J zLW6$ZJ-i-aw3OPr6CNpm3#SbkGZUMBRL~8d+K*@k@<%A4oj*cKbbyab#{M#WvOsci zs$|-yD0YPS#~iqn#d}ucZWX@MeEeRQ1If_u)F<zF&zI7pNIGUo8LS`QhhC{O!ECuSHo2P1 zmI_-%i^EmX>hjcxU8K9p9kSaO>a#rPYxPCiL`yB{jsZ(uPq33PM19Dzpf3{iS+4iW vV6@9pOFmr5B{I}zsqsZc3_j-#Sarr!l3{l)v^y%v&DK$#?Dcc_*5vpf#YVON delta 1328 zcmX}sdu&rx7y$5o=bZa&?>%kz=(??IOW9CH*#;|n$ZI^@kdes@LgHg~U7=;&Bexx9 zQAZ~;gBXD^$%#Y+jDo-)unpG*6$C?~5F%(qfgq0nMk7;*(Fq8iVd71G_a^t;^PTT} z-^op0*#gO(TVQjJ&~7rJMSY$*&_3|e2UMOwXPWpmx8Gu2Fl0;qruWZrAE*2crX%A6 z6X{KQcF5{^gZ6up1^u5CIj5vsu@A+9Mr+ugh_-~|Fo}PcmVt{P+~E%;{Gqlsqbb@N zOtcw+!D7)WoHNm%DD&==7Y})oNxFa{?1Nw|Y$O^&kq)DEjRSBAinnzbp>TuI(b^D+ z#`)yV>VUu_OY{=Iqxtk6{gd9Nzw%hu=p~-(2|9GSA^&r{5$aNs2l7A&LN!e8w4bvTM^aWUWCNjglo(Js1zE~I{%r9aSb z=-=p{>U;F{`Wk(ec$&N^j_51&*?NI))lJ$>?Sgh(+pYCzA#I*ksM$1R8MU0Zj99i> zUbn2YEVPtaZ00|Nx7V7ln9rK`VXN@6P;1^`UX320Tj&friuR$cD2D2UBJ#0dCqJ8) zm>)OW)qCnM>S^_m_@265U8k;87pujpL%FY9RgNipl=Vt8*?}sNPpLtYGFh?9f5|uH zFXRLAF1bsNkc;wDav6LN@5|ZJL+OU}wKVIvv{%|DbxDoziu4S;0Oi6p;gqmPnk%^_ zMI04h6C1@Eu>g9Y8HQo|qh~!-@UG*YY4InFa4_CsbowKSmKd_<<0X8ZS7nbC*);4z z(NNs*H-}>IfI&Gt$y&<6MJD6rh*h1`^4XyZa69aH5?a+7PWX**JRCGa5g7B~MSNq| zG^iweIUheSZsNrY5!-dmnTw#0b(O%gtfUOGo$0vnQGSWG_WyHqdGLJ1tbe<5 zM3j?_%lKx$RWjJE5~!s*cB9p8u~=tQIMfWwm_8l8V>P8v!g@>L3Ymbb`RZpxmk3Rd z$^_?$BZX(c)bXNBN9^pK^fcC320KU|p2HKGE;w1F0(}2<;HnpSSymS4!}Ba_Elw&VjM#3#W7siiw1#1DKv;5 z&MK5PnCzzgCb~@Aq<%qg78nK=umaXLpiD`(^E zTpE|oWpJ6CgUjNa+<5#PE|+t0d7PW`a9(agDl+DKcajMDs7W6kvL&zUsnMwuGnZSource Quarantine Review
- Generated: 2026-04-24T17:57:58.900Z - Low-health sources: 527 + Generated: 2026-04-24T18:32:34.861Z + 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: 163h + 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-24T17:57:58.900Z') + '', + 'Generated: ' + escapeHtml(payload.generatedAt || '2026-04-24T18:32:34.861Z') + '', 'Low-health sources: ' + escapeHtml(currentEntries.length) + '', 'Pending suggestions: ' + escapeHtml(currentSuggestions.length) + '', 'SLA: deprioritised, auto-recheck 24h+', From bb10b6a8c8e465dc19bbc9735b37e1f6d04f8c4c Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 24 Apr 2026 18:35:17 +0000 Subject: [PATCH 2/4] Adjust quarantine rules for repeated timeouts Agent-Logs-Url: https://github.com/potemkin666/AlbertAlert/sessions/2a1f5bd3-98fd-4ec6-94a2-1047ece8090d Co-authored-by: potemkin666 <183807833+potemkin666@users.noreply.github.com> --- data/albertalert.sqlite | Bin 2404352 -> 2396160 bytes data/quarantined-sources.json | 18783 ++++++++++- data/source-remediation-sweep.json | 92 +- data/top-20-source-remediation.json | 41 +- live-alerts.json | 33300 ++++++++++++++++--- scripts/build-live-feed.mjs | 34 +- scripts/build-live-feed/config.mjs | 1 + scripts/ci/seed-quarantine-from-health.mjs | 8 +- source-quarantine.html | 12 +- tests/decision-logic.test.mjs | 2 + tests/error-pattern-analysis.test.mjs | 27 + tests/seed-quarantine.test.mjs | 8 + 12 files changed, 47524 insertions(+), 4784 deletions(-) diff --git a/data/albertalert.sqlite b/data/albertalert.sqlite index e6da0625a3004655d018e8a316331e4b176ee762..c900dc1a9c5a150e54de13e4e63d577174774c7d 100644 GIT binary patch delta 1328 zcmX}sdu&rx7y$5o=bZa&?>%kz=(??IOW9CH*#;|n$ZI^@kdes@LgHg~U7=;&Bexx9 zQAZ~;gBXD^$%#Y+jDo-)unpG*6$C?~5F%(qfgq0nMk7;*(Fq8iVd71G_a^t;^PTT} z-^op0*#gO(TVQjJ&~7rJMSY$*&_3|e2UMOwXPWpmx8Gu2Fl0;qruWZrAE*2crX%A6 z6X{KQcF5{^gZ6up1^u5CIj5vsu@A+9Mr+ugh_-~|Fo}PcmVt{P+~E%;{Gqlsqbb@N zOtcw+!D7)WoHNm%DD&==7Y})oNxFa{?1Nw|Y$O^&kq)DEjRSBAinnzbp>TuI(b^D+ z#`)yV>VUu_OY{=Iqxtk6{gd9Nzw%hu=p~-(2|9GSA^&r{5$aNs2l7A&LN!e8w4bvTM^aWUWCNjglo(Js1zE~I{%r9aSb z=-=p{>U;F{`Wk(ec$&N^j_51&*?NI))lJ$>?Sgh(+pYCzA#I*ksM$1R8MU0Zj99i> zUbn2YEVPtaZ00|Nx7V7ln9rK`VXN@6P;1^`UX320Tj&friuR$cD2D2UBJ#0dCqJ8) zm>)OW)qCnM>S^_m_@265U8k;87pujpL%FY9RgNipl=Vt8*?}sNPpLtYGFh?9f5|uH zFXRLAF1bsNkc;wDav6LN@5|ZJL+OU}wKVIvv{%|DbxDoziu4S;0Oi6p;gqmPnk%^_ zMI04h6C1@Eu>g9Y8HQo|qh~!-@UG*YY4InFa4_CsbowKSmKd_<<0X8ZS7nbC*);4z z(NNs*H-}>IfI&Gt$y&<6MJD6rh*h1`^4XyZa69aH5?a+7PWX**JRCGa5g7B~MSNq| zG^iweIUheSZsNrY5!-dmnTw#0b(O%gtfUOGo$0vnQGSWG_WyHqdGLJ1tbe<5 zM3j?_%lKx$RWjJE5~!s*cB9p8u~=tQIMfWwm_8l8V>P8v!g@>L3Ymbb`RZpxmk3Rd z$^_?$BZX(c)bXNBN9^pK^fcC320KU|p2HKGE;w1F0(}2<;HnpSSymS4!}Ba_Elw&VjM#3#W7siiw1#1DKv;5 z&MK5PnCzzgCb~@Aq<%qg78nK=umaXLpiD`(^E zTpE|oWpJ6CgUjNa+<5#PE|+t0d7PW`a9(agDl+DKcajMDs7W6kvL&zUsnMwuGnZitRRAIw6EM(>$2AJf^6VKm%!MLjwu#gk(Z^q>xTCBs4P#leTI11Tw}v z>~!Zo&1i4`_wN7gt$TI|tUEUZHf1T6Q50+#w9E#}c0T@`z~l>Vipp;toYkMx{XPvHD|He>fZo1VcVz!Ifyt1H1S*Svv@dDd7|0obVT6kAQ^@ zLaR_NOcm1jFZg%)Kk(1--{)iecleonI*+vf(4N-r)&5euNxM=jYHPJ++CnYOea4;T z-r|18ZQ%w$3n&KlTqpNk?taeA<#JGSPV=hf8O?yEOVgy8r*UZv>Z|Ir>etlU)WdOg zmwLXsNtUy|8s4s26vq|&6u(kDp=eXoE9{DNg@V37ze(?> zx6lK0AH9U0OJ|^q=+7v=9Sx#YD1;WFS~MN;@G^V{z6^f~WAHKPfm5IYd;(5_-QZ_n zEk$J`FKi92i1kE7YezI3vUW$rc46WaSsu~Iw!Eu$&k+H!94ty7Ze&Np(5B85@Xhg z7!`dHe>=FAbf_lqXXY+4zVXfz2RcbAtQ9o;iT-R&D^56nHJc>;QTIULLH@#+5t4 z6DCGJXR?k?UnC@2W5F&l3W{vV4{_5qG-Ckn0t7GtccK4Qm6Ejvs)iC4DHHq)ik0*- z?KN#N>g8HAJK#3;yXv{%MRpH!l{&%HsdiE|gVp-D#PvJ$PFI$mVHt+4qA2oEOjT+J zj@o3k*Egl5=K7wq)QV!@#{MI#95#pBYAdrk$`;xyDxHo>XIV*w+y3Y{^J%vUB({Hw z&MM>5q<*`;++)6nUn2!bc~+mQNYb~F*Z+@qxpxUin$mC6`(3#4OJo{ozlI2C0tJDR zKt;e1umoxX4FN}>CEy7J0v$mb!6X7bfq`H$K{|nvAcG*2K-Ql{kWG+7kV{}Dun^=C z+?Qy-mj857fex?~e}&g+OSy+NF?9>u&h)F+C^sqg(r==_!}H(^zz(OaJ6|GoND3`g zl~wAMsKgR5M1r^R(%u;`tKAC0+7Qz@wyC*BSFBBz44->L=#W;p3(q*7fw-uMvFp z2WBJw=&0!+Sd$F>&T)_wW#CVbnVyBctMOOI&6(!WXDyYUP?+%WjpVpbm|sQfg;n@! zNkL}XZL9ILW9Cc6%`0!zw`ijE-QKNwy7=L~8)6_Utzo?Cu39 z3vHfCr>)XvE3w&ZkM6f@mdDSfCB1T9s=N|1XL`nl7{A#Y33-f;@mAg*39+Tj=Mh_6 z6&{u5jVWd)ow%zj7>kLbWr4q)9E(mdO6GcGt=5HNBodC00G9{FUdvp#b|6Q(quw6UBh_jt?`4`NgeZRGNm3gXrT%VkJbL0;V~ZFCbWgzE6J zLW6$ZJ-i-aw3OPr6CNpm3#SbkGZUMBRL~8d+K*@k@<%A4oj*cKbbyab#{M#WvOsci zs$|-yD0YPS#~iqn#d}ucZWX@MeEeRQ1If_u)F<zF&zI7pNIGUo8LS`QhhC{O!ECuSHo2P1 zmI_-%i^EmX>hjcxU8K9p9kSaO>a#rPYxPCiL`yB{jsZ(uPq33PM19Dzpf3{iS+4iW vV6@9pOFmr5B{I}zsqsZc3_j-#Sarr!l3{l)v^y%v&DK$#?Dcc_*5vpf#YVON diff --git a/data/quarantined-sources.json b/data/quarantined-sources.json index 4fa8ce26..e14a2bad 100644 --- a/data/quarantined-sources.json +++ b/data/quarantined-sources.json @@ -1,14 +1,18783 @@ { - "generatedAt": "2026-04-24T18:32:34.861Z", - "count": 0, + "generatedAt": "2026-04-24T17:57:58.900Z", + "count": 527, "metrics": { - "total": 0, - "newThisWeek": 0, - "avgTimeInQuarantineHours": 0, - "avgHealthScore": 0, + "total": 527, + "newThisWeek": 231, + "avgTimeInQuarantineHours": 163, + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "id": "dutch-police-rss-index", + "provider": "Dutch National Police - News (EN)", + "endpoint": "https://www.politie.nl/en/news?source=dutch-police-rss-index", + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "id": "eu-commission-home-affairs-topic", + "provider": "European Commission - 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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "id": "eu-home-affairs-news", + "provider": "European Commission - Home Affairs News", + "endpoint": "https://home-affairs.ec.europa.eu/news_en?source=eu-home-affairs-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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "id": "eu-security-union-strategy", + "provider": "European Commission - Home Affairs News", + "endpoint": "https://home-affairs.ec.europa.eu/news_en?source=eu-security-union-strategy", + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "id": "echr-press-releases-rss", + "provider": "UK Judiciary - Judgments Feed", + "endpoint": "https://www.judiciary.uk/judgments/feed/?source=echr-press-releases-rss", + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "id": "osce-press-releases", + "provider": "OSCE a Press Releases", + "endpoint": "https://news.osce.org/news/list?item_type=press-release&lang=en&page=1", + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "id": "croydon-council-news", + "provider": "Croydon Council a News", + "endpoint": "https://news.croydon.gov.uk/category/recent-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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "id": "hillingdon-council-news", + "provider": "Hillingdon Council a News", + "endpoint": "https://pre.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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "id": "islington-council-news", + "provider": "Islington Council a News", + "endpoint": "https://www.islington.media/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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "id": "lambeth-council-news", + "provider": "Lambeth Council a News", + "endpoint": "https://love.lambeth.gov.uk/all-posts/", + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "id": "london-gov-rss-80603", + "provider": "Mayor of London - Press Releases", + "endpoint": "https://www.london.gov.uk/media-centre/mayors-press-releases", + "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-24T17:57:58.900Z" + }, + { + "id": "london-gov-rss-80632", + "provider": "London Assembly - Press Releases", + "endpoint": "https://www.london.gov.uk/who-we-are/what-london-assembly-does/london-assembly-press-releases", + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "id": "avon-somerset-police-news", + "provider": "Avon & Somerset Police - News", + "endpoint": "https://www.avonandsomerset.police.uk/news/?source=avon-somerset-police-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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "id": "west-yorkshire-police-all-rss", + "provider": "West Yorkshire Police - All News", + "endpoint": "https://www.westyorkshire.police.uk/news-stories-all", + "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-24T17:57:58.900Z" + }, + { + "id": "west-yorkshire-police-news-appeals", + "provider": "West Yorkshire Police - News Appeals", + "endpoint": "https://www.westyorkshire.police.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-24T17:57:58.900Z" + }, + { + "id": "west-yorkshire-police-news-rss", + "provider": "West Yorkshire Police - News", + "endpoint": "https://www.westyorkshire.police.uk/news-stories-all?source=west-yorkshire-police-news-rss", + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "id": "gov-uk-cabinet-office-atom", + "provider": "Cabinet Office", + "endpoint": "https://www.gov.uk/government/organisations/cabinet-office?source=gov-uk-cabinet-office-atom", + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "id": "gov-uk-mod-atom", + "provider": "Ministry of Defence", + "endpoint": "https://www.gov.uk/government/organisations/ministry-of-defence?source=gov-uk-mod-atom", + "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-24T17:57:58.900Z" + }, + { + "id": "gov-uk-moj-atom", + "provider": "Ministry of Justice", + "endpoint": "https://www.gov.uk/government/organisations/ministry-of-justice", + "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-24T17:57:58.900Z" + }, + { + "id": "gov-uk-news-and-communications-atom", + "provider": "GOV.UK - News and Communications", + "endpoint": "https://www.gov.uk/search/news-and-communications", + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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": "http-status-error", + "lastErrorMessage": "HTTP 421", + "consecutiveFailures": 1, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "http-status-error", + "message": "HTTP 421", + "at": "2026-04-24T17:57:58.900Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T17:57:58.900Z", + "lastFailureAt": "2026-04-24T17:57:58.900Z", + "lastCheckedAt": "2026-04-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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": 2, + "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" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-24T16:38:34.841Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T16:38:34.841Z", + "lastFailureAt": "2026-04-24T16:38:34.841Z", + "lastCheckedAt": "2026-04-24T16:38:34.841Z" + }, + { + "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": "http-status-error", + "lastErrorMessage": "HTTP 502", + "consecutiveFailures": 1, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "http-status-error", + "message": "HTTP 502", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 2, + "consecutiveBlockedFailures": 2, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 2, + "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" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 3, + "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" + }, + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 2, + "consecutiveBlockedFailures": 2, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "id": "west-yorkshire-police-appeals-rss", + "provider": "West Yorkshire Police - Appeals", + "endpoint": "https://www.westyorkshire.police.uk/news-appeals/appeals", + "kind": "html", + "lane": "incidents", + "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-24T11:47:26.601Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T11:47:26.601Z", + "lastFailureAt": "2026-04-24T11:47:26.601Z", + "lastCheckedAt": "2026-04-24T11:47:26.601Z" + }, + { + "id": "west-yorkshire-police-releases-rss", + "provider": "West Yorkshire Police - RSS Feeds", + "endpoint": "https://www.westyorkshire.police.uk/rss-feeds", + "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-24T11:47:26.601Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T11:47:26.601Z", + "lastFailureAt": "2026-04-24T11:47:26.601Z", + "lastCheckedAt": "2026-04-24T11:47:26.601Z" + }, + { + "id": "echr-uk-grand-chamber-rss", + "provider": "European Court of Human Rights - HUDOC", + "endpoint": "https://hudoc.echr.coe.int/", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "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-24T11:47:26.601Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T11:47:26.601Z", + "lastFailureAt": "2026-04-24T11:47:26.601Z", + "lastCheckedAt": "2026-04-24T11:47:26.601Z" + }, + { + "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 - News", + "endpoint": "https://www.bmi.gv.at/rss_feed/start.aspx", + "kind": "rss", + "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": "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": "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": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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": 0, + "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-24T17:57:58.900Z" + }, + { + "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-24T11:47:26.601Z" + }, + { + "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-24T16:38:34.841Z" + }, + { + "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-24T11:47:26.601Z" + }, + { + "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-24T13:53:37.949Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "id": "rte-ireland-news-rss", + "provider": "RTE News - Ireland (RSS)", + "endpoint": "https://feeds.feedburner.com/ietopstories", + "kind": "rss", + "lane": "context", + "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": "2026-04-27T08:39:19.161Z", + "lastFailureAt": "2026-04-20T08:39:19.161Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "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-24T15:22:10.638Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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": "", + "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": "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-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "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" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T17:57:58.900Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T17:57:58.900Z", + "lastFailureAt": "2026-04-24T17:57:58.900Z", + "lastCheckedAt": "2026-04-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "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" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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-24T11:47:26.601Z" + }, + { + "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-24T13:53:37.949Z" + }, + { + "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": 8, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "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" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 5, + "consecutiveBlockedFailures": 5, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "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" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 5, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "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" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 5, + "consecutiveBlockedFailures": 5, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "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" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "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" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 5, + "consecutiveBlockedFailures": 5, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "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" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 6, + "consecutiveBlockedFailures": 6, + "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-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" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 6, + "consecutiveBlockedFailures": 6, + "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-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" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "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" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 6, + "consecutiveBlockedFailures": 6, + "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-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" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 6, + "consecutiveBlockedFailures": 3, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "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" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 6, + "consecutiveBlockedFailures": 6, + "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-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" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 6, + "consecutiveBlockedFailures": 6, + "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-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" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 6, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "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" + }, + { + "category": "http-status-error", + "message": "HTTP 503", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "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" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 6, + "consecutiveBlockedFailures": 6, + "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-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" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 6, + "consecutiveBlockedFailures": 6, + "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-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" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "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-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" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "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" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 1, + "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-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" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 6, + "consecutiveBlockedFailures": 6, + "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-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" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 6, + "consecutiveBlockedFailures": 6, + "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-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" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 6, + "consecutiveBlockedFailures": 6, + "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-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" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 6, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "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" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 6, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "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" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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-24T11:47:26.601Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 1, + "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-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" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 2, + "consecutiveBlockedFailures": 2, + "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-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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": "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" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 2, + "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": "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" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": "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": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "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-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 7, + "consecutiveBlockedFailures": 7, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "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-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" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": "timeout", + "lastErrorMessage": "This operation was aborted", + "consecutiveFailures": 6, + "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-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" + }, + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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": 5, + "consecutiveBlockedFailures": 2, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "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" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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-24T16:38:34.841Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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": 6, + "consecutiveBlockedFailures": 2, + "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-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" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": "", + "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" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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": 6, + "consecutiveBlockedFailures": 2, + "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-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" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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": "", + "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" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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": 6, + "consecutiveBlockedFailures": 2, + "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-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" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 6, + "consecutiveBlockedFailures": 2, + "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-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" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 6, + "consecutiveBlockedFailures": 2, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "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" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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-24T11:47:26.601Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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": 6, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "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" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 6, + "consecutiveBlockedFailures": 2, + "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-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" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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": 6, + "consecutiveBlockedFailures": 2, + "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-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" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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": 6, + "consecutiveBlockedFailures": 2, + "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-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" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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": 6, + "consecutiveBlockedFailures": 2, + "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-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" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T15:22:10.638Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T11:47:26.601Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "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-24T17:57:58.900Z" + }, + { + "id": "channel-4-news", + "provider": "Channel 4 News", + "endpoint": "https://www.channel4.com/news/feed", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 1, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-22T14:59:55.048Z", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "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-24T17:57:58.900Z" + }, + { + "id": "love-my-dress", + "provider": "Love My Dress", + "endpoint": "https://www.lovemydress.net/feed", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 2, + "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-24T17:57:58.900Z" + }, + { + "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": "the-week-uk", + "provider": "The Week UK", + "endpoint": "https://www.theweek.co.uk/feeds/all", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 7, + "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-24T15:22:10.638Z" + }, + { + "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": "telegraph-world-news", + "provider": "The Telegraph a World News", + "endpoint": "https://www.telegraph.co.uk/world-news/", + "kind": "html", + "lane": "context", + "region": "europe", + "healthScore": 14, + "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-24T17:57:58.900Z" + }, + { + "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": "euronews-europe", + "provider": "Euronews a Europe", + "endpoint": "https://www.euronews.com/news/europe", + "kind": "html", + "lane": "context", + "region": "europe", + "healthScore": 18, + "status": "auto-quarantined", + "reason": "Health score degraded to 24 after repeated failures", + "quarantinedAt": "2026-04-23T03:28:47.210Z", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "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-24T17:57:58.900Z" + } + ] } diff --git a/data/source-remediation-sweep.json b/data/source-remediation-sweep.json index 262478da..640d570a 100644 --- a/data/source-remediation-sweep.json +++ b/data/source-remediation-sweep.json @@ -1,11 +1,87 @@ { "generatedFrom": "live-alerts.json", - "generatedAt": "2026-04-24T18:32:34.861Z", - "totalSourceErrors": 0, - "byCategory": {}, - "byKind": {}, - "machineReadableErrorCount": 0, - "htmlErrorCount": 0, - "top20": [], - "sources": [] + "generatedAt": "2026-04-24T17:57:58.900Z", + "totalSourceErrors": 2, + "byCategory": { + "anti-bot-protection": 1, + "http-status-error": 1 + }, + "byKind": { + "rss": 1, + "html": 1 + }, + "machineReadableErrorCount": 1, + "htmlErrorCount": 1, + "top20": [ + { + "id": "gnet-youth-rss", + "provider": "Global Network on Extremism & Technology (GNET) a Youth (RSS)", + "endpoint": "https://gnet-research.org/tag/youth/feed/", + "finalUrl": "", + "category": "anti-bot-protection", + "statusKind": "", + "message": "Blocked by anti-bot protection", + "status": 200, + "rankScore": 2, + "suggestedAction": "downgrade to non-bot-protected endpoint or quarantine if no public feed", + "replacementCandidate": "", + "sourceKind": "rss", + "sourceLane": "prevention", + "sourceRegion": "", + "isMachineReadable": true + }, + { + "id": "act-campaign", + "provider": "ACT Awareness Campaign", + "endpoint": "https://act.campaign.gov.uk/", + "finalUrl": "", + "category": "http-status-error", + "statusKind": "", + "message": "HTTP 421", + "status": 421, + "rankScore": 1, + "suggestedAction": "manual source review", + "replacementCandidate": "", + "sourceKind": "html", + "sourceLane": "prevention", + "sourceRegion": "", + "isMachineReadable": false + } + ], + "sources": [ + { + "id": "gnet-youth-rss", + "provider": "Global Network on Extremism & Technology (GNET) a Youth (RSS)", + "endpoint": "https://gnet-research.org/tag/youth/feed/", + "finalUrl": "", + "category": "anti-bot-protection", + "statusKind": "", + "message": "Blocked by anti-bot protection", + "status": 200, + "rankScore": 2, + "suggestedAction": "downgrade to non-bot-protected endpoint or quarantine if no public feed", + "replacementCandidate": "", + "sourceKind": "rss", + "sourceLane": "prevention", + "sourceRegion": "", + "isMachineReadable": true + }, + { + "id": "act-campaign", + "provider": "ACT Awareness Campaign", + "endpoint": "https://act.campaign.gov.uk/", + "finalUrl": "", + "category": "http-status-error", + "statusKind": "", + "message": "HTTP 421", + "status": 421, + "rankScore": 1, + "suggestedAction": "manual source review", + "replacementCandidate": "", + "sourceKind": "html", + "sourceLane": "prevention", + "sourceRegion": "", + "isMachineReadable": false + } + ] } diff --git a/data/top-20-source-remediation.json b/data/top-20-source-remediation.json index 33983bcd..7584cf5c 100644 --- a/data/top-20-source-remediation.json +++ b/data/top-20-source-remediation.json @@ -1,6 +1,41 @@ { "generatedFrom": "live-alerts.json", - "generatedAt": "2026-04-24T18:32:34.861Z", - "totalSourceErrors": 0, - "top20": [] + "generatedAt": "2026-04-24T17:57:58.900Z", + "totalSourceErrors": 2, + "top20": [ + { + "id": "gnet-youth-rss", + "provider": "Global Network on Extremism & Technology (GNET) a Youth (RSS)", + "endpoint": "https://gnet-research.org/tag/youth/feed/", + "finalUrl": "", + "category": "anti-bot-protection", + "statusKind": "", + "message": "Blocked by anti-bot protection", + "status": 200, + "rankScore": 2, + "suggestedAction": "downgrade to non-bot-protected endpoint or quarantine if no public feed", + "replacementCandidate": "", + "sourceKind": "rss", + "sourceLane": "prevention", + "sourceRegion": "", + "isMachineReadable": true + }, + { + "id": "act-campaign", + "provider": "ACT Awareness Campaign", + "endpoint": "https://act.campaign.gov.uk/", + "finalUrl": "", + "category": "http-status-error", + "statusKind": "", + "message": "HTTP 421", + "status": 421, + "rankScore": 1, + "suggestedAction": "manual source review", + "replacementCandidate": "", + "sourceKind": "html", + "sourceLane": "prevention", + "sourceRegion": "", + "isMachineReadable": false + } + ] } diff --git a/live-alerts.json b/live-alerts.json index 0d89b6e2..c4d7b9f5 100644 --- a/live-alerts.json +++ b/live-alerts.json @@ -1,7 +1,7 @@ { - "generatedAt": "2026-04-24T18:32:34.861Z", - "sourceCount": 4, - "alertCount": 170, + "generatedAt": "2026-04-24T17:57:58.900Z", + "sourceCount": 176, + "alertCount": 188, "alerts": [ { "id": "met-police-latest-news-0", @@ -4194,6 +4194,57 @@ "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", @@ -4254,6 +4305,67 @@ "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", @@ -4590,632 +4702,724 @@ "isDuplicateOf": "fusion-7b5894ef0cb45196" }, { - "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", + "id": "unoct-news-1", + "fusedIncidentId": "fusion-5f37d6a9e3e9740c", + "title": "MIDDLE EAST LIVE 24 April: Israel-Lebanon Ceasefire Extended As Humanitarian Concerns Persist", + "location": "United States", + "region": "international", + "lane": "oversight", "severity": "moderate", "status": "Update", - "actor": "ProtectUK (NPSA) a Protective Security Guidance", - "subject": "ProtectUK (NPSA) a Protective Security Guidance", - "happenedWhen": "09 Apr 2026, 13:00", + "actor": "UN Office of Counter-Terrorism (UNOCT) - News", + "subject": "UN Office of Counter-Terrorism (UNOCT) - News", + "happenedWhen": "24 Apr 2026, 13:46", "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.", + "summary": "The United States has announced that the Israel-Lebanon ceasefire will be extended by three weeks following talks in Washington, offering a potential pause in hostilities. Meanwhile, humanitarian concerns persist across the region, including in Gaza and Iran. ", + "aiSummary": "UN Office of Counter-Terrorism (UNOCT) - 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 United States has announced that the Israel-Lebanon ceasefire will be extended by three weeks following talks in Washington, offering a potential pause in hostilities. Meanwhile, humanitarian concerns persist across the region, including in Gaza and Iran. Stay with us for live updates.", "peopleInvolved": [], - "source": "ProtectUK (NPSA) a Protective Security Guidance", - "sourceUrl": "https://www.protectuk.police.uk/news-views/nactso-exhibiting-food-and-drink-expo-nec-birmingham", + "source": "UN Office of Counter-Terrorism (UNOCT) - News", + "sourceUrl": "https://news.un.org/feed/view/en/story/2026/04/1167375", "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, + "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": "24 Apr 2026, 13:46", + "lat": 39.8283, + "lng": -98.5795, "major": false, - "publishedAt": "2026-04-09T12:00:00.000Z", + "publishedAt": "2026-04-24T12:46:55.000Z", "keywordHits": [], "terrorismHits": [], - "eventType": "prevention_update", + "eventType": "oversight_update", "geoPrecision": "region", "isOfficial": true, "priorityScore": 4.1, "freshnessBucket": 3, - "freshUntil": "2026-04-17T12:00:00.000Z", + "freshUntil": "2026-05-02T12:46:55.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" - } - ], - "corroborationCount": 1, - "isDuplicateOf": "fusion-1385f8fb52e1752f" + "corroboratingSources": [], + "corroborationCount": 0, + "isDuplicateOf": null }, { - "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", + "id": "unoct-news-2", + "fusedIncidentId": "fusion-94f052938e7de01c", + "title": "Two-Thirds Of Global Hunger Concentrated In 10 Conflict-Hit Countries", + "location": "Afghanistan", + "region": "international", + "lane": "oversight", "severity": "moderate", "status": "Update", - "actor": "ProtectUK (NPSA) a Protective Security Guidance", - "subject": "ProtectUK (NPSA) a Protective Security Guidance", - "happenedWhen": "09 Apr 2026, 13:00", + "actor": "UN Office of Counter-Terrorism (UNOCT) - News", + "subject": "UN Office of Counter-Terrorism (UNOCT) - News", + "happenedWhen": "24 Apr 2026, 11:49", "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.", + "summary": "A growing share of global hunger is becoming entrenched in a small group of conflict-hit countries, with two-thirds of people facing acute food insecurity concentrated in just 10 nations, a major international report backed by UN agencies warns. The 2026 Globa", + "aiSummary": "UN Office of Counter-Terrorism (UNOCT) - 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": "A growing share of global hunger is becoming entrenched in a small group of conflict-hit countries, with two-thirds of people facing acute food insecurity concentrated in just 10 nations, a major international report backed by UN agencies warns. The 2026 Global Report on Food Crises, released on Friday by an alliance of UN agencies, the European Union (EU) and partners, finds that 266 million people across 47 countries experienced high levels of acute food insecurity in 2025 – nearly a quarter of the population analysed and almost double the share recorded in 2016. The report paints a stark picture: hunger is no longer a series of short-term emergencies, but a persistent and increasingly concentrated global challenge. “Acute food insecurity today is not just widespread – it is also persistent and recurring,” said UN Food and Agriculture Organization (FAO) Director-General Qu Dongyu, warning that the crisis has become structural rather than temporary. Conflict remains the primary driver, accounting for more than half of all people facing severe hunger. Ten countries – Afghanistan, Bangladesh, the Democratic Republic of the Congo, Myanmar, Nigeria, Pakistan, South Sudan, Sudan, Syrian Arab Republic and Yemen – accounted for two-thirds of all people facing high levels of acute hunger. At the most extreme end, famine was confirmed in 2025 in Gaza and parts of Sudan – the first time since the report began that two separate famines have been recorded in a single year. “This report is a call to action,” UN Secretary-General António Guterres said in the foreword, “to summon the political will to rapidly scale up investment in lifesaving aid, and work to end the conflicts that inflict so much suffering on so many.” The report also highlights a sharp rise in the severity of hunge", "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", + "source": "UN Office of Counter-Terrorism (UNOCT) - News", + "sourceUrl": "https://news.un.org/feed/view/en/story/2026/04/1167374", "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, + "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": "24 Apr 2026, 11:49", + "lat": 33.9391, + "lng": 67.71, "major": false, - "publishedAt": "2026-04-09T12:00:00.000Z", + "publishedAt": "2026-04-24T10:49:55.000Z", "keywordHits": [], "terrorismHits": [], - "eventType": "prevention_update", + "eventType": "oversight_update", "geoPrecision": "region", "isOfficial": true, "priorityScore": 4.1, "freshnessBucket": 3, - "freshUntil": "2026-04-17T12:00:00.000Z", + "freshUntil": "2026-05-02T10:49:55.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", + "fusedIncidentId": "fusion-94f052938e7de01c", + "source": "UN Office of Counter-Terrorism (UNOCT) - News", + "sourceUrl": "https://news.un.org/feed/view/en/story/2026/04/1167374", "sourceTier": "context", "reliabilityProfile": "official_context", - "publishedAt": "2026-04-09T12:00:00.000Z", + "publishedAt": "2026-04-24T10:49:55.000Z", "confidence": "Verified official source update" } ], "corroborationCount": 1, - "isDuplicateOf": "fusion-fb955c89b4e34646" + "isDuplicateOf": "fusion-94f052938e7de01c" }, { - "id": "belfast-live-0", - "fusedIncidentId": "fusion-e1b4d9a62c587fb2", - "title": "Arlene Foster Tells Peers She Received Online Abuse About Father’S Shooting", + "id": "uk-ncsc-news-3", + "fusedIncidentId": "fusion-4e6cbc2c1c44341e", + "title": "NCSC: Leave Passwords In The Past - Passkeys Are The Future", "location": "United Kingdom", "region": "uk", - "lane": "context", + "lane": "oversight", "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": "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.", "peopleInvolved": [], - "source": "Belfast Live", - "sourceUrl": "https://www.belfastlive.co.uk/news/northern-ireland/arlene-foster-tells-peers-received-33786021", + "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": "general_media", + "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": "16 Apr 2026, 20:58", + "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, "major": false, - "publishedAt": "2026-04-16T19:58:35.000Z", - "keywordHits": [ - "terrorism", - "shooting" - ], - "terrorismHits": [ - "terrorism" - ], - "eventType": "context_update", + "publishedAt": "2026-04-23T12:00:00.000Z", + "keywordHits": [], + "terrorismHits": [], + "eventType": "oversight_update", "geoPrecision": "country", - "isOfficial": false, - "priorityScore": 4.05, + "isOfficial": true, + "priorityScore": 4.1, "freshnessBucket": 3, - "freshUntil": "2026-04-20T19:58:35.000Z", + "freshUntil": "2026-05-01T12:00: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", + "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", "sourceTier": "context", - "reliabilityProfile": "general_media", - "publishedAt": "2026-04-16T19:58:35.000Z", - "confidence": "Secondary source signal" + "reliabilityProfile": "official_context", + "publishedAt": "2026-04-23T12:00:00.000Z", + "confidence": "Verified official source update" } ], "corroborationCount": 1, - "isDuplicateOf": "fusion-e1b4d9a62c587fb2" + "isDuplicateOf": "fusion-4e6cbc2c1c44341e" }, { - "id": "gnet-research-0", - "fusedIncidentId": "fusion-232b0258c377d761", - "title": "Ecofascist And Nihilistic Extremism: Taking Stock Of Evolving Grievances In Targeted Violence Manifestos", - "location": "United Kingdom", + "id": "uk-ncsc-news-4", + "fusedIncidentId": "fusion-dc71ed4dd376679b", + "title": "International Cyber Agencies Share Fresh Advice To Defend Against China-Linked Covert Networks", + "location": "China", "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": "24 Apr 2026, 11:15", - "confidence": "Research or analytical source", - "confidenceScore": 0.7, - "summary": "When extreme right lone actor terrorists expressed environmental concerns in the manifestos related to attacks in Christchurch (2019), El Paso (2019), and Buffalo (2022), it rightly sparked a lot of attention. The media landscape, from Vice to The Guardian, ex", - "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": "When extreme right lone actor terrorists expressed environmental concerns in the manifestos related to attacks in Christchurch (2019), El Paso (2019), and Buffalo (2022), it rightly sparked a lot of attention. The media landscape, from Vice to The Guardian, expressed interest in this phenomenon, so-called ecofascism. Within academia, the phenomenon sparked debates: was this really the perpetrators’ earnest opinion or […]", + "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.", "peopleInvolved": [], - "source": "Global Network on Extremism & Technology (GNET) a Main Feed", - "sourceUrl": "https://gnet-research.org/2026/04/24/ecofascist-and-nihilistic-extremism-taking-stock-of-evolving-grievances-in-targeted-violence-manifestos/", - "sourceTier": "research", - "reliabilityProfile": "specialist_research", + "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", "incidentTrack": "", - "laneReason": "Prevention, radicalisation, or analytical context source.", - "queueReason": "Prevention, radicalisation, or analytical context source.", - "queueBucket": "prevention", - "time": "24 Apr 2026, 11:15", - "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": "23 Apr 2026, 13:00", + "lat": 35.8617, + "lng": 104.1954, "major": false, - "publishedAt": "2026-04-24T10:15:59.000Z", - "keywordHits": [ - "attacks" - ], - "terrorismHits": [ - "extremism", - "lone actor" - ], - "eventType": "prevention_update", - "geoPrecision": "country", - "isOfficial": false, - "priorityScore": 3.8, + "publishedAt": "2026-04-23T12:00:00.000Z", + "keywordHits": [], + "terrorismHits": [], + "eventType": "oversight_update", + "geoPrecision": "region", + "isOfficial": true, + "priorityScore": 4.1, "freshnessBucket": 3, - "freshUntil": "2026-05-02T10:15:59.000Z", + "freshUntil": "2026-05-01T12:00:00.000Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [ { - "fusedIncidentId": "fusion-232b0258c377d761", - "source": "Global Network on Extremism & Technology (GNET) a Main Feed", - "sourceUrl": "https://gnet-research.org/2026/04/24/ecofascist-and-nihilistic-extremism-taking-stock-of-evolving-grievances-in-targeted-violence-manifestos/", - "sourceTier": "research", - "reliabilityProfile": "specialist_research", - "publishedAt": "2026-04-24T10:15:59.000Z", - "confidence": "Research or analytical source" + "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", + "sourceTier": "context", + "reliabilityProfile": "official_context", + "publishedAt": "2026-04-23T12:00:00.000Z", + "confidence": "Verified official source update" } ], "corroborationCount": 1, - "isDuplicateOf": "fusion-232b0258c377d761" + "isDuplicateOf": "fusion-dc71ed4dd376679b" }, { - "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", + "id": "uk-ncsc-news-2", + "fusedIncidentId": "fusion-59e5a140cc438a1b", + "title": "Defending Against China-Nexus Covert Networks Of Compromised Devices", + "location": "China", + "region": "uk", + "lane": "oversight", "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.", + "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", "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/", - "sourceTier": "research", - "reliabilityProfile": "specialist_research", + "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", "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, + "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, "major": false, - "publishedAt": "2026-04-23T15:47:00.000Z", - "keywordHits": [ - "terrorism" - ], - "terrorismHits": [ - "terrorism" - ], - "eventType": "context_update", - "geoPrecision": "city", - "isOfficial": false, - "priorityScore": 3.8, + "publishedAt": "2026-04-23T12:00:00.000Z", + "keywordHits": [], + "terrorismHits": [], + "eventType": "oversight_update", + "geoPrecision": "region", + "isOfficial": true, + "priorityScore": 4.1, "freshnessBucket": 3, - "freshUntil": "2026-04-27T15:47:00.000Z", + "freshUntil": "2026-05-01T12:00:00.000Z", "needsHumanReview": false, "isTerrorRelevant": true, - "corroboratingSources": [], - "corroborationCount": 0, - "isDuplicateOf": null + "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", + "sourceTier": "context", + "reliabilityProfile": "official_context", + "publishedAt": "2026-04-23T12:00:00.000Z", + "confidence": "Verified official source update" + } + ], + "corroborationCount": 1, + "isDuplicateOf": "fusion-59e5a140cc438a1b" }, { - "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", + "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": "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.", + "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.", "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", - "sourceTier": "research", - "reliabilityProfile": "specialist_research", + "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", "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, + "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, "major": false, - "publishedAt": "2026-04-23T09:07:31.000Z", - "keywordHits": [ - "terror" - ], - "terrorismHits": [ - "terror" - ], - "eventType": "context_update", - "geoPrecision": "region", - "isOfficial": false, - "priorityScore": 3.8, + "publishedAt": "2026-04-23T12:00:00.000Z", + "keywordHits": [], + "terrorismHits": [], + "eventType": "oversight_update", + "geoPrecision": "country", + "isOfficial": true, + "priorityScore": 4.1, "freshnessBucket": 3, - "freshUntil": "2026-04-27T09:07:31.000Z", + "freshUntil": "2026-05-01T12:00:00.000Z", "needsHumanReview": false, "isTerrorRelevant": true, - "corroboratingSources": [], - "corroborationCount": 0, - "isDuplicateOf": null + "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" }, { - "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", + "id": "uk-ncsc-news-1", + "fusedIncidentId": "fusion-9908f067ac3ed047", + "title": "Defending Against China-Nexus Covert Networks Of Compromised Devices", + "location": "China", + "region": "uk", + "lane": "oversight", "severity": "moderate", "status": "Update", - "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", + "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", "peopleInvolved": [], - "source": "RTE News - Ireland (RSS)", - "sourceUrl": "https://www.irishexaminer.com/news/arid-41831747.html", - "sourceTier": "research", - "reliabilityProfile": "specialist_research", + "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", "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, - "major": false, - "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-04-27T05:50:00.000Z", - "needsHumanReview": false, - "isTerrorRelevant": true, - "corroboratingSources": [ - { - "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-27b73e7a334b0d33" - }, - { - "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": "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": "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": "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, + "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, "major": false, - "publishedAt": "2026-04-22T18:01:02.000Z", - "keywordHits": [ - "terrorism" - ], - "terrorismHits": [ - "terrorism" - ], - "eventType": "context_update", + "publishedAt": "2026-04-23T12:00:00.000Z", + "keywordHits": [], + "terrorismHits": [], + "eventType": "oversight_update", "geoPrecision": "region", - "isOfficial": false, - "priorityScore": 3.8, + "isOfficial": true, + "priorityScore": 4.1, "freshnessBucket": 3, - "freshUntil": "2026-04-26T18:01:02.000Z", + "freshUntil": "2026-05-01T12:00:00.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" + "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-97cd05f1987905f1" + "isDuplicateOf": "fusion-9908f067ac3ed047" }, { - "id": "telegraph-world-news-0", - "fusedIncidentId": "fusion-3283730807f65722", - "title": "British Man Jailed For 10 Years Over £71m Wine Fraud", + "id": "uk-ncsc-news-2", + "fusedIncidentId": "fusion-cf1f4d283a0caa5e", + "title": "NCSC: Leave Passwords In The Past - Passkeys Are The Future", "location": "United Kingdom", - "region": "europe", - "lane": "context", + "region": "uk", + "lane": "oversight", "severity": "moderate", "status": "Update", - "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.", + "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.", "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/", - "sourceTier": "research", - "reliabilityProfile": "specialist_research", + "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", "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", + "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, "major": false, - "publishedAt": "2026-04-22T12:34:00.000Z", - "keywordHits": [ - "terrorism" - ], - "terrorismHits": [ - "terrorism" - ], - "eventType": "context_update", + "publishedAt": "2026-04-23T12:00:00.000Z", + "keywordHits": [], + "terrorismHits": [], + "eventType": "oversight_update", "geoPrecision": "country", - "isOfficial": false, - "priorityScore": 3.8, + "isOfficial": true, + "priorityScore": 4.1, "freshnessBucket": 3, - "freshUntil": "2026-04-26T12:34:00.000Z", + "freshUntil": "2026-05-01T12:00:00.000Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [ { - "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" + "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" } ], "corroborationCount": 1, - "isDuplicateOf": "fusion-3283730807f65722" + "isDuplicateOf": "fusion-cf1f4d283a0caa5e" }, { - "id": "sky-news-uk-rss-0", - "fusedIncidentId": "fusion-a24642e6d4fa4d91", - "title": "Anti-Islam Influencer Banned From Entering UK", - "location": "London, UK", + "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": "context", + "lane": "oversight", "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", - "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.", + "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.", "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", - "sourceTier": "research", - "reliabilityProfile": "specialist_research", + "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", "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, + "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, "major": false, - "publishedAt": "2026-04-20T13:51:00.000Z", - "keywordHits": [ - "extremist" - ], - "terrorismHits": [ - "extremist" - ], - "eventType": "context_update", + "publishedAt": "2026-04-23T12:00:00.000Z", + "keywordHits": [], + "terrorismHits": [], + "eventType": "oversight_update", "geoPrecision": "region", - "isOfficial": false, - "priorityScore": 3.8, + "isOfficial": true, + "priorityScore": 4.1, "freshnessBucket": 3, - "freshUntil": "2026-04-24T13:51:00.000Z", + "freshUntil": "2026-05-01T12:00:00.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", - "sourceTier": "research", - "reliabilityProfile": "specialist_research", - "publishedAt": "2026-04-20T13:51:00.000Z", - "confidence": "Research or analytical source" + "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" } ], "corroborationCount": 1, - "isDuplicateOf": "fusion-a24642e6d4fa4d91" + "isDuplicateOf": "fusion-773b31dc72eb259a" }, { - "id": "guardian-uk-0", - "fusedIncidentId": "fusion-4f87f7a00b1019ba", - "title": "Kensington Gardens Reopens After Police Deem Suspicious Items Non-Hazardous", - "location": "London, UK", + "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": "context", + "lane": "prevention", "severity": "moderate", "status": "Update", - "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": "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...", + "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": "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", + "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" + } + ], + "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", + "geoPrecision": "region", + "isOfficial": true, + "priorityScore": 4.1, + "freshnessBucket": 3, + "freshUntil": "2026-04-17T12:00:00.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" + } + ], + "corroborationCount": 1, + "isDuplicateOf": "fusion-fb955c89b4e34646" + }, + { + "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": "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...\"", + "peopleInvolved": [], + "source": "Belfast Live", + "sourceUrl": "https://www.belfastlive.co.uk/news/northern-ireland/arlene-foster-tells-peers-received-33786021", + "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": "18 Apr 2026, 20:33", - "lat": 51.5074, - "lng": -0.1278, + "time": "16 Apr 2026, 20:58", + "lat": 54.5, + "lng": -2.5, "major": false, - "publishedAt": "2026-04-18T19:33:02.000Z", + "publishedAt": "2026-04-16T19:58:35.000Z", "keywordHits": [ - "terrorism" + "terrorism", + "shooting" ], "terrorismHits": [ "terrorism" ], "eventType": "context_update", - "geoPrecision": "region", + "geoPrecision": "country", + "isOfficial": false, + "priorityScore": 4.05, + "freshnessBucket": 3, + "freshUntil": "2026-04-20T19:58:35.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" + } + ], + "corroborationCount": 1, + "isDuplicateOf": "fusion-e1b4d9a62c587fb2" + }, + { + "id": "gnet-research-0", + "fusedIncidentId": "fusion-232b0258c377d761", + "title": "Ecofascist And Nihilistic Extremism: Taking Stock Of Evolving Grievances In Targeted Violence Manifestos", + "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": "24 Apr 2026, 11:15", + "confidence": "Research or analytical source", + "confidenceScore": 0.7, + "summary": "When extreme right lone actor terrorists expressed environmental concerns in the manifestos related to attacks in Christchurch (2019), El Paso (2019), and Buffalo (2022), it rightly sparked a lot of attention. The media landscape, from Vice to The Guardian, ex", + "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": "When extreme right lone actor terrorists expressed environmental concerns in the manifestos related to attacks in Christchurch (2019), El Paso (2019), and Buffalo (2022), it rightly sparked a lot of attention. The media landscape, from Vice to The Guardian, expressed interest in this phenomenon, so-called ecofascism. Within academia, the phenomenon sparked debates: was this really the perpetrators’ earnest opinion or […]", + "peopleInvolved": [], + "source": "Global Network on Extremism & Technology (GNET) a Main Feed", + "sourceUrl": "https://gnet-research.org/2026/04/24/ecofascist-and-nihilistic-extremism-taking-stock-of-evolving-grievances-in-targeted-violence-manifestos/", + "sourceTier": "research", + "reliabilityProfile": "specialist_research", + "incidentTrack": "", + "laneReason": "Prevention, radicalisation, or analytical context source.", + "queueReason": "Prevention, radicalisation, or analytical context source.", + "queueBucket": "prevention", + "time": "24 Apr 2026, 11:15", + "lat": 54.5, + "lng": -2.5, + "major": false, + "publishedAt": "2026-04-24T10:15:59.000Z", + "keywordHits": [ + "attacks" + ], + "terrorismHits": [ + "extremism", + "lone actor" + ], + "eventType": "prevention_update", + "geoPrecision": "country", "isOfficial": false, "priorityScore": 3.8, "freshnessBucket": 3, - "freshUntil": "2026-04-22T19:33:02.000Z", + "freshUntil": "2026-05-02T10:15:59.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", + "fusedIncidentId": "fusion-232b0258c377d761", + "source": "Global Network on Extremism & Technology (GNET) a Main Feed", + "sourceUrl": "https://gnet-research.org/2026/04/24/ecofascist-and-nihilistic-extremism-taking-stock-of-evolving-grievances-in-targeted-violence-manifestos/", "sourceTier": "research", "reliabilityProfile": "specialist_research", - "publishedAt": "2026-04-18T19:33:02.000Z", + "publishedAt": "2026-04-24T10:15:59.000Z", "confidence": "Research or analytical source" } ], "corroborationCount": 1, - "isDuplicateOf": "fusion-4f87f7a00b1019ba" + "isDuplicateOf": "fusion-232b0258c377d761" }, { "id": "telegraph-world-news-0", - "fusedIncidentId": "fusion-73f23a153b667853", - "title": "Lebanon Peace Deal In Full – And How It Could Unravel", + "fusedIncidentId": "fusion-ed5670f837bf5584", + "title": "Lebanon Says Killing Of Journalist Amal Khalil Was An Israeli War Crime", "location": "Jerusalem", "region": "europe", "lane": "context", @@ -5223,26 +5427,26 @@ "status": "Update", "actor": "The Telegraph a World News", "subject": "The Telegraph a World News", - "happenedWhen": "17 Apr 2026, 15:43", + "happenedWhen": "23 Apr 2026, 16:47", "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", + "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": "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.", + "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": "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/", + "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": "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", + "time": "23 Apr 2026, 16:47", "lat": 31.7683, "lng": 35.2137, "major": false, - "publishedAt": "2026-04-17T14:43:00.000Z", + "publishedAt": "2026-04-23T15:47:00.000Z", "keywordHits": [ "terrorism" ], @@ -5254,66 +5458,56 @@ "isOfficial": false, "priorityScore": 3.8, "freshnessBucket": 3, - "freshUntil": "2026-04-21T14:43:00.000Z", + "freshUntil": "2026-04-27T15:47:00.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": "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": "The Guardian a UK News", - "subject": "The Guardian a UK News", - "happenedWhen": "17 Apr 2026, 13:13", + "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": "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": "‘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...", + "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": "The Guardian a UK News", - "sourceUrl": "https://www.theguardian.com/uk-news/2026/apr/17/security-incident-near-israel-embassy-london-drones", + "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": "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": "23 Apr 2026, 10:07", + "lat": 31.9522, + "lng": 35.2332, "major": false, - "publishedAt": "2026-04-17T12:13:47.000Z", + "publishedAt": "2026-04-23T09:07:31.000Z", "keywordHits": [ - "terrorism" + "terror" ], "terrorismHits": [ - "terrorism" + "terror" ], "eventType": "context_update", "geoPrecision": "region", "isOfficial": false, "priorityScore": 3.8, "freshnessBucket": 3, - "freshUntil": "2026-04-21T12:13:47.000Z", + "freshUntil": "2026-04-27T09:07:31.000Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [], @@ -5321,154 +5515,154 @@ "isDuplicateOf": null }, { - "id": "telegraph-world-news-0", - "fusedIncidentId": "fusion-6c18e7f7e5a9f377", - "title": "Israel And Lebanon Agree To Ceasefire", - "location": "Jerusalem", + "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": "The Telegraph a World News", - "subject": "The Telegraph a World News", - "happenedWhen": "16 Apr 2026, 20:35", + "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": "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.", + "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": "The Telegraph a World News", - "sourceUrl": "https://www.telegraph.co.uk/world-news/2026/04/16/israel-expands-lebanon-invasion-to-mount-hermon/", + "source": "RTE News - Ireland (RSS)", + "sourceUrl": "https://www.irishexaminer.com/news/arid-41831747.html", "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:35", - "lat": 31.7683, - "lng": 35.2137, + "time": "23 Apr 2026, 06:50", + "lat": 53.1424, + "lng": -7.6921, "major": false, - "publishedAt": "2026-04-16T19:35:00.000Z", + "publishedAt": "2026-04-23T05:50:00.000Z", "keywordHits": [ - "terrorism" + "terror" ], "terrorismHits": [ - "terrorism" + "terror" ], "eventType": "context_update", - "geoPrecision": "city", + "geoPrecision": "region", "isOfficial": false, "priorityScore": 3.8, "freshnessBucket": 3, - "freshUntil": "2026-04-20T19:35:00.000Z", + "freshUntil": "2026-04-27T05:50:00.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/", + "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-16T19:35:00.000Z", + "publishedAt": "2026-04-23T05:50:00.000Z", "confidence": "Research or analytical source" } ], "corroborationCount": 1, - "isDuplicateOf": "fusion-6c18e7f7e5a9f377" + "isDuplicateOf": "fusion-27b73e7a334b0d33" }, { - "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", + "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": "BBC News - London RSS", - "subject": "BBC News - London RSS", - "happenedWhen": "15 Apr 2026, 17:09", + "actor": "Euronews a Europe", + "subject": "Euronews a Europe", + "happenedWhen": "22 Apr 2026, 19:01", "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.", + "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": "BBC News - London RSS", - "sourceUrl": "https://www.bbc.com/news/articles/c1mkk4plgd4o?at_medium=RSS&at_campaign=rss", + "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": "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, + "time": "22 Apr 2026, 19:01", + "lat": 47.1625, + "lng": 19.5033, "major": false, - "publishedAt": "2026-04-15T16:09:32.000Z", + "publishedAt": "2026-04-22T18:01:02.000Z", "keywordHits": [ - "arrested" + "terrorism" ], "terrorismHits": [ - "terrorist" + "terrorism" ], "eventType": "context_update", - "geoPrecision": "country", + "geoPrecision": "region", "isOfficial": false, "priorityScore": 3.8, "freshnessBucket": 3, - "freshUntil": "2026-04-19T16:09:32.000Z", + "freshUntil": "2026-04-26T18:01:02.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", + "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-15T16:09:32.000Z", + "publishedAt": "2026-04-22T18:01:02.000Z", "confidence": "Research or analytical source" } ], "corroborationCount": 1, - "isDuplicateOf": "fusion-598a019e6d315ccf" + "isDuplicateOf": "fusion-97cd05f1987905f1" }, { - "id": "aljazeera-news-rss-0", - "fusedIncidentId": "fusion-7f5a1654ff85bd55", - "title": "French Court Rules Cement Giant Lafarge Guilty Of Funding Syrian Terrorism", - "location": "Europe", - "region": "international", + "id": "telegraph-world-news-0", + "fusedIncidentId": "fusion-3283730807f65722", + "title": "British Man Jailed For 10 Years Over £71m Wine Fraud", + "location": "United Kingdom", + "region": "europe", "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", + "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": "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.", + "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": "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", + "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": "13 Apr 2026, 19:52", - "lat": 54, - "lng": 15, + "time": "22 Apr 2026, 13:34", + "lat": 54.5, + "lng": -2.5, "major": false, - "publishedAt": "2026-04-13T18:52:20.000Z", + "publishedAt": "2026-04-22T12:34:00.000Z", "keywordHits": [ "terrorism" ], @@ -5480,2517 +5674,2545 @@ "isOfficial": false, "priorityScore": 3.8, "freshnessBucket": 3, - "freshUntil": "2026-04-17T18:52:20.000Z", + "freshUntil": "2026-04-26T12:34:00.000Z", "needsHumanReview": false, "isTerrorRelevant": true, - "corroboratingSources": [], - "corroborationCount": 0, - "isDuplicateOf": null + "corroboratingSources": [ + { + "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-3283730807f65722" }, { - "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", + "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": "13 Apr 2026, 17:12", + "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": "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.", + "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/13/what-its-like-to-be-hunted-by-drones-in-ukraine/", + "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": "13 Apr 2026, 17:12", - "lat": 50.4501, - "lng": 30.5234, + "time": "20 Apr 2026, 14:51", + "lat": 51.5074, + "lng": -0.1278, "major": false, - "publishedAt": "2026-04-13T16:12:00.000Z", + "publishedAt": "2026-04-20T13:51:00.000Z", "keywordHits": [ - "terror" + "extremist" ], "terrorismHits": [ - "terror" + "extremist" ], "eventType": "context_update", "geoPrecision": "region", "isOfficial": false, "priorityScore": 3.8, "freshnessBucket": 3, - "freshUntil": "2026-04-17T16:12:00.000Z", + "freshUntil": "2026-04-24T13:51:00.000Z", "needsHumanReview": false, "isTerrorRelevant": true, - "corroboratingSources": [], - "corroborationCount": 0, - "isDuplicateOf": null + "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": "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", + "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": "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": "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.", + "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/economy/2026/4/13/what-do-we-know-about-sea-mines-in-and-around-the-strait-of-hormuz?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": "13 Apr 2026, 16:12", - "lat": 54, - "lng": 15, + "time": "18 Apr 2026, 20:33", + "lat": 51.5074, + "lng": -0.1278, "major": false, - "publishedAt": "2026-04-13T15:12:25.000Z", + "publishedAt": "2026-04-18T19:33:02.000Z", "keywordHits": [ - "terror" + "terrorism" ], "terrorismHits": [ - "terror" + "terrorism" ], "eventType": "context_update", - "geoPrecision": "country", + "geoPrecision": "region", "isOfficial": false, "priorityScore": 3.8, "freshnessBucket": 3, - "freshUntil": "2026-04-17T15:12:25.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": "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", + "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", "region": "europe", "lane": "context", "severity": "moderate", "status": "Update", "actor": "Euronews a Europe", "subject": "Euronews a Europe", - "happenedWhen": "11 Apr 2026, 21:18", + "happenedWhen": "17 Apr 2026, 16:20", "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", + "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": "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", + "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", "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", + "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", "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, + "time": "17 Apr 2026, 16:20", + "lat": 41.3851, + "lng": 2.1734, "major": false, - "publishedAt": "2026-04-11T20:18:47.000Z", + "publishedAt": "2026-04-17T15:20:47.000Z", "keywordHits": [ - "extremist" + "attack" ], "terrorismHits": [ - "extremist" + "extremism" ], "eventType": "context_update", "geoPrecision": "region", "isOfficial": false, "priorityScore": 3.8, "freshnessBucket": 3, - "freshUntil": "2026-04-15T20:18:47.000Z", + "freshUntil": "2026-04-21T15:20:47.000Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [ { - "fusedIncidentId": "fusion-6547a22c4ea82ed1", + "fusedIncidentId": "fusion-f9ded5cf64e9e8df", "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", + "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-11T20:18:47.000Z", + "publishedAt": "2026-04-17T15:20:47.000Z", "confidence": "Research or analytical source" } ], "corroborationCount": 1, - "isDuplicateOf": "fusion-6547a22c4ea82ed1" + "isDuplicateOf": "fusion-f9ded5cf64e9e8df" }, { - "id": "the-week-uk-0", - "fusedIncidentId": "fusion-7d73e6f4a234ac55", - "title": "764: The Online Extremist Group Targeting Kids Nationwide", - "location": "United Kingdom", - "region": "uk", + "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": "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", + "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": "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": "The Week UK", - "sourceUrl": "https://theweek.com/crime/764-online-extremist-group-targeting-kids", - "sourceTier": "corroboration", - "reliabilityProfile": "general_media", + "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": "16 Apr 2026, 17:28", - "lat": 54.5, - "lng": -2.5, + "time": "17 Apr 2026, 15:43", + "lat": 31.7683, + "lng": 35.2137, "major": false, - "publishedAt": "2026-04-16T16:28:41.000Z", + "publishedAt": "2026-04-17T14:43:00.000Z", "keywordHits": [ - "extremist" + "terrorism" ], "terrorismHits": [ - "extremist" + "terrorism" ], "eventType": "context_update", - "geoPrecision": "country", + "geoPrecision": "city", "isOfficial": false, - "priorityScore": 3.45, + "priorityScore": 3.8, "freshnessBucket": 3, - "freshUntil": "2026-04-20T16:28:41.000Z", + "freshUntil": "2026-04-21T14:43:00.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" + "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-7d73e6f4a234ac55" + "isDuplicateOf": "fusion-73f23a153b667853" }, { - "id": "deadline-news-0", - "fusedIncidentId": "fusion-8d93646fd8c366ac", - "title": "Swinney Urges Nation To Unite Against “Extremist” Reform", - "location": "Scotland, UK", - "region": "uk", + "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", + "region": "europe", "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 .", + "actor": "Euronews a Europe", + "subject": "Euronews a Europe", + "happenedWhen": "17 Apr 2026, 14:31", + "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", + "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", "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", + "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", + "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, 11:04", - "lat": 56.4907, - "lng": -4.2026, + "time": "17 Apr 2026, 14:31", + "lat": 42.6977, + "lng": 23.3219, "major": false, - "publishedAt": "2026-04-13T10:04:59.000Z", + "publishedAt": "2026-04-17T13:31:59.000Z", "keywordHits": [ - "extremist" + "terror" ], "terrorismHits": [ - "extremist" + "terror" ], "eventType": "context_update", "geoPrecision": "region", "isOfficial": false, - "priorityScore": 3.45, + "priorityScore": 3.8, "freshnessBucket": 3, - "freshUntil": "2026-04-17T10:04:59.000Z", + "freshUntil": "2026-04-21T13:31: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" + "corroboratingSources": [], + "corroborationCount": 0, + "isDuplicateOf": null }, { - "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": "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-22T20:15:00.000Z", - "keywordHits": [ - "terrorism", - "attack", - "attacks", - "arrest", - "arrested" + "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": "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...", + "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", + "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, + "major": false, + "publishedAt": "2026-04-17T12:13:47.000Z", + "keywordHits": [ + "terrorism" ], "terrorismHits": [ - "terrorism", - "counter terrorism" + "terrorism" ], - "eventType": "arrest", + "eventType": "context_update", "geoPrecision": "region", - "isOfficial": true, - "priorityScore": 12.85, - "freshnessBucket": 2, - "freshUntil": "2026-05-06T20:15:00.000Z", + "isOfficial": false, + "priorityScore": 3.8, + "freshnessBucket": 3, + "freshUntil": "2026-04-21T12:13:47.000Z", "needsHumanReview": false, "isTerrorRelevant": true, - "corroboratingSources": [ - { - "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": 2, - "isDuplicateOf": "fusion-eb23139c042e3c14" + "corroboratingSources": [], + "corroborationCount": 0, + "isDuplicateOf": null }, { - "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.", + "id": "telegraph-world-news-0", + "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": "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.", "peopleInvolved": [], - "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, + "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", + "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, "major": false, - "publishedAt": "2026-04-17T18:00:00.000Z", + "publishedAt": "2026-04-16T19:35:00.000Z", "keywordHits": [ - "terrorism", - "attack", - "arrested", - "charged", - "charged with" + "terrorism" ], "terrorismHits": [ - "terrorism", - "counter terrorism" + "terrorism" ], - "eventType": "charge", - "geoPrecision": "region", - "isOfficial": true, - "priorityScore": 12.85, - "freshnessBucket": 2, - "freshUntil": "2026-05-01T18:00:00.000Z", + "eventType": "context_update", + "geoPrecision": "city", + "isOfficial": false, + "priorityScore": 3.8, + "freshnessBucket": 3, + "freshUntil": "2026-04-20T19:35:00.000Z", "needsHumanReview": false, "isTerrorRelevant": true, "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" + "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" } ], - "corroborationCount": 2, - "isDuplicateOf": "fusion-e180af3a10d4df62" + "corroborationCount": 1, + "isDuplicateOf": "fusion-6c18e7f7e5a9f377" }, { - "id": "met-police-news-2", - "fusedIncidentId": "fusion-2a41f036e061211e", - "title": "Statement On Recent Arson Attacks In North West London", - "location": "Golders Green, London, 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": "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, + "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, "major": false, - "publishedAt": "2026-04-16T15:15:00.000Z", + "publishedAt": "2026-04-15T16:09:32.000Z", "keywordHits": [ - "terrorism", - "attack", - "attacks", - "arrested", - "charged" + "arrested" ], "terrorismHits": [ - "terrorism", - "counter terrorism" + "terrorist" ], - "eventType": "charge", - "geoPrecision": "region", - "isOfficial": true, - "priorityScore": 12.85, - "freshnessBucket": 2, - "freshUntil": "2026-04-30T15:15:00.000Z", + "eventType": "context_update", + "geoPrecision": "country", + "isOfficial": false, + "priorityScore": 3.8, + "freshnessBucket": 3, + "freshUntil": "2026-04-19T16:09:32.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", - "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" + "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" + } + ], + "corroborationCount": 1, + "isDuplicateOf": "fusion-598a019e6d315ccf" }, { - "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", + "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.", "peopleInvolved": [], - "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, + "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, "major": false, - "publishedAt": "2026-04-04T14:07:00.000Z", + "publishedAt": "2026-04-13T18:52:20.000Z", "keywordHits": [ - "terrorism", - "attack", - "arrest", - "arrested", - "charged" + "terrorism" ], "terrorismHits": [ - "terrorism", - "counter terrorism" + "terrorism" ], - "eventType": "charge", - "geoPrecision": "region", - "isOfficial": true, - "priorityScore": 12.85, - "freshnessBucket": 2, - "freshUntil": "2026-04-18T14:07:00.000Z", + "eventType": "context_update", + "geoPrecision": "country", + "isOfficial": false, + "priorityScore": 3.8, + "freshnessBucket": 3, + "freshUntil": "2026-04-17T18:52:20.000Z", "needsHumanReview": false, "isTerrorRelevant": true, - "corroboratingSources": [ - { - "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": 2, - "isDuplicateOf": "fusion-3b3482fa7981c0b9" + "corroboratingSources": [], + "corroborationCount": 0, + "isDuplicateOf": null }, { - "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": "16 Apr 2026, 14:05", - "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.", + "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": "Metropolitan Police - Latest News", - "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": "16 Apr 2026, 14:05", - "lat": 51.5722, - "lng": -0.1941, + "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-16T13:05:42.000Z", + "publishedAt": "2026-04-13T16:12:00.000Z", "keywordHits": [ - "terrorism", - "attack", - "arrested" + "terror" ], "terrorismHits": [ - "terrorism", - "counter terrorism", - "terrorist" + "terror" ], - "eventType": "arrest", + "eventType": "context_update", "geoPrecision": "region", - "isOfficial": true, - "priorityScore": 11.65, - "freshnessBucket": 2, - "freshUntil": "2026-04-30T13:05:42.000Z", + "isOfficial": false, + "priorityScore": 3.8, + "freshnessBucket": 3, + "freshUntil": "2026-04-17T16:12:00.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", - "source": "Metropolitan Police - Latest 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" - } - ], - "corroborationCount": 2, - "isDuplicateOf": "fusion-a518885afbf6dad2" + "corroboratingSources": [], + "corroborationCount": 0, + "isDuplicateOf": null }, { - "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", - "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.", + "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": "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, - "major": false, - "publishedAt": "2026-04-15T12:56:00.000Z", + "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, + "major": false, + "publishedAt": "2026-04-13T15:12:25.000Z", "keywordHits": [ - "terrorism", - "attack" + "terror" ], "terrorismHits": [ - "terrorism", - "counter terrorism" + "terror" ], - "eventType": "arrest", - "geoPrecision": "region", - "isOfficial": true, - "priorityScore": 11.05, - "freshnessBucket": 2, - "freshUntil": "2026-04-29T12:56:00.000Z", + "eventType": "context_update", + "geoPrecision": "country", + "isOfficial": false, + "priorityScore": 3.8, + "freshnessBucket": 3, + "freshUntil": "2026-04-17T15:12:25.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", - "confidence": "Verified official source update" - } - ], - "corroborationCount": 2, - "isDuplicateOf": "fusion-917924b97a959bd6" + "corroboratingSources": [], + "corroborationCount": 0, + "isDuplicateOf": null }, { - "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", - "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, + "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.", + "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, "major": false, - "publishedAt": "2026-04-09T07:45:00.000Z", + "publishedAt": "2026-04-13T12:18:27.000Z", "keywordHits": [ - "terrorism", - "charged", - "charged with" + "terrorism" ], "terrorismHits": [ - "terrorism", - "counter terrorism", - "terrorist" + "terrorism" ], - "eventType": "charge", - "geoPrecision": "region", - "isOfficial": true, - "priorityScore": 10.65, - "freshnessBucket": 2, - "freshUntil": "2026-04-23T07:45:00.000Z", + "eventType": "context_update", + "geoPrecision": "country", + "isOfficial": false, + "priorityScore": 3.8, + "freshnessBucket": 3, + "freshUntil": "2026-04-17T12:18:27.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" + "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" } ], - "corroborationCount": 2, - "isDuplicateOf": "fusion-e943bb1c0fe3abd0" + "corroborationCount": 1, + "isDuplicateOf": "fusion-b7a05b808b258f59" }, { - "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": "high", - "status": "Arrest", - "actor": "Metropolitan Police - Latest News", - "subject": "Metropolitan Police - Latest News", - "happenedWhen": "19 Apr 2026, 12:41", - "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.”", + "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": "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": "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-19T11:41:03.000Z", + "publishedAt": "2026-04-11T20:18:47.000Z", "keywordHits": [ - "terrorism", - "arrested" + "extremist" ], "terrorismHits": [ - "terrorism" + "extremist" ], - "eventType": "arrest", + "eventType": "context_update", "geoPrecision": "region", - "isOfficial": true, - "priorityScore": 10.05, - "freshnessBucket": 2, - "freshUntil": "2026-05-03T11:41:03.000Z", + "isOfficial": false, + "priorityScore": 3.8, + "freshnessBucket": 3, + "freshUntil": "2026-04-15T20:18:47.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-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-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": 2, - "isDuplicateOf": "fusion-a04e9e1e3d09e4c6" + "corroborationCount": 1, + "isDuplicateOf": "fusion-6547a22c4ea82ed1" }, { - "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": "high", - "status": "Arrest", + "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" + }, + { + "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": "incidents", + "severity": "critical", + "status": "Arrest", "actor": "Metropolitan Police - Latest News", "subject": "Metropolitan Police - Latest News", - "happenedWhen": "10 Apr 2026, 11:08", + "happenedWhen": "22 Apr 2026, 21:15", "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.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": [ - "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: “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/pressreleases/met-issues-update-ahead-of-planned-defend-our-juries-activity-this-weekend-3442378", + "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": "10 Apr 2026, 11:08", - "lat": 51.5074, - "lng": -0.1278, + "time": "22 Apr 2026, 21:15", + "lat": 52.4862, + "lng": -1.8904, "major": false, - "publishedAt": "2026-04-10T10:08:26.000Z", + "publishedAt": "2026-04-22T20:15:00.000Z", "keywordHits": [ "terrorism", - "arrest" + "attack", + "attacks", + "arrest", + "arrested" ], "terrorismHits": [ "terrorism", - "proscribed organisation" + "counter terrorism" ], "eventType": "arrest", "geoPrecision": "region", "isOfficial": true, - "priorityScore": 10.05, + "priorityScore": 12.85, "freshnessBucket": 2, - "freshUntil": "2026-04-24T10:08:26.000Z", + "freshUntil": "2026-05-06T20:15:00.000Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [ { - "fusedIncidentId": "fusion-1a950ffa2dc2c860", + "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/pressreleases/met-issues-update-ahead-of-planned-defend-our-juries-activity-this-weekend-3442378", + "sourceUrl": "https://news.met.police.uk/news/two-more-arrests-for-conspiracy-to-commit-arson-508544", "sourceTier": "corroboration", "reliabilityProfile": "official_general", - "publishedAt": "2026-04-10T10:08:26.000Z", + "publishedAt": "2026-04-22T20:15:00.000Z", "confidence": "Verified official source update" } ], - "corroborationCount": 1, - "isDuplicateOf": "fusion-1a950ffa2dc2c860" + "corroborationCount": 2, + "isDuplicateOf": "fusion-eb23139c042e3c14" }, { - "id": "met-police-news-1", - "fusedIncidentId": "fusion-48f0d17a5892aab4", - "title": "Counter Terrorism Policing Update On Various Arson Attacks In North West London", - "location": "London, UK", + "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": "elevated", - "status": "Arrest", - "actor": "Metropolitan Police Service a News", - "subject": "Metropolitan Police Service a News", - "happenedWhen": "16 Apr 2026, 16:23", + "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.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." - ], - "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", + "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": "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": "16 Apr 2026, 16:23", - "lat": 51.5074, - "lng": -0.1278, + "time": "17 Apr 2026, 19:00", + "lat": 51.5722, + "lng": -0.1941, "major": false, - "publishedAt": "2026-04-16T15:23:00.000Z", + "publishedAt": "2026-04-17T18:00:00.000Z", "keywordHits": [ "terrorism", - "attacks" + "attack", + "arrested", + "charged", + "charged with" ], "terrorismHits": [ "terrorism", - "counter terrorism", - "terrorist" + "counter terrorism" ], - "eventType": "arrest", + "eventType": "charge", "geoPrecision": "region", "isOfficial": true, - "priorityScore": 9.05, + "priorityScore": 12.85, "freshnessBucket": 2, - "freshUntil": "2026-04-30T15:23:00.000Z", + "freshUntil": "2026-05-01T18:00:00.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-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-16T15:23:00.000Z", + "publishedAt": "2026-04-17T18:00:00.000Z", "confidence": "Verified official source update" }, { - "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", + "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-16T15:23:00.000Z", + "publishedAt": "2026-04-17T18:00:00.000Z", "confidence": "Verified official source update" } ], "corroborationCount": 2, - "isDuplicateOf": "fusion-48f0d17a5892aab4" + "isDuplicateOf": "fusion-e180af3a10d4df62" }, { - "id": "unoct-news-3", - "fusedIncidentId": "fusion-c61941b0544e7ebe", - "title": "World News In Brief: Civilians At Risk In Gaza And West Bank, Duterte To Go On Trial In ICC, Yemen Detainees Update", - "location": "Palestine", - "region": "international", - "lane": "oversight", - "severity": "moderate", - "status": "Update", - "actor": "UN Office of Counter-Terrorism (UNOCT) - News", - "subject": "UN Office of Counter-Terrorism (UNOCT) - News", - "happenedWhen": "23 Apr 2026, 19:45", + "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.88, - "summary": "Continued strikes, shelling and gunfire in residential areas of Gaza are raising alarm over civilian safety, the UN relief coordination office OCHA has warned. The concerns follow reports that children were killed in northern Gaza after a tent sheltering civil", - "aiSummary": "UN Office of Counter-Terrorism (UNOCT) - 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": "Continued strikes, shelling and gunfire in residential areas of Gaza are raising alarm over civilian safety, the UN relief coordination office OCHA has warned. The concerns follow reports that children were killed in northern Gaza after a tent sheltering civilians was hit in a strike. OCHA reiterated that under international humanitarian law, civilians and civilian infrastructure “must be protected at all times.” Despite the insecurity, humanitarian partners continue to deliver food assistance, including in hard-to-reach areas, UN Spokesperson Stéphane Dujarric told journalists in New York. As of Monday, aid groups were serving meals and producing around 230 metric tons of bread daily through a network of more than 120 kitchens, bakeries and community ovens, he added. In the occupied West Bank, the situation is also deteriorating. The UN received reports of rising settler-related violence, including attacks on schools, Mr. Dujarric said. In one incident near Ramallah, a child was reportedly killed when a school came under fire, while another school serving around 60 children was demolished in the Jordan Valley and in the Hebron area. On April 21, 14-year-old Aws Hamdi Naasan and 35-year-old Jihad Abu Naiem were killed during an attack by Israeli settlers in Al Mughayyir village. UN rights office, OHCHR. described the incidents as part of a “growing pattern of unchecked violence” by a militarized settler movement that operates with State shielding. In a separate attack east of Ramallah, 25-year-old Odeh Awawdeh was shot and killed after settlers entered the village of Deir Dibwan. Israeli security forces reportedly raided the town and detained 30 Palestinian men during the clashes, while Israeli media indicated several settlers were also held for questioning. The UN warn", - "peopleInvolved": [], - "source": "UN Office of Counter-Terrorism (UNOCT) - News", - "sourceUrl": "https://news.un.org/feed/view/en/story/2026/04/1167373", - "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, 19:45", - "lat": 31.9522, - "lng": 35.2332, + "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-23T18:45:30.000Z", + "publishedAt": "2026-04-16T15:15:00.000Z", "keywordHits": [ + "terrorism", "attack", "attacks", - "charged", - "charged with" + "arrested", + "charged" ], "terrorismHits": [ - "jihad" + "terrorism", + "counter terrorism" ], - "eventType": "oversight_update", + "eventType": "charge", "geoPrecision": "region", "isOfficial": true, - "priorityScore": 6, + "priorityScore": 12.85, "freshnessBucket": 2, - "freshUntil": "2026-05-01T18:45:30.000Z", + "freshUntil": "2026-04-30T15:15:00.000Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [ { - "fusedIncidentId": "fusion-c61941b0544e7ebe", - "source": "UN Office of Counter-Terrorism (UNOCT) - News", - "sourceUrl": "https://news.un.org/feed/view/en/story/2026/04/1167373", - "sourceTier": "context", - "reliabilityProfile": "official_context", - "publishedAt": "2026-04-23T18:45:30.000Z", + "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": 1, - "isDuplicateOf": "fusion-c61941b0544e7ebe" + "corroborationCount": 2, + "isDuplicateOf": "fusion-2a41f036e061211e" }, { - "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", + "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.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.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": "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, + "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-16T12:00:00.000Z", + "publishedAt": "2026-04-04T14:07:00.000Z", "keywordHits": [ - "suspect", - "arrested" + "terrorism", + "attack", + "arrest", + "arrested", + "charged" ], - "terrorismHits": [], - "eventType": "oversight_update", + "terrorismHits": [ + "terrorism", + "counter terrorism" + ], + "eventType": "charge", "geoPrecision": "region", "isOfficial": true, - "priorityScore": 4.8, + "priorityScore": 12.85, "freshnessBucket": 2, - "freshUntil": "2026-04-24T12:00:00.000Z", + "freshUntil": "2026-04-18T14:07:00.000Z", "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", - "sourceTier": "context", - "reliabilityProfile": "official_context", - "publishedAt": "2026-04-16T12:00:00.000Z", + "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-6f9d09782a3c8b8a" + "corroborationCount": 2, + "isDuplicateOf": "fusion-3b3482fa7981c0b9" }, { - "id": "unoct-news-3", - "fusedIncidentId": "fusion-4d2a09d14ae3b4a7", - "title": "Devastation At Every Turn Greets UN Aid Mission To South Lebanon", - "location": "Lebanon", - "region": "international", - "lane": "oversight", - "severity": "moderate", - "status": "Update", - "actor": "UN Office of Counter-Terrorism (UNOCT) - News", - "subject": "UN Office of Counter-Terrorism (UNOCT) - News", - "happenedWhen": "23 Apr 2026, 17:57", + "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": "16 Apr 2026, 14:05", "confidence": "Verified official source update", - "confidenceScore": 0.84, - "summary": "A UNICEF relief mission reached a large hospital in the southern Lebanese town of Tebnine on Thursday, only to find massive destruction and staggering needs. “I came here two weeks ago and we’ve come back today again with a convoy… but what is different today ", - "aiSummary": "UN Office of Counter-Terrorism (UNOCT) - 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": "A UNICEF relief mission reached a large hospital in the southern Lebanese town of Tebnine on Thursday, only to find massive destruction and staggering needs. “I came here two weeks ago and we’ve come back today again with a convoy… but what is different today is the whole street in front of the hospital is completely destroyed,” said UN Children’s Fund spokesperson, Christophe Boulierac. In an exclusive video interview with UN News while on mission, Mr. Boulierac showed that although the hospital was still standing, much of what had been around it was not. Beside heaps of rubble, collapsed houses lay in ruins, amid burnt-out cars at every turn. The hospital is “kind of functional, but they were running out of water, out of medicine, out of energy. I don't know about the generator, but it’s likely not working properly,” the UNICEF official continued, before pointing to the large solar panel generator system installed by the agency beside the medical facility that appeared to have been blown up. “All the buildings in the streets just near the hospitals, they were normal two weeks ago and today they are completely, completely destroyed,” Mr. Boulierac stressed. “You can see over there the first house, the second house, the third house, the fourth house, the fifth house, sixth, seventh…at least eight houses completely destroyed.” As a fragile ceasefire with Israel beginning 16 April still holds, an unknown number of people are streaming back to their homes in the south, only for some to find them simply flattened. The situation remains “very dangerous, especially for civilians”, Mr. Boulierac said, noting major challenges over the provision of water, electricity, health and education. “It is still very unstable and still very uncertain, especially for the people, the over o", + "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": "UN Office of Counter-Terrorism (UNOCT) - News", - "sourceUrl": "https://news.un.org/feed/view/en/story/2026/04/1167367", - "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, 17:57", - "lat": 33.8547, - "lng": 35.8623, + "source": "Metropolitan Police - Latest News", + "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": "16 Apr 2026, 14:05", + "lat": 51.5722, + "lng": -0.1941, "major": false, - "publishedAt": "2026-04-23T16:57:32.000Z", + "publishedAt": "2026-04-16T13:05:42.000Z", "keywordHits": [ - "attacks" + "terrorism", + "attack", + "arrested" ], - "terrorismHits": [], - "eventType": "oversight_update", - "geoPrecision": "country", - "isOfficial": true, - "priorityScore": 4.2, - "freshnessBucket": 2, - "freshUntil": "2026-05-01T16:57:32.000Z", - "needsHumanReview": false, - "isTerrorRelevant": true, - "corroboratingSources": [], - "corroborationCount": 0, - "isDuplicateOf": null - }, - { - "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.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-14T00:00:00.000Z", - "keywordHits": [ - "arrested" - ], - "terrorismHits": [], - "eventType": "context_update", - "geoPrecision": "country", - "isOfficial": true, - "priorityScore": 4.2, - "freshnessBucket": 2, - "freshUntil": "2026-04-18T00:00:00.000Z", - "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", - "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.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 - 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-13T23:01:00.000Z", - "keywordHits": [ - "arrested" + "terrorismHits": [ + "terrorism", + "counter terrorism", + "terrorist" ], - "terrorismHits": [], - "eventType": "context_update", + "eventType": "arrest", "geoPrecision": "region", "isOfficial": true, - "priorityScore": 4.2, - "freshnessBucket": 2, - "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, + "priorityScore": 11.65, "freshnessBucket": 2, - "freshUntil": "2026-04-24T23:46:13.000Z", + "freshUntil": "2026-04-30T13:05:42.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" - } - ], - "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-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-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-a518885afbf6dad2", + "source": "Metropolitan Police - Latest 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" } ], - "corroborationCount": 1, - "isDuplicateOf": "fusion-509851d9a90678ff" + "corroborationCount": 2, + "isDuplicateOf": "fusion-a518885afbf6dad2" }, { - "id": "met-police-latest-news-1", - "fusedIncidentId": "fusion-79c8b34c14d07dd5", - "title": "Eight Arrests Made By Counter Terrorism Policing London", + "id": "met-police-latest-news-2", + "fusedIncidentId": "fusion-f7343f2612a45b1b", + "title": "Investigation Launched Into Arson At Business In Hendon", "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": "21 Apr 2026, 13:00", + "happenedWhen": "18 Apr 2026, 11:00", "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 ", + "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.", "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." + "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." ], "source": "Metropolitan Police - Latest News", - "sourceUrl": "https://news.met.police.uk/news/eight-arrests-made-by-counter-terrorism-policing-london-508480", + "sourceUrl": "https://news.met.police.uk/news/investigation-launched-into-arson-at-business-in-hendon-508392", "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", + "time": "18 Apr 2026, 11:00", "lat": 51.5722, "lng": -0.1941, "major": false, - "publishedAt": "2026-04-21T12:00:00.000Z", + "publishedAt": "2026-04-18T10:00:00.000Z", "keywordHits": [ "terrorism", - "attack", - "attacks", - "arrest", - "arrested", - "charged", - "charged with" + "attack" ], "terrorismHits": [ "terrorism", - "counter terrorism" + "counter terrorism", + "terrorist" ], - "eventType": "charge", + "eventType": "arrest", "geoPrecision": "region", "isOfficial": true, - "priorityScore": 12.1, - "freshnessBucket": 1, - "freshUntil": "2026-05-05T12:00:00.000Z", + "priorityScore": 11.05, + "freshnessBucket": 2, + "freshUntil": "2026-05-02T10:00:00.000Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [ { - "fusedIncidentId": "fusion-79c8b34c14d07dd5", + "fusedIncidentId": "fusion-f7343f2612a45b1b", "source": "Metropolitan Police Service a News", - "sourceUrl": "https://news.met.police.uk/news/eight-arrests-made-by-counter-terrorism-policing-london-508480", + "sourceUrl": "https://news.met.police.uk/news/investigation-launched-into-arson-at-business-in-hendon-508392", "sourceTier": "corroboration", "reliabilityProfile": "official_general", - "publishedAt": "2026-04-21T12:00:00.000Z", + "publishedAt": "2026-04-18T10:00:00.000Z", "confidence": "Verified official source update" }, { - "fusedIncidentId": "fusion-79c8b34c14d07dd5", + "fusedIncidentId": "fusion-f7343f2612a45b1b", "source": "Metropolitan Police - Latest News", - "sourceUrl": "https://news.met.police.uk/news/eight-arrests-made-by-counter-terrorism-policing-london-508480", + "sourceUrl": "https://news.met.police.uk/news/investigation-launched-into-arson-at-business-in-hendon-508392", "sourceTier": "corroboration", "reliabilityProfile": "official_general", - "publishedAt": "2026-04-21T12:00:00.000Z", + "publishedAt": "2026-04-18T10:00:00.000Z", "confidence": "Verified official source update" } ], "corroborationCount": 2, - "isDuplicateOf": "fusion-79c8b34c14d07dd5" + "isDuplicateOf": "fusion-f7343f2612a45b1b" }, { - "id": "met-police-latest-news-1", - "fusedIncidentId": "fusion-61fc8ba12c50b250", - "title": "Three Charged Over 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": "03 Apr 2026, 22:10", + "happenedWhen": "15 Apr 2026, 13:56", "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" - ], + "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/three-charged-over-golders-green-arson-attack-507955", + "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": "03 Apr 2026, 22:10", + "time": "15 Apr 2026, 13:56", "lat": 51.5722, "lng": -0.1941, "major": false, - "publishedAt": "2026-04-03T21:10:00.000Z", + "publishedAt": "2026-04-15T12:56:00.000Z", "keywordHits": [ "terrorism", - "attack", - "arrested", - "charged" + "attack" ], "terrorismHits": [ "terrorism", "counter terrorism" ], - "eventType": "charge", + "eventType": "arrest", "geoPrecision": "region", "isOfficial": true, - "priorityScore": 11.5, - "freshnessBucket": 1, - "freshUntil": "2026-04-17T21:10:00.000Z", + "priorityScore": 11.05, + "freshnessBucket": 2, + "freshUntil": "2026-04-29T12:56:00.000Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [ { - "fusedIncidentId": "fusion-61fc8ba12c50b250", + "fusedIncidentId": "fusion-917924b97a959bd6", "source": "Metropolitan Police Service a News", - "sourceUrl": "https://news.met.police.uk/news/three-charged-over-golders-green-arson-attack-507955", + "sourceUrl": "https://news.met.police.uk/news/investigation-launched-after-attempted-arson-attack-in-finchley-508283", "sourceTier": "corroboration", "reliabilityProfile": "official_general", - "publishedAt": "2026-04-03T21:10:00.000Z", + "publishedAt": "2026-04-15T12:56:00.000Z", "confidence": "Verified official source update" }, { - "fusedIncidentId": "fusion-61fc8ba12c50b250", + "fusedIncidentId": "fusion-917924b97a959bd6", "source": "Metropolitan Police - Latest News", - "sourceUrl": "https://news.met.police.uk/news/three-charged-over-golders-green-arson-attack-507955", + "sourceUrl": "https://news.met.police.uk/news/investigation-launched-after-attempted-arson-attack-in-finchley-508283", "sourceTier": "corroboration", "reliabilityProfile": "official_general", - "publishedAt": "2026-04-03T21:10:00.000Z", + "publishedAt": "2026-04-15T12:56:00.000Z", "confidence": "Verified official source update" } ], "corroborationCount": 2, - "isDuplicateOf": "fusion-61fc8ba12c50b250" + "isDuplicateOf": "fusion-917924b97a959bd6" }, { - "id": "met-police-news-6", - "fusedIncidentId": "fusion-4d5e7ff00941dc7c", - "title": "UPDATED: Two Arrests Made In Finchley Attempted Arson Investigation", - "location": "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", - "status": "Arrest", - "actor": "Metropolitan Police Service a News", - "subject": "Metropolitan Police Service a News", - "happenedWhen": "15 Apr 2026, 20:43", + "severity": "high", + "status": "Charged", + "actor": "Metropolitan Police - Latest News", + "subject": "Metropolitan Police - Latest News", + "happenedWhen": "09 Apr 2026, 08:45", "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.", - "peopleInvolved": [], - "source": "Metropolitan Police Service a News", - "sourceUrl": "https://news.met.police.uk/news/further-arrests-after-attempted-finchley-synagogue-arson-attack-508304", + "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": "15 Apr 2026, 20:43", - "lat": 51.5074, - "lng": -0.1278, + "time": "09 Apr 2026, 08:45", + "lat": 51.4975, + "lng": -0.1357, "major": false, - "publishedAt": "2026-04-15T19:43:38.000Z", + "publishedAt": "2026-04-09T07:45:00.000Z", "keywordHits": [ "terrorism", - "attack", - "arrested" + "charged", + "charged with" ], "terrorismHits": [ "terrorism", - "counter terrorism" + "counter terrorism", + "terrorist" ], - "eventType": "arrest", + "eventType": "charge", "geoPrecision": "region", "isOfficial": true, - "priorityScore": 10.9, - "freshnessBucket": 1, - "freshUntil": "2026-04-29T19:43:38.000Z", + "priorityScore": 10.65, + "freshnessBucket": 2, + "freshUntil": "2026-04-23T07:45:00.000Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [ { - "fusedIncidentId": "fusion-4d5e7ff00941dc7c", + "fusedIncidentId": "fusion-e943bb1c0fe3abd0", "source": "Metropolitan Police Service a News", - "sourceUrl": "https://news.met.police.uk/news/further-arrests-after-attempted-finchley-synagogue-arson-attack-508304", + "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-15T19:43:38.000Z", + "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": 1, - "isDuplicateOf": "fusion-4d5e7ff00941dc7c" + "corroborationCount": 2, + "isDuplicateOf": "fusion-e943bb1c0fe3abd0" }, { - "id": "met-police-latest-news-2", - "fusedIncidentId": "fusion-d3e64615779eec5c", - "title": "Gang Sentenced For Prison Smuggling Operation", - "location": "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": "high", "status": "Arrest", "actor": "Metropolitan Police - Latest News", "subject": "Metropolitan Police - Latest News", - "happenedWhen": "02 Apr 2026, 16:02", + "happenedWhen": "19 Apr 2026, 12:41", "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", + "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/gang-sentenced-for-prison-smuggling-operation-507930", + "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": "Needs human review", - "time": "02 Apr 2026, 16:02", - "lat": 51.5074, - "lng": -0.1278, + "queueReason": "Non-trigger source awaiting corroboration", + "queueBucket": "quarantine", + "time": "19 Apr 2026, 12:41", + "lat": 51.4975, + "lng": -0.1357, "major": false, - "publishedAt": "2026-04-02T15:02:43.000Z", + "publishedAt": "2026-04-19T11:41:03.000Z", "keywordHits": [ - "isis" + "terrorism", + "arrested" ], "terrorismHits": [ - "isis" + "terrorism" ], - "eventType": "sentencing", + "eventType": "arrest", "geoPrecision": "region", "isOfficial": true, - "priorityScore": 8.7, - "freshnessBucket": 1, - "freshUntil": "2026-04-16T15:02:43.000Z", - "needsHumanReview": true, + "priorityScore": 10.05, + "freshnessBucket": 2, + "freshUntil": "2026-05-03T11:41:03.000Z", + "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [ { - "fusedIncidentId": "fusion-d3e64615779eec5c", + "fusedIncidentId": "fusion-a04e9e1e3d09e4c6", "source": "Metropolitan Police Service a News", - "sourceUrl": "https://news.met.police.uk/news/gang-sentenced-for-prison-smuggling-operation-507930", + "sourceUrl": "https://news.met.police.uk/news/woman-arrested-after-serious-argyll-street-collision-508396", "sourceTier": "corroboration", "reliabilityProfile": "official_general", - "publishedAt": "2026-04-02T15:02:43.000Z", + "publishedAt": "2026-04-19T11:41:03.000Z", "confidence": "Verified official source update" }, { - "fusedIncidentId": "fusion-d3e64615779eec5c", + "fusedIncidentId": "fusion-a04e9e1e3d09e4c6", "source": "Metropolitan Police - Latest News", - "sourceUrl": "https://news.met.police.uk/news/gang-sentenced-for-prison-smuggling-operation-507930", + "sourceUrl": "https://news.met.police.uk/news/woman-arrested-after-serious-argyll-street-collision-508396", "sourceTier": "corroboration", "reliabilityProfile": "official_general", - "publishedAt": "2026-04-02T15:02:43.000Z", + "publishedAt": "2026-04-19T11:41:03.000Z", "confidence": "Verified official source update" } ], "corroborationCount": 2, - "isDuplicateOf": "fusion-d3e64615779eec5c" + "isDuplicateOf": "fusion-a04e9e1e3d09e4c6" }, { - "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": "US Department of Homeland Security - News", - "subject": "US Department of Homeland Security - News", - "happenedWhen": "Source date unconfirmed", + "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": "high", + "status": "Arrest", + "actor": "Metropolitan Police - Latest News", + "subject": "Metropolitan Police - Latest News", + "happenedWhen": "10 Apr 2026, 11:08", "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", - "peopleInvolved": [], - "source": "US Department of Homeland Security - News", - "sourceUrl": "https://www.dhs.gov/national-terrorism-advisory-system", - "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.8283, - "lng": -98.5795, - "major": false, - "publishedAt": null, - "keywordHits": [ - "terrorism", - "attack", - "attacks", - "extremist", - "threat" + "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." ], - "terrorismHits": [ - "terrorism", - "terrorist", - "extremist" + "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", + "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, + "major": false, + "publishedAt": "2026-04-10T10:08:26.000Z", + "keywordHits": [ + "terrorism", + "arrest" ], - "eventType": "context_update", + "terrorismHits": [ + "terrorism", + "proscribed organisation" + ], + "eventType": "arrest", "geoPrecision": "region", "isOfficial": true, - "priorityScore": 4.6, - "freshnessBucket": 1, - "freshUntil": "2026-04-10T05:26:53.285Z", + "priorityScore": 10.05, + "freshnessBucket": 2, + "freshUntil": "2026-04-24T10:08:26.000Z", "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, + "fusedIncidentId": "fusion-1a950ffa2dc2c860", + "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", + "sourceTier": "corroboration", + "reliabilityProfile": "official_general", + "publishedAt": "2026-04-10T10:08:26.000Z", "confidence": "Verified official source update" } ], "corroborationCount": 1, - "isDuplicateOf": "fusion-e8a752a50499f3b2" + "isDuplicateOf": "fusion-1a950ffa2dc2c860" }, { - "id": "protectuk-1", - "fusedIncidentId": "fusion-cbf1ce4f666d836c", - "title": "ACT For Local Authorities | ProtectUK", - "location": "United Kingdom", - "region": "uk", - "lane": "prevention", - "severity": "moderate", - "status": "Update", - "actor": "ProtectUK (NPSA) a Protective Security Guidance", - "subject": "ProtectUK (NPSA) a Protective Security Guidance", - "happenedWhen": "Source date unconfirmed", + "id": "met-police-latest-news-0", + "fusedIncidentId": "fusion-bacd3d1d87cd7e53", + "title": "Statements On Linked Arson Attacks In North West London", + "location": "London, UK", + "region": "london", + "lane": "incidents", + "severity": "elevated", + "status": "New source item", + "actor": "Metropolitan Police - Latest News", + "subject": "Metropolitan Police - Latest News", + "happenedWhen": "19 Apr 2026, 14:40", "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", - "peopleInvolved": [], - "source": "ProtectUK (NPSA) a Protective Security Guidance", - "sourceUrl": "https://www.protectuk.police.uk/act-local-authorities", - "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.5, - "lng": -2.5, + "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", + "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." + ], + "source": "Metropolitan Police - Latest News", + "sourceUrl": "https://news.met.police.uk/news/statements-on-linked-arson-attacks-in-north-west-london-508398", + "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, "major": false, - "publishedAt": null, + "publishedAt": "2026-04-19T13:40:00.000Z", "keywordHits": [ "terrorism", - "attack", - "attacks", - "threat" + "attacks" ], "terrorismHits": [ "terrorism", - "counter terrorism", - "terrorist" + "counter terrorism" ], - "eventType": "prevention_update", - "geoPrecision": "country", + "eventType": "incident_update", + "geoPrecision": "region", "isOfficial": true, - "priorityScore": 4, - "freshnessBucket": 1, - "freshUntil": "2026-04-14T09:11:31.394Z", + "priorityScore": 9.05, + "freshnessBucket": 2, + "freshUntil": "2026-05-03T13:40:00.000Z", "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, + "fusedIncidentId": "fusion-bacd3d1d87cd7e53", + "source": "Metropolitan Police Service a News", + "sourceUrl": "https://news.met.police.uk/news/statements-on-linked-arson-attacks-in-north-west-london-508398", + "sourceTier": "corroboration", + "reliabilityProfile": "official_general", + "publishedAt": "2026-04-19T13:40:00.000Z", + "confidence": "Verified official source update" + }, + { + "fusedIncidentId": "fusion-bacd3d1d87cd7e53", + "source": "Metropolitan Police - Latest News", + "sourceUrl": "https://news.met.police.uk/news/statements-on-linked-arson-attacks-in-north-west-london-508398", + "sourceTier": "corroboration", + "reliabilityProfile": "official_general", + "publishedAt": "2026-04-19T13:40:00.000Z", "confidence": "Verified official source update" } ], - "corroborationCount": 1, - "isDuplicateOf": "fusion-cbf1ce4f666d836c" + "corroborationCount": 2, + "isDuplicateOf": "fusion-bacd3d1d87cd7e53" }, { - "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": "US State Department a Bureau of Counterterrorism", - "subject": "US State Department a Bureau of Counterterrorism", - "happenedWhen": "Source date unconfirmed", + "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": "elevated", + "status": "Arrest", + "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.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": "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.", - "time": "Source date unconfirmed", - "lat": 39.8283, - "lng": -98.5795, + "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." + ], + "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": "16 Apr 2026, 16:23", + "lat": 51.5074, + "lng": -0.1278, "major": false, - "publishedAt": null, + "publishedAt": "2026-04-16T15:23:00.000Z", "keywordHits": [ "terrorism", - "attacks", - "arrest", - "extremist" + "attacks" ], "terrorismHits": [ "terrorism", "counter terrorism", - "terrorist", - "extremist", - "extremism" + "terrorist" ], - "eventType": "context_update", + "eventType": "arrest", "geoPrecision": "region", "isOfficial": true, - "priorityScore": 4, - "freshnessBucket": 1, - "freshUntil": "2026-04-09T14:36:11.004Z", + "priorityScore": 9.05, + "freshnessBucket": 2, + "freshUntil": "2026-04-30T15:23:00.000Z", "needsHumanReview": false, "isTerrorRelevant": true, - "corroboratingSources": [], - "corroborationCount": 0, - "isDuplicateOf": null + "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", + "sourceTier": "corroboration", + "reliabilityProfile": "official_general", + "publishedAt": "2026-04-16T15:23:00.000Z", + "confidence": "Verified official source update" + }, + { + "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-16T15:23:00.000Z", + "confidence": "Verified official source update" + } + ], + "corroborationCount": 2, + "isDuplicateOf": "fusion-48f0d17a5892aab4" }, { - "id": "uk-ncsc-news-4", - "fusedIncidentId": "fusion-5ad99d9f874d567d", - "title": "World-First NCSC-Engineered Device Secures Vulnerable Display Links", - "location": "United Kingdom", - "region": "uk", + "id": "unoct-news-3", + "fusedIncidentId": "fusion-c61941b0544e7ebe", + "title": "World News In Brief: Civilians At Risk In Gaza And West Bank, Duterte To Go On Trial In ICC, Yemen Detainees Update", + "location": "Palestine", + "region": "international", "lane": "oversight", "severity": "moderate", "status": "Update", - "actor": "National Cyber Security Centre (UK) a News", - "subject": "National Cyber Security Centre (UK) a News", - "happenedWhen": "22 Apr 2026, 13:00", + "actor": "UN Office of Counter-Terrorism (UNOCT) - News", + "subject": "UN Office of Counter-Terrorism (UNOCT) - News", + "happenedWhen": "23 Apr 2026, 19:45", "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": "National Cyber Security Centre (UK) a News", - "sourceUrl": "https://www.ncsc.gov.uk/news/world-first-ncsc-engineered-device-secures-vulnerable-display-links", + "confidenceScore": 0.88, + "summary": "Continued strikes, shelling and gunfire in residential areas of Gaza are raising alarm over civilian safety, the UN relief coordination office OCHA has warned. The concerns follow reports that children were killed in northern Gaza after a tent sheltering civil", + "aiSummary": "UN Office of Counter-Terrorism (UNOCT) - 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": "Continued strikes, shelling and gunfire in residential areas of Gaza are raising alarm over civilian safety, the UN relief coordination office OCHA has warned. The concerns follow reports that children were killed in northern Gaza after a tent sheltering civilians was hit in a strike. OCHA reiterated that under international humanitarian law, civilians and civilian infrastructure “must be protected at all times.” Despite the insecurity, humanitarian partners continue to deliver food assistance, including in hard-to-reach areas, UN Spokesperson Stéphane Dujarric told journalists in New York. As of Monday, aid groups were serving meals and producing around 230 metric tons of bread daily through a network of more than 120 kitchens, bakeries and community ovens, he added. In the occupied West Bank, the situation is also deteriorating. The UN received reports of rising settler-related violence, including attacks on schools, Mr. Dujarric said. In one incident near Ramallah, a child was reportedly killed when a school came under fire, while another school serving around 60 children was demolished in the Jordan Valley and in the Hebron area. On April 21, 14-year-old Aws Hamdi Naasan and 35-year-old Jihad Abu Naiem were killed during an attack by Israeli settlers in Al Mughayyir village. UN rights office, OHCHR. described the incidents as part of a “growing pattern of unchecked violence” by a militarized settler movement that operates with State shielding. In a separate attack east of Ramallah, 25-year-old Odeh Awawdeh was shot and killed after settlers entered the village of Deir Dibwan. Israeli security forces reportedly raided the town and detained 30 Palestinian men during the clashes, while Israeli media indicated several settlers were also held for questioning. The UN warn", + "peopleInvolved": [], + "source": "UN Office of Counter-Terrorism (UNOCT) - News", + "sourceUrl": "https://news.un.org/feed/view/en/story/2026/04/1167373", "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", - "lat": 54.5, - "lng": -2.5, + "time": "23 Apr 2026, 19:45", + "lat": 31.9522, + "lng": 35.2332, "major": false, - "publishedAt": "2026-04-22T12:00:00.000Z", + "publishedAt": "2026-04-23T18:45:30.000Z", "keywordHits": [ - "device" + "attack", + "attacks", + "charged", + "charged with" + ], + "terrorismHits": [ + "jihad" ], - "terrorismHits": [], "eventType": "oversight_update", - "geoPrecision": "country", + "geoPrecision": "region", "isOfficial": true, - "priorityScore": 3.55, - "freshnessBucket": 1, - "freshUntil": "2026-04-30T12:00:00.000Z", + "priorityScore": 6, + "freshnessBucket": 2, + "freshUntil": "2026-05-01T18:45:30.000Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [ { - "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", + "fusedIncidentId": "fusion-c61941b0544e7ebe", + "source": "UN Office of Counter-Terrorism (UNOCT) - News", + "sourceUrl": "https://news.un.org/feed/view/en/story/2026/04/1167373", "sourceTier": "context", "reliabilityProfile": "official_context", - "publishedAt": "2026-04-22T12:00:00.000Z", + "publishedAt": "2026-04-23T18:45:30.000Z", "confidence": "Verified official source update" } ], "corroborationCount": 1, - "isDuplicateOf": "fusion-5ad99d9f874d567d" + "isDuplicateOf": "fusion-c61941b0544e7ebe" }, { - "id": "pst-no-english-2", - "fusedIncidentId": "fusion-58743b394d28e45f", - "title": "Read More About Our Areas Of Responsibility.", - "location": "Europe", - "region": "europe", - "lane": "prevention", + "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": "PST (Norway) English reporting page", - "subject": "PST (Norway) English reporting page", - "happenedWhen": "Source date unconfirmed", + "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.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", + "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": "PST (Norway) English reporting page", - "sourceUrl": "http://www-prod.pst.no/om-pst/", + "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": "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": "16 Apr 2026, 13:00", + "lat": 40.4168, + "lng": -3.7038, "major": false, - "publishedAt": null, + "publishedAt": "2026-04-16T12:00:00.000Z", "keywordHits": [ - "terrorism", - "attacks", - "threat" - ], - "terrorismHits": [ - "terrorism", - "extremism", - "radicalisation" + "suspect", + "arrested" ], - "eventType": "prevention_update", - "geoPrecision": "country", + "terrorismHits": [], + "eventType": "oversight_update", + "geoPrecision": "region", "isOfficial": true, - "priorityScore": 3.4, - "freshnessBucket": 1, - "freshUntil": "2026-04-14T09:11:31.394Z", + "priorityScore": 4.8, + "freshnessBucket": 2, + "freshUntil": "2026-04-24T12:00:00.000Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [ { - "fusedIncidentId": "fusion-58743b394d28e45f", - "source": "PST (Norway) English reporting page", - "sourceUrl": "http://www-prod.pst.no/om-pst/", + "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": null, + "publishedAt": "2026-04-16T12:00:00.000Z", "confidence": "Verified official source update" } ], "corroborationCount": 1, - "isDuplicateOf": "fusion-58743b394d28e45f" + "isDuplicateOf": "fusion-6f9d09782a3c8b8a" }, { - "id": "gov-uk-terrorism-national-emergency-0", - "fusedIncidentId": "fusion-ab45d0eca7a23669", - "title": "On The MI5 Website", - "location": "Northern Ireland, UK", - "region": "uk", - "lane": "prevention", + "id": "unoct-news-3", + "fusedIncidentId": "fusion-4d2a09d14ae3b4a7", + "title": "Devastation At Every Turn Greets UN Aid Mission To South Lebanon", + "location": "Lebanon", + "region": "international", + "lane": "oversight", "severity": "moderate", "status": "Update", - "actor": "GOV.UK - Terrorism National Emergency", - "subject": "GOV.UK - Terrorism National Emergency", - "happenedWhen": "Source date unconfirmed", + "actor": "UN Office of Counter-Terrorism (UNOCT) - News", + "subject": "UN Office of Counter-Terrorism (UNOCT) - News", + "happenedWhen": "23 Apr 2026, 17:57", "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", + "confidenceScore": 0.84, + "summary": "A UNICEF relief mission reached a large hospital in the southern Lebanese town of Tebnine on Thursday, only to find massive destruction and staggering needs. “I came here two weeks ago and we’ve come back today again with a convoy… but what is different today ", + "aiSummary": "UN Office of Counter-Terrorism (UNOCT) - 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": "A UNICEF relief mission reached a large hospital in the southern Lebanese town of Tebnine on Thursday, only to find massive destruction and staggering needs. “I came here two weeks ago and we’ve come back today again with a convoy… but what is different today is the whole street in front of the hospital is completely destroyed,” said UN Children’s Fund spokesperson, Christophe Boulierac. In an exclusive video interview with UN News while on mission, Mr. Boulierac showed that although the hospital was still standing, much of what had been around it was not. Beside heaps of rubble, collapsed houses lay in ruins, amid burnt-out cars at every turn. The hospital is “kind of functional, but they were running out of water, out of medicine, out of energy. I don't know about the generator, but it’s likely not working properly,” the UNICEF official continued, before pointing to the large solar panel generator system installed by the agency beside the medical facility that appeared to have been blown up. “All the buildings in the streets just near the hospitals, they were normal two weeks ago and today they are completely, completely destroyed,” Mr. Boulierac stressed. “You can see over there the first house, the second house, the third house, the fourth house, the fifth house, sixth, seventh…at least eight houses completely destroyed.” As a fragile ceasefire with Israel beginning 16 April still holds, an unknown number of people are streaming back to their homes in the south, only for some to find them simply flattened. The situation remains “very dangerous, especially for civilians”, Mr. Boulierac said, noting major challenges over the provision of water, electricity, health and education. “It is still very unstable and still very uncertain, especially for the people, the over o", "peopleInvolved": [], - "source": "GOV.UK - Terrorism National Emergency", - "sourceUrl": "https://www.mi5.gov.uk/threat-levels", + "source": "UN Office of Counter-Terrorism (UNOCT) - News", + "sourceUrl": "https://news.un.org/feed/view/en/story/2026/04/1167367", "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, + "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, 17:57", + "lat": 33.8547, + "lng": 35.8623, "major": false, - "publishedAt": null, + "publishedAt": "2026-04-23T16:57:32.000Z", "keywordHits": [ - "terrorism", - "attack", - "threat" - ], - "terrorismHits": [ - "terrorism", - "terrorist" + "attacks" ], - "eventType": "prevention_update", - "geoPrecision": "region", + "terrorismHits": [], + "eventType": "oversight_update", + "geoPrecision": "country", "isOfficial": true, - "priorityScore": 3.4, - "freshnessBucket": 1, - "freshUntil": "2026-04-14T09:11:31.394Z", + "priorityScore": 4.2, + "freshnessBucket": 2, + "freshUntil": "2026-05-01T16:57:32.000Z", "needsHumanReview": false, "isTerrorRelevant": true, - "corroboratingSources": [ - { - "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": 1, - "isDuplicateOf": "fusion-ab45d0eca7a23669" + "corroboratingSources": [], + "corroborationCount": 0, + "isDuplicateOf": null }, { - "id": "gov-uk-terrorism-national-emergency-2", - "fusedIncidentId": "fusion-8dee7cd7618b5f1e", - "title": "Home", - "location": "Northern Ireland, UK", + "id": "npcc-releases-0", + "fusedIncidentId": "fusion-c1696e8cae095a03", + "title": "Operation Leaves Criminals With Nowhere To Hide", + "location": "United Kingdom", "region": "uk", - "lane": "prevention", + "lane": "context", "severity": "moderate", "status": "Update", - "actor": "GOV.UK - Terrorism National Emergency", - "subject": "GOV.UK - Terrorism National Emergency", - "happenedWhen": "Source date unconfirmed", + "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.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.", + "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": "GOV.UK - Terrorism National Emergency", - "sourceUrl": "https://www.gov.uk/terrorism-national-emergency/print", + "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": "Prevention, radicalisation, or analytical context source.", - "queueReason": "Prevention, radicalisation, or analytical context source.", - "time": "Source date unconfirmed", - "lat": 54.7877, - "lng": -6.4923, + "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": null, + "publishedAt": "2026-04-14T00:00:00.000Z", "keywordHits": [ - "terrorism", - "attack", - "threat" - ], - "terrorismHits": [ - "terrorism", - "terrorist" + "arrested" ], - "eventType": "prevention_update", - "geoPrecision": "region", + "terrorismHits": [], + "eventType": "context_update", + "geoPrecision": "country", "isOfficial": true, - "priorityScore": 3.4, - "freshnessBucket": 1, - "freshUntil": "2026-04-14T09:11:31.394Z", + "priorityScore": 4.2, + "freshnessBucket": 2, + "freshUntil": "2026-04-18T00:00:00.000Z", "needsHumanReview": false, "isTerrorRelevant": true, - "corroboratingSources": [ - { - "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": 1, - "isDuplicateOf": "fusion-8dee7cd7618b5f1e" + "corroboratingSources": [], + "corroborationCount": 0, + "isDuplicateOf": null }, { - "id": "gov-uk-proscribed-terrorist-orgs-0", - "fusedIncidentId": "fusion-3a4bc58bbd6da4d2", - "title": "Home", - "location": "United Kingdom", - "region": "uk", - "lane": "sanctions", - "severity": "elevated", + "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": "context", + "severity": "moderate", "status": "Update", - "actor": "GOV.UK a Proscribed Terrorist Organisations", - "subject": "GOV.UK a Proscribed Terrorist Organisations", - "happenedWhen": "Source date unconfirmed", + "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.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.", + "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": "GOV.UK a Proscribed Terrorist Organisations", - "sourceUrl": "https://www.gov.uk/help/cookies", + "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": "Sanctions change with terrorism relevance.", - "queueReason": "Sanctions change with terrorism relevance.", - "time": "Source date unconfirmed", - "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": "14 Apr 2026, 00:01", + "lat": 51.5074, + "lng": -0.1278, "major": false, - "publishedAt": null, + "publishedAt": "2026-04-13T23:01:00.000Z", "keywordHits": [ - "device" + "arrested" ], "terrorismHits": [], - "eventType": "sanctions_update", - "geoPrecision": "country", + "eventType": "context_update", + "geoPrecision": "region", "isOfficial": true, - "priorityScore": 3.2, - "freshnessBucket": 1, - "freshUntil": "2026-04-16T05:26:53.285Z", + "priorityScore": 4.2, + "freshnessBucket": 2, + "freshUntil": "2026-04-17T23:01:00.000Z", + "needsHumanReview": false, + "isTerrorRelevant": true, + "corroboratingSources": [], + "corroborationCount": 0, + "isDuplicateOf": null + }, + { + "id": "unoct-news-4", + "fusedIncidentId": "fusion-7f525bc1814f0697", + "title": "UN Rights Chief Urges Action To End Impunity And Address Disappearances In Mexico", + "location": "Mexico", + "region": "international", + "lane": "oversight", + "severity": "moderate", + "status": "Update", + "actor": "UN Office of Counter-Terrorism (UNOCT) - News", + "subject": "UN Office of Counter-Terrorism (UNOCT) - News", + "happenedWhen": "23 Apr 2026, 18:55", + "confidence": "Verified official source update", + "confidenceScore": 0.84, + "summary": "Mexican authorities must intensify efforts to end impunity, protect journalists and human rights defenders, and address the country’s “painful” crisis of disappearances, UN human rights chief Volker Türk has said. Speaking at the conclusion of an official visi", + "aiSummary": "UN Office of Counter-Terrorism (UNOCT) - 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": "Mexican authorities must intensify efforts to end impunity, protect journalists and human rights defenders, and address the country’s “painful” crisis of disappearances, UN human rights chief Volker Türk has said. Speaking at the conclusion of an official visit to Mexico, the High Commissioner warned that violence remains a serious concern, with women rights defenders and reporters facing heightened risks, particularly when confronting organized crime, corruption or gender-based violence. Organised crime, fuelled by drug trafficking and the influx of arms, continues to have a major impact on public security and the enjoyment of human rights, he said, calling for the strengthening of civilian institutions and accountability mechanisms. “An end to impunity, justice for crimes committed and effective accountability processes are essential,” he declared, adding that impunity had emerged as a consistent demand in his meetings with victims and civil society groups. Disappearances remain “one of the most serious and painful human rights challenges” in the country, he continued, praising the courage of families and collectives, many led by women, who search for their loved ones, often at great personal risk. He called for stronger search mechanisms, forensic identification, protection measures and investigative efforts, highlighting the potential of Mexico’s legal framework and the recent adoption of an updated national search protocol. The UN rights chief expressed concern over persistently high levels of gender-based violence and femicides, noting that the rate of women killed in the country “shocks our conscience.” During his trip, Mr. Türk met with senior officials from all branches of government, including President Claudia Sheinbaum, members of the Cabinet, legislators an", + "peopleInvolved": [], + "source": "UN Office of Counter-Terrorism (UNOCT) - News", + "sourceUrl": "https://news.un.org/feed/view/en/story/2026/04/1167371", + "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, 18:55", + "lat": 23.6345, + "lng": -102.5528, + "major": false, + "publishedAt": "2026-04-23T17:55:31.000Z", + "keywordHits": [], + "terrorismHits": [], + "eventType": "oversight_update", + "geoPrecision": "region", + "isOfficial": true, + "priorityScore": 3.6, + "freshnessBucket": 2, + "freshUntil": "2026-05-01T17:55:31.000Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [ { - "fusedIncidentId": "fusion-3a4bc58bbd6da4d2", - "source": "GOV.UK a Proscribed Terrorist Organisations", - "sourceUrl": "https://www.gov.uk/help/cookies", + "fusedIncidentId": "fusion-7f525bc1814f0697", + "source": "UN Office of Counter-Terrorism (UNOCT) - News", + "sourceUrl": "https://news.un.org/feed/view/en/story/2026/04/1167371", "sourceTier": "context", "reliabilityProfile": "official_context", - "publishedAt": null, + "publishedAt": "2026-04-23T17:55:31.000Z", "confidence": "Verified official source update" } ], "corroborationCount": 1, - "isDuplicateOf": "fusion-3a4bc58bbd6da4d2" + "isDuplicateOf": "fusion-7f525bc1814f0697" }, { - "id": "eu-council-terrorism-sanctions-0", - "fusedIncidentId": "fusion-8696f3a10b432c52", - "title": "The EU'S Response To Terrorism", - "location": "Europe", - "region": "eu", - "lane": "sanctions", - "severity": "elevated", + "id": "unoct-news-3", + "fusedIncidentId": "fusion-3a4054e9468e5925", + "title": "WHO Says Billions Saw Health Gains In 2025 Despite Funding Cuts", + "location": "Palestine", + "region": "international", + "lane": "oversight", + "severity": "moderate", "status": "Update", - "actor": "Council of the EU - Sanctions Against Terrorism", - "subject": "Council of the EU - Sanctions Against Terrorism", - "happenedWhen": "Source date unconfirmed", + "actor": "UN Office of Counter-Terrorism (UNOCT) - News", + "subject": "UN Office of Counter-Terrorism (UNOCT) - News", + "happenedWhen": "23 Apr 2026, 18:51", "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", + "confidenceScore": 0.84, + "summary": "Despite significant funding cuts, the World Health Organization (WHO) was able to support significant national health gains for hundreds of millions of people in 2025, according to its annual Results Report released on Thursday. \"The Results Report 2025 shows ", + "aiSummary": "UN Office of Counter-Terrorism (UNOCT) - 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": "Despite significant funding cuts, the World Health Organization (WHO) was able to support significant national health gains for hundreds of millions of people in 2025, according to its annual Results Report released on Thursday. \"The Results Report 2025 shows that with support from WHO and partners, countries have delivered tangible benefits for millions of people,\" said WHO Director-General Tedros Adhanom Ghebreyesus. \"At the same time, these gains cannot be taken for granted.\" The report, released ahead of the World Health Assembly next month, finds progress on three fronts: expanding access to essential health services; strengthening protection from health emergencies; and improving overall wellbeing. Yet roughly half of its output targets went unmet, with financial pressures and internal restructuring taking a toll on delivery – and the world remains off track to meet the health-related Sustainable Development Goals (SDGs) by 2030. Though WHO failed to reach it’s 'Triple Billion' goals, which aimed for one billion more people to benefit in each of the three fronts by the end of 2025 compared with 2018, there was nonetheless substantial progress. An estimated 567 million additional people were covered by essential health services in 2025, up 136 million from 2024. Around 698 million more people were better protected from health emergencies, a rise of 61 million on the previous year. And, 1.75 billion additional people were living healthier lives, a jump of 300 million since 2024. Progress toward universal health coverage was driven by expanded services for communicable diseases including HIV and tuberculosis, improved sanitation and a growing health workforce. Gaps remain, however, in diabetes management, measles surveillance and financial protection. Gains in emerge", "peopleInvolved": [], - "source": "Council of the EU - Sanctions Against Terrorism", - "sourceUrl": "https://www.consilium.europa.eu/en/policies/fight-against-terrorism/", + "source": "UN Office of Counter-Terrorism (UNOCT) - News", + "sourceUrl": "https://news.un.org/feed/view/en/story/2026/04/1167370", "sourceTier": "context", "reliabilityProfile": "official_context", "incidentTrack": "", - "laneReason": "Sanctions change with terrorism relevance.", - "queueReason": "Sanctions change with terrorism relevance.", - "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": "23 Apr 2026, 18:51", + "lat": 31.9522, + "lng": 35.2332, "major": false, - "publishedAt": null, - "keywordHits": [ - "terrorism" - ], - "terrorismHits": [ - "terrorism" - ], - "eventType": "sanctions_update", - "geoPrecision": "country", + "publishedAt": "2026-04-23T17:51:27.000Z", + "keywordHits": [], + "terrorismHits": [], + "eventType": "oversight_update", + "geoPrecision": "region", "isOfficial": true, - "priorityScore": 3.2, - "freshnessBucket": 1, - "freshUntil": "2026-04-15T20:35:56.070Z", + "priorityScore": 3.6, + "freshnessBucket": 2, + "freshUntil": "2026-05-01T17:51:27.000Z", "needsHumanReview": false, "isTerrorRelevant": true, - "corroboratingSources": [], - "corroborationCount": 0, - "isDuplicateOf": null + "corroboratingSources": [ + { + "fusedIncidentId": "fusion-3a4054e9468e5925", + "source": "UN Office of Counter-Terrorism (UNOCT) - News", + "sourceUrl": "https://news.un.org/feed/view/en/story/2026/04/1167370", + "sourceTier": "context", + "reliabilityProfile": "official_context", + "publishedAt": "2026-04-23T17:51:27.000Z", + "confidence": "Verified official source update" + } + ], + "corroborationCount": 1, + "isDuplicateOf": "fusion-3a4054e9468e5925" }, { - "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", + "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": "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": "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)", + "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": "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", + "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": "Sanctions change with terrorism relevance.", - "queueReason": "Sanctions change with terrorism relevance.", - "time": "Source date unconfirmed", - "lat": 54, - "lng": 15, + "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": null, + "publishedAt": "2026-04-16T23:46:13.000Z", "keywordHits": [ - "terrorism" + "extremist" ], "terrorismHits": [ - "terrorism" + "extremist" ], - "eventType": "sanctions_update", + "eventType": "prevention_update", "geoPrecision": "country", - "isOfficial": true, - "priorityScore": 3.2, - "freshnessBucket": 1, - "freshUntil": "2026-04-15T20:35:56.070Z", + "isOfficial": false, + "priorityScore": 3.3, + "freshnessBucket": 2, + "freshUntil": "2026-04-24T23:46:13.000Z", "needsHumanReview": false, "isTerrorRelevant": true, - "corroboratingSources": [], - "corroborationCount": 0, - "isDuplicateOf": null + "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" + } + ], + "corroborationCount": 1, + "isDuplicateOf": "fusion-f866c9fb68940c92" }, { - "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", + "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": "Perspectives on Terrorism (ICCT) a Journal", - "subject": "Perspectives on Terrorism (ICCT) a Journal", - "happenedWhen": "Source date unconfirmed", + "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.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", + "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": "Perspectives on Terrorism (ICCT) a Journal", - "sourceUrl": "https://pt.icct.nl/article/lexical-patterns-non-violent-extremist-content-online-linguistic-comparison-jihadist-and", + "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.", - "time": "Source date unconfirmed", - "lat": 54, - "lng": 15, + "queueBucket": "context", + "time": "14 Apr 2026, 12:24", + "lat": 31.7683, + "lng": 35.2137, "major": false, - "publishedAt": null, + "publishedAt": "2026-04-14T11:24:00.000Z", "keywordHits": [ - "terrorism", - "extremist", - "islamic state", - "al-qaeda" + "terrorism" ], "terrorismHits": [ - "terrorism", - "extremist", - "jihadist", - "islamic state", - "al-qaeda" + "terrorism" ], "eventType": "context_update", - "geoPrecision": "country", + "geoPrecision": "city", "isOfficial": false, - "priorityScore": 3.1, - "freshnessBucket": 1, - "freshUntil": "2026-04-09T21:34:40.140Z", + "priorityScore": 3.3, + "freshnessBucket": 2, + "freshUntil": "2026-04-18T11:24:00.000Z", "needsHumanReview": false, "isTerrorRelevant": true, - "corroboratingSources": [], - "corroborationCount": 0, - "isDuplicateOf": null + "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" + } + ], + "corroborationCount": 1, + "isDuplicateOf": "fusion-509851d9a90678ff" }, { - "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", - "severity": "moderate", - "status": "Update", - "actor": "National Cyber Security Centre (UK) a News", - "subject": "National Cyber Security Centre (UK) a News", + "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", "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.", - "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", - "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", + "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": 54.5, - "lng": -2.5, + "lat": 51.5722, + "lng": -0.1941, "major": false, "publishedAt": "2026-04-21T12:00:00.000Z", - "keywordHits": [], - "terrorismHits": [], - "eventType": "oversight_update", - "geoPrecision": "country", + "keywordHits": [ + "terrorism", + "attack", + "attacks", + "arrest", + "arrested", + "charged", + "charged with" + ], + "terrorismHits": [ + "terrorism", + "counter terrorism" + ], + "eventType": "charge", + "geoPrecision": "region", "isOfficial": true, - "priorityScore": 2.95, + "priorityScore": 12.1, "freshnessBucket": 1, - "freshUntil": "2026-04-29T12:00:00.000Z", + "freshUntil": "2026-05-05T12:00:00.000Z", "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", - "sourceTier": "context", - "reliabilityProfile": "official_context", + "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", "confidence": "Verified official source update" } ], - "corroborationCount": 1, - "isDuplicateOf": "fusion-7231c61429475334" + "corroborationCount": 2, + "isDuplicateOf": "fusion-79c8b34c14d07dd5" }, { - "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": "MI5 (Security Service) a UK Threat Level", - "subject": "MI5 (Security Service) a UK Threat Level", - "happenedWhen": "Source date unconfirmed", + "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", "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.", - "peopleInvolved": [], - "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.7877, - "lng": -6.4923, + "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, "major": false, - "publishedAt": null, + "publishedAt": "2026-04-03T21:10:00.000Z", "keywordHits": [ "terrorism", - "threat" + "attack", + "arrested", + "charged" ], "terrorismHits": [ - "terrorism" + "terrorism", + "counter terrorism" ], - "eventType": "prevention_update", + "eventType": "charge", "geoPrecision": "region", "isOfficial": true, - "priorityScore": 2.8, + "priorityScore": 11.5, "freshnessBucket": 1, - "freshUntil": "2026-04-14T09:11:31.394Z", + "freshUntil": "2026-04-17T21:10:00.000Z", "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, + "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" - } - ], - "corroborationCount": 1, - "isDuplicateOf": "fusion-ca887123e34a6fd9" - }, + }, + { + "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", + "confidence": "Verified official source update" + } + ], + "corroborationCount": 2, + "isDuplicateOf": "fusion-61fc8ba12c50b250" + }, { - "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": "Europol a Newsroom (RSS)", - "subject": "Europol a Newsroom (RSS)", - "happenedWhen": "Source date unconfirmed", + "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", "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”....", + "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.", "peopleInvolved": [], - "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": "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, + "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, "major": false, - "publishedAt": null, + "publishedAt": "2026-04-15T19:43:38.000Z", "keywordHits": [ "terrorism", - "extremist" + "attack", + "arrested" ], "terrorismHits": [ "terrorism", - "counter terrorism", - "extremist" + "counter terrorism" ], - "eventType": "context_update", + "eventType": "arrest", "geoPrecision": "region", "isOfficial": true, - "priorityScore": 2.8, + "priorityScore": 10.9, "freshnessBucket": 1, - "freshUntil": "2026-04-10T09:11:31.394Z", + "freshUntil": "2026-04-29T19:43:38.000Z", "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, + "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", "confidence": "Verified official source update" } ], "corroborationCount": 1, - "isDuplicateOf": "fusion-54de5f35957e93e0" + "isDuplicateOf": "fusion-4d5e7ff00941dc7c" }, { - "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": "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", "status": "Update", - "actor": "Europol a Newsroom (RSS)", - "subject": "Europol a Newsroom (RSS)", + "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.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...", + "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": "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 Department of Homeland Security - News", + "sourceUrl": "https://www.dhs.gov/national-terrorism-advisory-system", "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" + "terrorism", + "attack", + "attacks", + "extremist", + "threat" + ], + "terrorismHits": [ + "terrorism", + "terrorist", + "extremist" ], - "terrorismHits": [], "eventType": "context_update", "geoPrecision": "region", "isOfficial": true, - "priorityScore": 2.8, + "priorityScore": 4.6, "freshnessBucket": 1, - "freshUntil": "2026-04-10T09:11:31.394Z", + "freshUntil": "2026-04-10T05:26:53.285Z", "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", + "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, @@ -7998,147 +8220,62 @@ } ], "corroborationCount": 1, - "isDuplicateOf": "fusion-fdfc382e39e41049" + "isDuplicateOf": "fusion-e8a752a50499f3b2" }, { - "id": "ocam-be-english-0", - "fusedIncidentId": "fusion-38385fd51e74a23e", - "title": "What Do We Do? - CUTA", - "location": "Belgium", - "region": "europe", + "id": "protectuk-1", + "fusedIncidentId": "fusion-cbf1ce4f666d836c", + "title": "ACT For Local Authorities | ProtectUK", + "location": "United Kingdom", + "region": "uk", "lane": "prevention", "severity": "moderate", "status": "Update", - "actor": "CUTA (Belgium) threat analysis", - "subject": "CUTA (Belgium) threat analysis", + "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": "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", + "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": "CUTA (Belgium) threat analysis", - "sourceUrl": "https://ocad.belgium.be/en/what-do-we-do/#the-common-database", + "source": "ProtectUK (NPSA) a Protective Security Guidance", + "sourceUrl": "https://www.protectuk.police.uk/act-local-authorities", "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": 50.5039, - "lng": 4.4699, + "lat": 54.5, + "lng": -2.5, "major": false, "publishedAt": null, "keywordHits": [ "terrorism", + "attack", + "attacks", "threat" ], "terrorismHits": [ "terrorism", - "extremism", - "radicalisation", - "radicalization" + "counter terrorism", + "terrorist" ], "eventType": "prevention_update", - "geoPrecision": "region", + "geoPrecision": "country", "isOfficial": true, - "priorityScore": 2.8, + "priorityScore": 4, "freshnessBucket": 1, "freshUntil": "2026-04-14T09:11:31.394Z", "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", - "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": "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": "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": "ProtectUK (NPSA) a Protective Security Guidance", - "sourceUrl": "https://www.protectuk.police.uk/resources/741", - "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.5, - "lng": -2.5, - "major": false, - "publishedAt": null, - "keywordHits": [ - "explosive", - "device" - ], - "terrorismHits": [ - "terrorist" - ], - "eventType": "prevention_update", - "geoPrecision": "country", - "isOfficial": true, - "priorityScore": 2.8, - "freshnessBucket": 1, - "freshUntil": "2026-04-14T09:11:31.394Z", - "needsHumanReview": false, - "isTerrorRelevant": true, - "corroboratingSources": [ - { - "fusedIncidentId": "fusion-2c2a17e25f3076d3", + "fusedIncidentId": "fusion-cbf1ce4f666d836c", "source": "ProtectUK (NPSA) a Protective Security Guidance", - "sourceUrl": "https://www.protectuk.police.uk/resources/741", + "sourceUrl": "https://www.protectuk.police.uk/act-local-authorities", "sourceTier": "context", "reliabilityProfile": "official_context", "publishedAt": null, @@ -8146,49 +8283,57 @@ } ], "corroborationCount": 1, - "isDuplicateOf": "fusion-2c2a17e25f3076d3" + "isDuplicateOf": "fusion-cbf1ce4f666d836c" }, { - "id": "eurojust-press-news-html-2", - "fusedIncidentId": "fusion-44be55f078401d1a", - "title": "Global Actions Hit Cocaine Traffickers In Brazil", - "location": "France", - "region": "eu", + "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": "Eurojust - Press Releases and News", - "subject": "Eurojust - Press Releases and News", + "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 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", + "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": "Eurojust - Press Releases and News", - "sourceUrl": "https://www.eurojust.europa.eu/news/global-actions-hit-cocaine-traffickers-brazil", + "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.", "time": "Source date unconfirmed", - "lat": 46.6034, - "lng": 1.8883, + "lat": 39.8283, + "lng": -98.5795, "major": false, "publishedAt": null, "keywordHits": [ + "terrorism", + "attacks", "arrest", - "arrested" + "extremist" + ], + "terrorismHits": [ + "terrorism", + "counter terrorism", + "terrorist", + "extremist", + "extremism" ], - "terrorismHits": [], "eventType": "context_update", "geoPrecision": "region", "isOfficial": true, - "priorityScore": 2.8, + "priorityScore": 4, "freshnessBucket": 1, - "freshUntil": "2026-04-10T09:11:31.394Z", + "freshUntil": "2026-04-09T14:36:11.004Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [], @@ -8196,102 +8341,115 @@ "isDuplicateOf": null }, { - "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", + "id": "uk-ncsc-news-4", + "fusedIncidentId": "fusion-5ad99d9f874d567d", + "title": "World-First NCSC-Engineered Device Secures Vulnerable Display Links", + "location": "United Kingdom", + "region": "uk", + "lane": "oversight", "severity": "moderate", "status": "Update", - "actor": "Eurojust - Press Releases and News", - "subject": "Eurojust - Press Releases and News", - "happenedWhen": "Source date unconfirmed", + "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.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. ", + "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": "Eurojust - Press Releases and News", - "sourceUrl": "https://www.eurojust.europa.eu/news/financial-crime-investigation-culminates-arrests-and-frozen-assets-high-value", + "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": "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": 52.0705, - "lng": 4.3007, + "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": null, + "publishedAt": "2026-04-22T12:00:00.000Z", "keywordHits": [ - "suspect", - "arrested" + "device" ], "terrorismHits": [], - "eventType": "context_update", - "geoPrecision": "region", + "eventType": "oversight_update", + "geoPrecision": "country", "isOfficial": true, - "priorityScore": 2.8, + "priorityScore": 3.55, "freshnessBucket": 1, - "freshUntil": "2026-04-10T09:11:31.394Z", + "freshUntil": "2026-04-30T12:00:00.000Z", "needsHumanReview": false, "isTerrorRelevant": true, - "corroboratingSources": [], - "corroborationCount": 0, - "isDuplicateOf": null + "corroboratingSources": [ + { + "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-5ad99d9f874d567d" }, { - "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", + "id": "pst-no-english-2", + "fusedIncidentId": "fusion-58743b394d28e45f", + "title": "Read More About Our Areas Of Responsibility.", + "location": "Europe", + "region": "europe", + "lane": "prevention", "severity": "moderate", "status": "Update", - "actor": "Independent Reviewer of Terrorism Legislation a Reports", - "subject": "Independent Reviewer of Terrorism Legislation a Reports", + "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": "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": "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": "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": "PST (Norway) English reporting page", + "sourceUrl": "http://www-prod.pst.no/om-pst/", "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": "Prevention, radicalisation, or analytical context source.", + "queueReason": "Prevention, radicalisation, or analytical context source.", "time": "Source date unconfirmed", - "lat": 54.5, - "lng": -2.5, + "lat": 54, + "lng": 15, "major": false, "publishedAt": null, "keywordHits": [ "terrorism", + "attacks", "threat" ], "terrorismHits": [ - "terrorism" + "terrorism", + "extremism", + "radicalisation" ], - "eventType": "oversight_update", + "eventType": "prevention_update", "geoPrecision": "country", "isOfficial": true, - "priorityScore": 2.8, + "priorityScore": 3.4, "freshnessBucket": 1, - "freshUntil": "2026-04-13T23:36:29.665Z", + "freshUntil": "2026-04-14T09:11:31.394Z", "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", + "fusedIncidentId": "fusion-58743b394d28e45f", + "source": "PST (Norway) English reporting page", + "sourceUrl": "http://www-prod.pst.no/om-pst/", "sourceTier": "context", "reliabilityProfile": "official_context", "publishedAt": null, @@ -8299,159 +8457,133 @@ } ], "corroborationCount": 1, - "isDuplicateOf": "fusion-88b4648c71de081d" + "isDuplicateOf": "fusion-58743b394d28e45f" }, { - "id": "eu-olaf-news-1", - "fusedIncidentId": "fusion-b7d3f8ceab069d7b", - "title": "HOME", - "location": "Europe", - "region": "eu", - "lane": "oversight", + "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": "OLAF (EU Anti-Fraud Office) a News", - "subject": "OLAF (EU Anti-Fraud Office) a News", + "actor": "GOV.UK - Terrorism National Emergency", + "subject": "GOV.UK - Terrorism National Emergency", "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", + "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": "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", + "source": "GOV.UK - Terrorism National Emergency", + "sourceUrl": "https://www.mi5.gov.uk/threat-levels", "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": "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": [ - "arrest", + "terrorism", + "attack", "threat" ], - "terrorismHits": [], - "eventType": "oversight_update", - "geoPrecision": "country", - "isOfficial": true, - "priorityScore": 2.8, - "freshnessBucket": 1, - "freshUntil": "2026-04-13T15:35:04.347Z", - "needsHumanReview": false, - "isTerrorRelevant": true, - "corroboratingSources": [], - "corroborationCount": 0, - "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", - "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": "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": "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": 39.8283, - "lng": -98.5795, - "major": false, - "publishedAt": null, - "keywordHits": [ - "isis", - "islamic state" - ], "terrorismHits": [ - "isis", - "islamic state" + "terrorism", + "terrorist" ], - "eventType": "context_update", + "eventType": "prevention_update", "geoPrecision": "region", "isOfficial": true, - "priorityScore": 2.8, + "priorityScore": 3.4, "freshnessBucket": 1, - "freshUntil": "2026-04-09T14:36:11.004Z", + "freshUntil": "2026-04-14T09:11:31.394Z", "needsHumanReview": false, "isTerrorRelevant": true, - "corroboratingSources": [], - "corroborationCount": 0, - "isDuplicateOf": null + "corroboratingSources": [ + { + "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": 1, + "isDuplicateOf": "fusion-ab45d0eca7a23669" }, { - "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": "gov-uk-terrorism-national-emergency-2", + "fusedIncidentId": "fusion-8dee7cd7618b5f1e", + "title": "Home", + "location": "Northern Ireland, UK", + "region": "uk", + "lane": "prevention", "severity": "moderate", "status": "Update", - "actor": "US State Department a Bureau of Counterterrorism", - "subject": "US State Department a Bureau of Counterterrorism", + "actor": "GOV.UK - Terrorism National Emergency", + "subject": "GOV.UK - Terrorism National Emergency", "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", + "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": "US State Department a Bureau of Counterterrorism", - "sourceUrl": "https://www.state.gov/country-reports-on-terrorism/", + "source": "GOV.UK - Terrorism National Emergency", + "sourceUrl": "https://www.gov.uk/terrorism-national-emergency/print", "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": "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.7877, + "lng": -6.4923, "major": false, "publishedAt": null, "keywordHits": [ - "terror", - "terrorism" + "terrorism", + "attack", + "threat" ], "terrorismHits": [ - "terror", "terrorism", "terrorist" ], - "eventType": "context_update", + "eventType": "prevention_update", "geoPrecision": "region", "isOfficial": true, - "priorityScore": 2.8, + "priorityScore": 3.4, "freshnessBucket": 1, - "freshUntil": "2026-04-09T14:36:11.004Z", + "freshUntil": "2026-04-14T09:11:31.394Z", "needsHumanReview": false, "isTerrorRelevant": true, - "corroboratingSources": [], - "corroborationCount": 0, - "isDuplicateOf": null + "corroboratingSources": [ + { + "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": 1, + "isDuplicateOf": "fusion-8dee7cd7618b5f1e" }, { - "id": "gov-uk-proscribed-terrorist-orgs-1", - "fusedIncidentId": "fusion-4c041e3e6cba1329", + "id": "gov-uk-proscribed-terrorist-orgs-0", + "fusedIncidentId": "fusion-3a4bc58bbd6da4d2", "title": "Home", "location": "United Kingdom", "region": "uk", @@ -8463,12 +8595,12 @@ "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", + "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": "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", + "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": "GOV.UK a Proscribed Terrorist Organisations", - "sourceUrl": "https://www.gov.uk/browse/births-deaths-marriages", + "sourceUrl": "https://www.gov.uk/help/cookies", "sourceTier": "context", "reliabilityProfile": "official_context", "incidentTrack": "", @@ -8479,21 +8611,23 @@ "lng": -2.5, "major": false, "publishedAt": null, - "keywordHits": [], + "keywordHits": [ + "device" + ], "terrorismHits": [], "eventType": "sanctions_update", "geoPrecision": "country", "isOfficial": true, - "priorityScore": 2.6, + "priorityScore": 3.2, "freshnessBucket": 1, "freshUntil": "2026-04-16T05:26:53.285Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [ { - "fusedIncidentId": "fusion-4c041e3e6cba1329", + "fusedIncidentId": "fusion-3a4bc58bbd6da4d2", "source": "GOV.UK a Proscribed Terrorist Organisations", - "sourceUrl": "https://www.gov.uk/browse/births-deaths-marriages", + "sourceUrl": "https://www.gov.uk/help/cookies", "sourceTier": "context", "reliabilityProfile": "official_context", "publishedAt": null, @@ -8501,156 +8635,153 @@ } ], "corroborationCount": 1, - "isDuplicateOf": "fusion-4c041e3e6cba1329" + "isDuplicateOf": "fusion-3a4bc58bbd6da4d2" }, { - "id": "gov-uk-proscribed-terrorist-orgs-2", - "fusedIncidentId": "fusion-5ca9109524e5c684", - "title": "Home", - "location": "United Kingdom", - "region": "uk", + "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": "GOV.UK a Proscribed Terrorist Organisations", - "subject": "GOV.UK a Proscribed Terrorist Organisations", + "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": "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", + "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": "GOV.UK a Proscribed Terrorist Organisations", - "sourceUrl": "https://www.gov.uk/browse/business", + "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": "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": [], - "terrorismHits": [], + "keywordHits": [ + "terrorism" + ], + "terrorismHits": [ + "terrorism" + ], "eventType": "sanctions_update", "geoPrecision": "country", "isOfficial": true, - "priorityScore": 2.6, + "priorityScore": 3.2, "freshnessBucket": 1, - "freshUntil": "2026-04-16T05:26:53.285Z", + "freshUntil": "2026-04-15T20:35:56.070Z", "needsHumanReview": false, "isTerrorRelevant": true, - "corroboratingSources": [ - { - "fusedIncidentId": "fusion-5ca9109524e5c684", - "source": "GOV.UK a Proscribed Terrorist Organisations", - "sourceUrl": "https://www.gov.uk/browse/business", - "sourceTier": "context", - "reliabilityProfile": "official_context", - "publishedAt": null, - "confidence": "Verified official source update" - } - ], - "corroborationCount": 1, - "isDuplicateOf": "fusion-5ca9109524e5c684" + "corroboratingSources": [], + "corroborationCount": 0, + "isDuplicateOf": null }, { - "id": "gov-uk-proscribed-terrorist-orgs-3", - "fusedIncidentId": "fusion-05de7176aa2b9f85", - "title": "Home", - "location": "United Kingdom", - "region": "uk", + "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": "GOV.UK a Proscribed Terrorist Organisations", - "subject": "GOV.UK a Proscribed Terrorist Organisations", + "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": "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": "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": "GOV.UK a Proscribed Terrorist Organisations", - "sourceUrl": "https://www.gov.uk/browse/childcare-parenting", + "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": "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": [], - "terrorismHits": [], + "keywordHits": [ + "terrorism" + ], + "terrorismHits": [ + "terrorism" + ], "eventType": "sanctions_update", "geoPrecision": "country", "isOfficial": true, - "priorityScore": 2.6, + "priorityScore": 3.2, "freshnessBucket": 1, - "freshUntil": "2026-04-16T05:26:53.285Z", + "freshUntil": "2026-04-15T20:35:56.070Z", "needsHumanReview": false, "isTerrorRelevant": true, - "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" + "corroboratingSources": [], + "corroborationCount": 0, + "isDuplicateOf": null }, { - "id": "eu-council-terrorism-sanctions-1", - "fusedIncidentId": "fusion-900f214cab81c610", - "title": "Fight Against Money Laundering And Terrorist Financing In The EU", + "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": "eu", - "lane": "sanctions", - "severity": "elevated", + "region": "europe", + "lane": "context", + "severity": "moderate", "status": "Update", - "actor": "Council of the EU - Sanctions Against Terrorism", - "subject": "Council of the EU - Sanctions Against Terrorism", + "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.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", + "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": "Council of the EU - Sanctions Against Terrorism", - "sourceUrl": "https://www.consilium.europa.eu/en/policies/fight-against-terrorist-financing/", - "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": "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, "major": false, "publishedAt": null, - "keywordHits": [], + "keywordHits": [ + "terrorism", + "extremist", + "islamic state", + "al-qaeda" + ], "terrorismHits": [ - "terrorist" + "terrorism", + "extremist", + "jihadist", + "islamic state", + "al-qaeda" ], - "eventType": "sanctions_update", + "eventType": "context_update", "geoPrecision": "country", - "isOfficial": true, - "priorityScore": 2.6, + "isOfficial": false, + "priorityScore": 3.1, "freshnessBucket": 1, - "freshUntil": "2026-04-15T20:35:56.070Z", + "freshUntil": "2026-04-09T21:34:40.140Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [], @@ -8658,276 +8789,124 @@ "isDuplicateOf": null }, { - "id": "eu-council-terrorism-sanctions-2", - "fusedIncidentId": "fusion-da9e4a491e5ac721", - "title": "Types Of Sanctions The EU Adopts", - "location": "Europe", - "region": "eu", - "lane": "sanctions", - "severity": "elevated", + "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", + "severity": "moderate", "status": "Update", - "actor": "Council of the EU - Sanctions Against Terrorism", - "subject": "Council of the EU - Sanctions Against Terrorism", - "happenedWhen": "Source date unconfirmed", + "actor": "National Cyber Security Centre (UK) a News", + "subject": "National Cyber Security Centre (UK) a News", + "happenedWhen": "21 Apr 2026, 13:00", "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", + "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.", "peopleInvolved": [], - "source": "Council of the EU - Sanctions Against Terrorism", - "sourceUrl": "https://www.consilium.europa.eu/en/policies/sanctions-different-types/", + "source": "National Cyber Security Centre (UK) a News", + "sourceUrl": "https://www.ncsc.gov.uk/news/cyber-chief-uk-faces-perfect-storm-for-cyber-security", "sourceTier": "context", "reliabilityProfile": "official_context", "incidentTrack": "", - "laneReason": "Sanctions change with terrorism relevance.", - "queueReason": "Sanctions change with terrorism relevance.", - "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": "21 Apr 2026, 13:00", + "lat": 54.5, + "lng": -2.5, "major": false, - "publishedAt": null, + "publishedAt": "2026-04-21T12:00:00.000Z", "keywordHits": [], "terrorismHits": [], - "eventType": "sanctions_update", + "eventType": "oversight_update", "geoPrecision": "country", "isOfficial": true, - "priorityScore": 2.6, + "priorityScore": 2.95, "freshnessBucket": 1, - "freshUntil": "2026-04-15T20:35:56.070Z", + "freshUntil": "2026-04-29T12:00:00.000Z", "needsHumanReview": false, "isTerrorRelevant": true, - "corroboratingSources": [], - "corroborationCount": 0, - "isDuplicateOf": null + "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", + "sourceTier": "context", + "reliabilityProfile": "official_context", + "publishedAt": "2026-04-21T12:00:00.000Z", + "confidence": "Verified official source update" + } + ], + "corroborationCount": 1, + "isDuplicateOf": "fusion-7231c61429475334" }, { - "id": "isd-global-publications-3", - "fusedIncidentId": "fusion-21b3cc849afa8f51", - "title": "Far-Right Extremism - Institute For Strategic Dialogue", - "location": "Canada", - "region": "eu", + "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": "ISD - Publications", - "subject": "ISD - Publications", + "actor": "MI5 (Security Service) a UK Threat Level", + "subject": "MI5 (Security Service) a UK Threat Level", "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": "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": "ISD - Publications", - "sourceUrl": "https://www.isdglobal.org/our-expertise/terrorism-and-extremism/far-right-extremism/", - "sourceTier": "research", - "reliabilityProfile": "specialist_research", + "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": 56.1304, - "lng": -106.3468, + "lat": 54.7877, + "lng": -6.4923, "major": false, "publishedAt": null, "keywordHits": [ "terrorism", - "arrested", - "extremist" + "threat" ], "terrorismHits": [ - "terrorism", - "extremist", - "extremism", - "far-right extremist" + "terrorism" ], "eventType": "prevention_update", "geoPrecision": "region", - "isOfficial": false, - "priorityScore": 2.5, + "isOfficial": true, + "priorityScore": 2.8, "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 + "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" }, { - "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" - ], - "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 - }, - { - "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": "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": "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.", - "queueBucket": "prevention", - "time": "15 Apr 2026, 00:42", - "lat": -0.7893, - "lng": 113.9213, - "major": false, - "publishedAt": "2026-04-14T23:42:14.000Z", - "keywordHits": [ - "attacks" - ], - "terrorismHits": [ - "terrorist" - ], - "eventType": "prevention_update", - "geoPrecision": "region", - "isOfficial": false, - "priorityScore": 2.3, - "freshnessBucket": 1, - "freshUntil": "2026-04-22T23:42:14.000Z", - "needsHumanReview": false, - "isTerrorRelevant": true, - "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": "parliament-public-bills-rss-0", - "fusedIncidentId": "fusion-a3d6ee7188e5d198", - "title": "Crime And Policing Bill", - "location": "United Kingdom", - "region": "uk", - "lane": "oversight", - "severity": "moderate", - "status": "Update", - "actor": "Parliament - Public Bills RSS", - "subject": "Parliament - Public Bills RSS", - "happenedWhen": "Source date unconfirmed", - "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.", - "peopleInvolved": [], - "source": "Parliament - Public Bills RSS", - "sourceUrl": "https://bills.parliament.uk/bills/3938", - "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", - "lat": 54.5, - "lng": -2.5, - "major": false, - "publishedAt": null, - "keywordHits": [ - "terrorism" - ], - "terrorismHits": [ - "terrorism" - ], - "eventType": "oversight_update", - "geoPrecision": "country", - "isOfficial": true, - "priorityScore": 2.2, - "freshnessBucket": 1, - "freshUntil": "2026-04-14T09:11:31.394Z", - "needsHumanReview": false, - "isTerrorRelevant": true, - "corroboratingSources": [ - { - "fusedIncidentId": "fusion-a3d6ee7188e5d198", - "source": "Parliament - Public Bills RSS", - "sourceUrl": "https://bills.parliament.uk/bills/3938", - "sourceTier": "context", - "reliabilityProfile": "official_context", - "publishedAt": null, - "confidence": "Verified official source update" - } - ], - "corroborationCount": 1, - "isDuplicateOf": "fusion-a3d6ee7188e5d198" - }, - { - "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", + "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", @@ -8937,39 +8916,44 @@ "happenedWhen": "Source date unconfirmed", "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", + "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": "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.", + "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": "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", + "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": "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, + "lat": 56.1304, + "lng": -106.3468, "major": false, "publishedAt": null, "keywordHits": [ - "arrested" + "terrorism", + "extremist" + ], + "terrorismHits": [ + "terrorism", + "counter terrorism", + "extremist" ], - "terrorismHits": [], "eventType": "context_update", - "geoPrecision": "country", + "geoPrecision": "region", "isOfficial": true, - "priorityScore": 2.2, + "priorityScore": 2.8, "freshnessBucket": 1, "freshUntil": "2026-04-10T09:11:31.394Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [ { - "fusedIncidentId": "fusion-3baa21b198f276f4", + "fusedIncidentId": "fusion-54de5f35957e93e0", "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", + "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, @@ -8977,13 +8961,13 @@ } ], "corroborationCount": 1, - "isDuplicateOf": "fusion-3baa21b198f276f4" + "isDuplicateOf": "fusion-54de5f35957e93e0" }, { - "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", + "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", @@ -8993,39 +8977,40 @@ "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", + "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": "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.", + "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": "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", + "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": "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, + "lat": 39.0742, + "lng": 21.8243, "major": false, "publishedAt": null, "keywordHits": [ + "suspect", "arrested" ], "terrorismHits": [], "eventType": "context_update", - "geoPrecision": "country", + "geoPrecision": "region", "isOfficial": true, - "priorityScore": 2.2, + "priorityScore": 2.8, "freshnessBucket": 1, "freshUntil": "2026-04-10T09:11:31.394Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [ { - "fusedIncidentId": "fusion-b837d7a4dac2cb7e", + "fusedIncidentId": "fusion-fdfc382e39e41049", "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", + "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, @@ -9033,115 +9018,147 @@ } ], "corroborationCount": 1, - "isDuplicateOf": "fusion-b837d7a4dac2cb7e" + "isDuplicateOf": "fusion-fdfc382e39e41049" }, { - "id": "gov-uk-prevent-strategy-3", - "fusedIncidentId": "fusion-4149c5459ed69f90", - "title": "Counter-Terrorism And Security Act 2015", - "location": "United Kingdom", - "region": "uk", + "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": "UK Home Office - Prevent duty guidance", - "subject": "UK Home Office - Prevent duty guidance", + "actor": "CUTA (Belgium) threat analysis", + "subject": "CUTA (Belgium) threat analysis", "happenedWhen": "Source date unconfirmed", "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.", + "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": "UK Home Office - Prevent duty guidance", - "sourceUrl": "https://www.legislation.gov.uk/ukpga/2015/6/section/29", + "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": "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": [ - "terrorism" - ], + "terrorism", + "threat" + ], "terrorismHits": [ - "terrorism" + "terrorism", + "extremism", + "radicalisation", + "radicalization" ], "eventType": "prevention_update", - "geoPrecision": "country", + "geoPrecision": "region", "isOfficial": true, - "priorityScore": 2.2, + "priorityScore": 2.8, "freshnessBucket": 1, "freshUntil": "2026-04-14T09:11:31.394Z", "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-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", "sourceTier": "context", "reliabilityProfile": "official_context", "publishedAt": null, "confidence": "Verified official source update" } ], - "corroborationCount": 1, - "isDuplicateOf": "fusion-4149c5459ed69f90" + "corroborationCount": 4, + "isDuplicateOf": "fusion-38385fd51e74a23e" }, { - "id": "sapo-se-english-0", - "fusedIncidentId": "fusion-077a74df844621a3", - "title": "About The Swedish Security Service", - "location": "Europe", - "region": "europe", + "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": "Swedish Security Service English news", - "subject": "Swedish Security Service English news", + "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 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.", + "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": "Swedish Security Service English news", - "sourceUrl": "https://www.sakerhetspolisen.se/ovriga-sidor/other-languages/english-engelska/about-the-swedish-security-service.html", + "source": "ProtectUK (NPSA) a Protective Security Guidance", + "sourceUrl": "https://www.protectuk.police.uk/resources/741", "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.5, + "lng": -2.5, "major": false, "publishedAt": null, "keywordHits": [ - "terrorism" + "explosive", + "device" ], "terrorismHits": [ - "terrorism" + "terrorist" ], "eventType": "prevention_update", "geoPrecision": "country", "isOfficial": true, - "priorityScore": 2.2, + "priorityScore": 2.8, "freshnessBucket": 1, "freshUntil": "2026-04-14T09:11:31.394Z", "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-2c2a17e25f3076d3", + "source": "ProtectUK (NPSA) a Protective Security Guidance", + "sourceUrl": "https://www.protectuk.police.uk/resources/741", "sourceTier": "context", "reliabilityProfile": "official_context", "publishedAt": null, @@ -9149,511 +9166,660 @@ } ], "corroborationCount": 1, - "isDuplicateOf": "fusion-077a74df844621a3" + "isDuplicateOf": "fusion-2c2a17e25f3076d3" }, { - "id": "sapo-se-english-3", - "fusedIncidentId": "fusion-971df53ad3fa6ad8", - "title": "National Centre For Terrorist Threat Assessment", - "location": "Europe", - "region": "europe", - "lane": "prevention", + "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", "status": "Update", - "actor": "Swedish Security Service English news", - "subject": "Swedish Security Service English news", + "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": "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", + "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": "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", + "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": "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, - "lng": 15, + "lat": 46.6034, + "lng": 1.8883, "major": false, "publishedAt": null, "keywordHits": [ - "threat" - ], - "terrorismHits": [ - "terrorist" + "arrest", + "arrested" ], - "eventType": "prevention_update", - "geoPrecision": "country", + "terrorismHits": [], + "eventType": "context_update", + "geoPrecision": "region", "isOfficial": true, - "priorityScore": 2.2, + "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-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" - } + "corroboratingSources": [], + "corroborationCount": 0, + "isDuplicateOf": null + }, + { + "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": "Eurojust - Press Releases and News", + "subject": "Eurojust - Press Releases and News", + "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. ", + "peopleInvolved": [], + "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": 52.0705, + "lng": 4.3007, + "major": false, + "publishedAt": null, + "keywordHits": [ + "suspect", + "arrested" ], - "corroborationCount": 1, - "isDuplicateOf": "fusion-971df53ad3fa6ad8" + "terrorismHits": [], + "eventType": "context_update", + "geoPrecision": "region", + "isOfficial": true, + "priorityScore": 2.8, + "freshnessBucket": 1, + "freshUntil": "2026-04-10T09:11:31.394Z", + "needsHumanReview": false, + "isTerrorRelevant": true, + "corroboratingSources": [], + "corroborationCount": 0, + "isDuplicateOf": null }, { - "id": "gnet-research-2", - "fusedIncidentId": "fusion-d4ce1d4b7d0d4389", - "title": "Beyond The Clan: Identity Formation, Influence, And Extremist Milieux In Online Gaming-Adjacent Spaces", + "id": "independent-reviewer-terrorism-legislation-2", + "fusedIncidentId": "fusion-88b4648c71de081d", + "title": "19.5.25 State Threat And Terrorism Report", "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": "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.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": "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": "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": "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.", + "time": "Source date unconfirmed", "lat": 54.5, "lng": -2.5, "major": false, - "publishedAt": "2026-04-16T23:46:13.000Z", + "publishedAt": null, "keywordHits": [ - "extremist" + "terrorism", + "threat" ], "terrorismHits": [ - "extremist" + "terrorism" ], - "eventType": "prevention_update", + "eventType": "oversight_update", "geoPrecision": "country", - "isOfficial": false, - "priorityScore": -1.7, - "freshnessBucket": 0, - "freshUntil": "2026-04-24T23:46:13.000Z", - "needsHumanReview": false, - "isTerrorRelevant": true, + "isOfficial": true, + "priorityScore": 2.8, + "freshnessBucket": 1, + "freshUntil": "2026-04-13T23:36:29.665Z", + "needsHumanReview": false, + "isTerrorRelevant": true, "corroboratingSources": [ { - "fusedIncidentId": "fusion-d4ce1d4b7d0d4389", - "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-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-d4ce1d4b7d0d4389" + "isDuplicateOf": "fusion-88b4648c71de081d" }, { - "id": "uk-ofsi-blog-0", - "fusedIncidentId": "fusion-6e40ebbbf721ca80", - "title": "OFSI Strategy 2026-29", + "id": "eu-olaf-news-1", + "fusedIncidentId": "fusion-b7d3f8ceab069d7b", + "title": "HOME", + "location": "Europe", + "region": "eu", + "lane": "oversight", + "severity": "moderate", + "status": "Update", + "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": "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": "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": "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, + "lng": 15, + "major": false, + "publishedAt": null, + "keywordHits": [ + "arrest", + "threat" + ], + "terrorismHits": [], + "eventType": "oversight_update", + "geoPrecision": "country", + "isOfficial": true, + "priorityScore": 2.8, + "freshnessBucket": 1, + "freshUntil": "2026-04-13T15:35:04.347Z", + "needsHumanReview": false, + "isTerrorRelevant": true, + "corroboratingSources": [], + "corroborationCount": 0, + "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", + "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": "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": "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": 39.8283, + "lng": -98.5795, + "major": false, + "publishedAt": null, + "keywordHits": [ + "isis", + "islamic state" + ], + "terrorismHits": [ + "isis", + "islamic state" + ], + "eventType": "context_update", + "geoPrecision": "region", + "isOfficial": true, + "priorityScore": 2.8, + "freshnessBucket": 1, + "freshUntil": "2026-04-09T14:36:11.004Z", + "needsHumanReview": false, + "isTerrorRelevant": true, + "corroboratingSources": [], + "corroborationCount": 0, + "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", + "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", + "peopleInvolved": [], + "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.8283, + "lng": -98.5795, + "major": false, + "publishedAt": null, + "keywordHits": [ + "terror", + "terrorism" + ], + "terrorismHits": [ + "terror", + "terrorism", + "terrorist" + ], + "eventType": "context_update", + "geoPrecision": "region", + "isOfficial": true, + "priorityScore": 2.8, + "freshnessBucket": 1, + "freshUntil": "2026-04-09T14:36:11.004Z", + "needsHumanReview": false, + "isTerrorRelevant": true, + "corroboratingSources": [], + "corroborationCount": 0, + "isDuplicateOf": null + }, + { + "id": "gov-uk-proscribed-terrorist-orgs-1", + "fusedIncidentId": "fusion-4c041e3e6cba1329", + "title": "Home", "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": "15 Apr 2026, 12:02", + "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.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 …", + "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", "peopleInvolved": [], - "source": "Office of Financial Sanctions Implementation (OFSI) a Blog", - "sourceUrl": "https://ofsi.blog.gov.uk/2026/04/15/ofsi-strategy-2026-29/", + "source": "GOV.UK a Proscribed Terrorist Organisations", + "sourceUrl": "https://www.gov.uk/browse/births-deaths-marriages", "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", + "time": "Source date unconfirmed", "lat": 54.5, "lng": -2.5, "major": false, - "publishedAt": "2026-04-15T11:02:35.000Z", + "publishedAt": null, "keywordHits": [], "terrorismHits": [], "eventType": "sanctions_update", "geoPrecision": "country", "isOfficial": true, - "priorityScore": -1.9, - "freshnessBucket": 0, - "freshUntil": "2026-04-25T11:02:35.000Z", + "priorityScore": 2.6, + "freshnessBucket": 1, + "freshUntil": "2026-04-16T05:26:53.285Z", "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/", + "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": "2026-04-15T11:02:35.000Z", + "publishedAt": null, "confidence": "Verified official source update" } ], "corroborationCount": 1, - "isDuplicateOf": "fusion-6e40ebbbf721ca80" + "isDuplicateOf": "fusion-4c041e3e6cba1329" }, { - "id": "uk-ofsi-blog-1", - "fusedIncidentId": "fusion-0ea411ece6694bdb", - "title": "Call For Evidence On Ownership And Control In Financial Sanctions Regulations", + "id": "gov-uk-proscribed-terrorist-orgs-2", + "fusedIncidentId": "fusion-5ca9109524e5c684", + "title": "Home", "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": "13 Apr 2026, 16:59", + "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.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 …", + "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": "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": "GOV.UK a Proscribed Terrorist Organisations", + "sourceUrl": "https://www.gov.uk/browse/business", "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", + "time": "Source date unconfirmed", "lat": 54.5, "lng": -2.5, "major": false, - "publishedAt": "2026-04-13T15:59:44.000Z", + "publishedAt": null, "keywordHits": [], "terrorismHits": [], "eventType": "sanctions_update", "geoPrecision": "country", "isOfficial": true, - "priorityScore": -1.9, - "freshnessBucket": 0, - "freshUntil": "2026-04-23T15:59:44.000Z", + "priorityScore": 2.6, + "freshnessBucket": 1, + "freshUntil": "2026-04-16T05:26:53.285Z", "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-5ca9109524e5c684", + "source": "GOV.UK a Proscribed Terrorist Organisations", + "sourceUrl": "https://www.gov.uk/browse/business", "sourceTier": "context", "reliabilityProfile": "official_context", - "publishedAt": "2026-04-13T15:59:44.000Z", + "publishedAt": null, "confidence": "Verified official source update" } ], "corroborationCount": 1, - "isDuplicateOf": "fusion-0ea411ece6694bdb" - }, - { - "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": "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": "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": "2026-04-13T10:25:13.000Z", - "keywordHits": [], - "terrorismHits": [ - "terrorist" - ], - "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-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-2f2e7d1797f06378" + "isDuplicateOf": "fusion-5ca9109524e5c684" }, { - "id": "uk-ofsi-blog-1", - "fusedIncidentId": "fusion-88e480db5fcdf290", - "title": "OFSI’S 10 Year Anniversary – Reflections From Giles Thomson, Director Of OFSI", + "id": "gov-uk-proscribed-terrorist-orgs-3", + "fusedIncidentId": "fusion-05de7176aa2b9f85", + "title": "Home", "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", + "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.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 …", + "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", "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/", + "source": "GOV.UK a Proscribed Terrorist Organisations", + "sourceUrl": "https://www.gov.uk/browse/childcare-parenting", "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": "Source date unconfirmed", "lat": 54.5, "lng": -2.5, "major": false, - "publishedAt": "2026-03-31T10:19:24.000Z", + "publishedAt": null, "keywordHits": [], "terrorismHits": [], "eventType": "sanctions_update", "geoPrecision": "country", "isOfficial": true, - "priorityScore": -3.9, - "freshnessBucket": 0, - "freshUntil": "2026-04-10T10:19:24.000Z", + "priorityScore": 2.6, + "freshnessBucket": 1, + "freshUntil": "2026-04-16T05:26:53.285Z", "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/", + "fusedIncidentId": "fusion-05de7176aa2b9f85", + "source": "GOV.UK a Proscribed Terrorist Organisations", + "sourceUrl": "https://www.gov.uk/browse/childcare-parenting", "sourceTier": "context", "reliabilityProfile": "official_context", - "publishedAt": "2026-03-31T10:19:24.000Z", + "publishedAt": null, "confidence": "Verified official source update" } ], "corroborationCount": 1, - "isDuplicateOf": "fusion-88e480db5fcdf290" + "isDuplicateOf": "fusion-05de7176aa2b9f85" }, { - "id": "eurojust-publications-0", - "fusedIncidentId": "fusion-ad5d553009dd02a4", - "title": "Eurojust Meeting On Counter-Terrorism 26-27 November 2025 - Summary Of Discussions", + "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": "oversight", - "severity": "moderate", + "lane": "sanctions", + "severity": "elevated", "status": "Update", - "actor": "Eurojust a Publications (RSS)", - "subject": "Eurojust a Publications (RSS)", - "happenedWhen": "09 Apr 2026, 13:00", + "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.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…", + "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", "peopleInvolved": [], - "source": "Eurojust a Publications (RSS)", - "sourceUrl": "https://www.eurojust.europa.eu/publication/eurojust-meeting-counter-terrorism-26-27-november-2025-summary-discussions", + "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": "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, + "laneReason": "Sanctions change with terrorism relevance.", + "queueReason": "Sanctions change with terrorism relevance.", + "time": "Source date unconfirmed", + "lat": 54, + "lng": 15, "major": false, - "publishedAt": "2026-04-09T12:00:00.000Z", - "keywordHits": [ - "terrorism", - "threat" - ], + "publishedAt": null, + "keywordHits": [], "terrorismHits": [ - "terrorism", "terrorist" ], - "eventType": "oversight_update", + "eventType": "sanctions_update", "geoPrecision": "country", "isOfficial": true, - "priorityScore": -5.2, - "freshnessBucket": 0, - "freshUntil": "2026-04-17T12:00:00.000Z", + "priorityScore": 2.6, + "freshnessBucket": 1, + "freshUntil": "2026-04-15T20:35:56.070Z", "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", - "sourceTier": "context", - "reliabilityProfile": "official_context", - "publishedAt": "2026-04-09T12:00:00.000Z", - "confidence": "Verified official source update" - } - ], - "corroborationCount": 1, - "isDuplicateOf": "fusion-ad5d553009dd02a4" + "corroboratingSources": [], + "corroborationCount": 0, + "isDuplicateOf": null }, { - "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": "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": "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": "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": "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": "Sanctions change with terrorism relevance.", + "queueReason": "Sanctions change with terrorism relevance.", + "time": "Source date unconfirmed", + "lat": 54, + "lng": 15, + "major": false, + "publishedAt": null, + "keywordHits": [], + "terrorismHits": [], + "eventType": "sanctions_update", + "geoPrecision": "country", + "isOfficial": true, + "priorityScore": 2.6, + "freshnessBucket": 1, + "freshUntil": "2026-04-15T20:35:56.070Z", + "needsHumanReview": false, + "isTerrorRelevant": true, + "corroboratingSources": [], + "corroborationCount": 0, + "isDuplicateOf": null + }, + { + "id": "isd-global-publications-3", + "fusedIncidentId": "fusion-21b3cc849afa8f51", + "title": "Far-Right Extremism - Institute For Strategic Dialogue", + "location": "Canada", + "region": "eu", "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": "ISD - Publications", + "subject": "ISD - Publications", + "happenedWhen": "Source date unconfirmed", "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.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": "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": "ISD - Publications", + "sourceUrl": "https://www.isdglobal.org/our-expertise/terrorism-and-extremism/far-right-extremism/", "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": "Source date unconfirmed", + "lat": 56.1304, + "lng": -106.3468, "major": false, - "publishedAt": "2026-04-14T23:42:14.000Z", + "publishedAt": null, "keywordHits": [ - "attacks" + "terrorism", + "arrested", + "extremist" ], "terrorismHits": [ - "terrorist" + "terrorism", + "extremist", + "extremism", + "far-right extremist" ], "eventType": "prevention_update", "geoPrecision": "region", "isOfficial": false, - "priorityScore": -5.7, - "freshnessBucket": 0, - "freshUntil": "2026-04-22T23:42:14.000Z", + "priorityScore": 2.5, + "freshnessBucket": 1, + "freshUntil": "2026-04-13T21:34:40.140Z", "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/", - "sourceTier": "research", - "reliabilityProfile": "specialist_research", - "publishedAt": "2026-04-14T23:42:14.000Z", - "confidence": "Research or analytical source" - } - ], - "corroborationCount": 1, - "isDuplicateOf": "fusion-f289bcaeba8fd554" + "corroboratingSources": [], + "corroborationCount": 0, + "isDuplicateOf": null }, { - "id": "fixture-atom-oversight-0", - "fusedIncidentId": "fusion-b4a9eb5890206d91", - "title": "Oversight Committee Schedules Counter-Terror Review Hearing", + "id": "tech-against-terrorism-home-2", + "fusedIncidentId": "fusion-8b90d3a2977bc83a", + "title": "Archive Database Hash List API | Tech Against Terrorism", "location": "Europe", - "region": "europe", - "lane": "oversight", + "region": "international", + "lane": "prevention", "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.", + "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": "Fixture Oversight Feed", - "sourceUrl": "https://fixtures.albertalert.local/oversight/1", - "sourceTier": "context", - "reliabilityProfile": "official_context", + "source": "Tech Against Terrorism - Home", + "sourceUrl": "https://techagainstterrorism.org/tcap-adhla", + "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": "04 Apr 2026, 11:10", - "lat": 50, - "lng": 10, + "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-04T10:10:00.000Z", + "publishedAt": null, "keywordHits": [ - "terror" + "terrorism", + "extremist", + "threat" ], "terrorismHits": [ - "terror", - "counter-terror" + "terrorism", + "terrorist", + "extremist" ], - "eventType": "oversight_update", + "eventType": "prevention_update", "geoPrecision": "country", - "isOfficial": true, - "priorityScore": -5.8, - "freshnessBucket": 0, - "freshUntil": "2026-04-12T10:10:00.000Z", + "isOfficial": false, + "priorityScore": 2.5, + "freshnessBucket": 1, + "freshUntil": "2026-04-13T19:34:41.462Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [], @@ -9661,2427 +9827,26057 @@ "isDuplicateOf": null }, { - "id": "uk-ncsc-news-4", - "fusedIncidentId": "fusion-a4c8d412564d7890", - "title": "NCSC Warns Of Messaging App Targeting", - "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": "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.", - "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", - "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, - "major": false, - "publishedAt": "2026-03-31T12:00:00.000Z", - "keywordHits": [ - "attacks" - ], - "terrorismHits": [], - "eventType": "oversight_update", - "geoPrecision": "country", - "isOfficial": true, - "priorityScore": -5.8, - "freshnessBucket": 0, - "freshUntil": "2026-04-08T12:00: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", + "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": "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", + "happenedWhen": "15 Apr 2026, 00:42", "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", + "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": "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 […]", + "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": "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/", + "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.", "queueBucket": "prevention", - "time": "09 Apr 2026, 12:05", - "lat": 40.4637, - "lng": -3.7492, + "time": "15 Apr 2026, 00:42", + "lat": -0.7893, + "lng": 113.9213, "major": false, - "publishedAt": "2026-04-09T11:05:48.000Z", - "keywordHits": [], - "terrorismHits": [], + "publishedAt": "2026-04-14T23:42:14.000Z", + "keywordHits": [ + "attacks" + ], + "terrorismHits": [ + "terrorist" + ], "eventType": "prevention_update", "geoPrecision": "region", "isOfficial": false, - "priorityScore": -6.3, - "freshnessBucket": 0, - "freshUntil": "2026-04-17T11:05:48.000Z", + "priorityScore": 2.3, + "freshnessBucket": 1, + "freshUntil": "2026-04-22T23:42:14.000Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [ { - "fusedIncidentId": "fusion-b96e09025d9b32c6", + "fusedIncidentId": "fusion-57459d5de53590da", "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/", + "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-09T11:05:48.000Z", + "publishedAt": "2026-04-14T23:42:14.000Z", "confidence": "Research or analytical source" } ], "corroborationCount": 1, - "isDuplicateOf": "fusion-b96e09025d9b32c6" + "isDuplicateOf": "fusion-57459d5de53590da" }, { - "id": "uk-ncsc-news-4", - "fusedIncidentId": "fusion-4b8334e1ce46e542", - "title": "Vulnerability Affecting F5 BIG-IP APM", + "id": "parliament-public-bills-rss-0", + "fusedIncidentId": "fusion-a3d6ee7188e5d198", + "title": "Crime And Policing Bill", "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", + "actor": "Parliament - Public Bills RSS", + "subject": "Parliament - Public Bills RSS", + "happenedWhen": "Source date unconfirmed", "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.", + "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.", "peopleInvolved": [], - "source": "National Cyber Security Centre (UK) a News", - "sourceUrl": "https://www.ncsc.gov.uk/news/vulnerability-affecting-f5-big-ip-apm", + "source": "Parliament - Public Bills RSS", + "sourceUrl": "https://bills.parliament.uk/bills/3938", "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", + "time": "Source date unconfirmed", "lat": 54.5, "lng": -2.5, "major": false, - "publishedAt": "2026-03-30T12:00:00.000Z", - "keywordHits": [], - "terrorismHits": [], + "publishedAt": null, + "keywordHits": [ + "terrorism" + ], + "terrorismHits": [ + "terrorism" + ], "eventType": "oversight_update", "geoPrecision": "country", "isOfficial": true, - "priorityScore": -6.4, - "freshnessBucket": 0, - "freshUntil": "2026-04-07T12:00:00.000Z", + "priorityScore": 2.2, + "freshnessBucket": 1, + "freshUntil": "2026-04-14T09:11:31.394Z", "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", + "fusedIncidentId": "fusion-a3d6ee7188e5d198", + "source": "Parliament - Public Bills RSS", + "sourceUrl": "https://bills.parliament.uk/bills/3938", "sourceTier": "context", "reliabilityProfile": "official_context", - "publishedAt": "2026-03-30T12:00:00.000Z", + "publishedAt": null, "confidence": "Verified official source update" } ], "corroborationCount": 1, - "isDuplicateOf": "fusion-4b8334e1ce46e542" + "isDuplicateOf": "fusion-a3d6ee7188e5d198" }, { - "id": "uk-ncsc-news-4", - "fusedIncidentId": "fusion-e4ae87f9ebe0b16e", - "title": "Vulnerabilities Affecting Citrix Net. Scaler ADC And Citrix Net. Scaler Gateway", + "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": "oversight", + "region": "eu", + "lane": "context", "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.", + "actor": "Europol a Newsroom (RSS)", + "subject": "Europol a Newsroom (RSS)", + "happenedWhen": "Source date unconfirmed", + "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.", "peopleInvolved": [], - "source": "National Cyber Security Centre (UK) a News", - "sourceUrl": "https://www.ncsc.gov.uk/news/vulnerabilities-affecting-citrix-netscaler-adc-gateway", + "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": "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", + "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": "2026-03-25T12:00:00.000Z", - "keywordHits": [], + "publishedAt": null, + "keywordHits": [ + "arrested" + ], "terrorismHits": [], - "eventType": "oversight_update", + "eventType": "context_update", "geoPrecision": "country", "isOfficial": true, - "priorityScore": -6.4, - "freshnessBucket": 0, - "freshUntil": "2026-04-02T12:00:00.000Z", + "priorityScore": 2.2, + "freshnessBucket": 1, + "freshUntil": "2026-04-10T09:11:31.394Z", "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", + "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": "2026-03-25T12:00:00.000Z", + "publishedAt": null, "confidence": "Verified official source update" } ], "corroborationCount": 1, - "isDuplicateOf": "fusion-e4ae87f9ebe0b16e" + "isDuplicateOf": "fusion-3baa21b198f276f4" }, { - "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", + "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", + "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", + "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, + "major": false, + "publishedAt": null, + "keywordHits": [ + "arrested" + ], + "terrorismHits": [], + "eventType": "context_update", + "geoPrecision": "country", + "isOfficial": true, + "priorityScore": 2.2, + "freshnessBucket": 1, + "freshUntil": "2026-04-10T09:11:31.394Z", + "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" + } + ], + "corroborationCount": 1, + "isDuplicateOf": "fusion-b837d7a4dac2cb7e" + }, + { + "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": "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 […]", + "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": "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": "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", + "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": "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, + "time": "Source date unconfirmed", + "lat": 54.5, + "lng": -2.5, "major": false, - "publishedAt": "2026-03-23T12:32:12.000Z", + "publishedAt": null, "keywordHits": [ - "al-qaeda" + "terrorism" ], "terrorismHits": [ - "jihad", - "al-qaeda" + "terrorism" ], "eventType": "prevention_update", - "geoPrecision": "region", - "isOfficial": false, - "priorityScore": -7.7, - "freshnessBucket": 0, - "freshUntil": "2026-03-31T12:32:12.000Z", + "geoPrecision": "country", + "isOfficial": true, + "priorityScore": 2.2, + "freshnessBucket": 1, + "freshUntil": "2026-04-14T09:11:31.394Z", "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" + "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-a705408939c4c725" + "isDuplicateOf": "fusion-4149c5459ed69f90" }, { - "id": "fixture-json-prevention-0", - "fusedIncidentId": "fusion-f5cb7bfa16235fcf", - "title": "Community Prevention Workshop Expanded Across Regions", + "id": "sapo-se-english-0", + "fusedIncidentId": "fusion-077a74df844621a3", + "title": "About The Swedish Security Service", "location": "Europe", - "region": "international", + "region": "europe", "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.", + "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": "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": "Fixture Prevention Feed", - "sourceUrl": "https://fixtures.albertalert.local/prevention/1", - "sourceTier": "research", - "reliabilityProfile": "specialist_research", + "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": "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, + "time": "Source date unconfirmed", + "lat": 54, + "lng": 15, "major": false, - "publishedAt": "2026-04-04T09:30:00.000Z", - "keywordHits": [], - "terrorismHits": [], + "publishedAt": null, + "keywordHits": [ + "terrorism" + ], + "terrorismHits": [ + "terrorism" + ], "eventType": "prevention_update", "geoPrecision": "country", - "isOfficial": false, - "priorityScore": -8.3, - "freshnessBucket": 0, - "freshUntil": "2026-04-12T09:30:00.000Z", + "isOfficial": true, + "priorityScore": 2.2, + "freshnessBucket": 1, + "freshUntil": "2026-04-14T09:11:31.394Z", "needsHumanReview": false, "isTerrorRelevant": true, - "corroboratingSources": [], - "corroborationCount": 0, - "isDuplicateOf": null - } - ], - "sourceErrors": [], - "restoreAudit": null, - "geoLookupSnapshot": [ - { - "terms": [ - "golders green" - ], - "label": "Golders Green, London, UK", - "kind": "neighbourhood", - "precision": "high", - "lat": 51.5722, - "lng": -0.1941 - }, - { - "terms": [ - "london" + "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" + } ], - "label": "London, UK", - "kind": "city", - "precision": "high", - "lat": 51.5074, - "lng": -0.1278 + "corroborationCount": 1, + "isDuplicateOf": "fusion-077a74df844621a3" }, { - "terms": [ - "westminster" - ], - "label": "Westminster, London, UK", - "kind": "borough", - "precision": "high", - "lat": 51.4975, - "lng": -0.1357 - }, - { - "terms": [ - "camden" - ], - "label": "Camden, London, UK", - "kind": "borough", - "precision": "high", - "lat": 51.545, - "lng": -0.1628 - }, - { - "terms": [ - "islington" - ], - "label": "Islington, London, UK", - "kind": "borough", - "precision": "high", - "lat": 51.538, - "lng": -0.1022 - }, - { - "terms": [ - "tower hamlets" - ], - "label": "Tower Hamlets, London, UK", - "kind": "borough", - "precision": "high", - "lat": 51.52, - "lng": -0.0293 - }, - { - "terms": [ - "newham" + "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": "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", + "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", + "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": [ + "threat" ], - "label": "Newham, London, UK", - "kind": "borough", - "precision": "high", - "lat": 51.5255, - "lng": 0.0352 - }, - { - "terms": [ - "croydon" + "terrorismHits": [ + "terrorist" ], - "label": "Croydon, London, UK", - "kind": "borough", - "precision": "high", - "lat": 51.3762, - "lng": -0.0982 - }, - { - "terms": [ - "hounslow" + "eventType": "prevention_update", + "geoPrecision": "country", + "isOfficial": true, + "priorityScore": 2.2, + "freshnessBucket": 1, + "freshUntil": "2026-04-14T09:11:31.394Z", + "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" + } ], - "label": "Hounslow, London, UK", - "kind": "borough", - "precision": "high", - "lat": 51.4686, - "lng": -0.3613 + "corroborationCount": 1, + "isDuplicateOf": "fusion-971df53ad3fa6ad8" }, { - "terms": [ - "heathrow" + "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" ], - "label": "Heathrow, London, UK", - "kind": "airport_area", - "precision": "high", - "lat": 51.47, - "lng": -0.4543 - }, - { - "terms": [ - "gatwick" + "terrorismHits": [ + "extremist" ], - "label": "Gatwick, UK", - "kind": "airport_area", - "precision": "high", - "lat": 51.1537, - "lng": -0.1821 - }, - { - "terms": [ - "luton" + "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", + "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" + } ], - "label": "Luton, UK", - "kind": "town", - "precision": "high", - "lat": 51.8787, - "lng": -0.42 + "corroborationCount": 1, + "isDuplicateOf": "fusion-d4ce1d4b7d0d4389" }, { - "terms": [ - "stansted" + "id": "uk-ofsi-blog-0", + "fusedIncidentId": "fusion-6e40ebbbf721ca80", + "title": "OFSI Strategy 2026-29", + "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": "15 Apr 2026, 12:02", + "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 …", + "peopleInvolved": [], + "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": "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": "2026-04-15T11:02:35.000Z", + "keywordHits": [], + "terrorismHits": [], + "eventType": "sanctions_update", + "geoPrecision": "country", + "isOfficial": true, + "priorityScore": -1.9, + "freshnessBucket": 0, + "freshUntil": "2026-04-25T11:02:35.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" + } ], - "label": "Stansted, UK", - "kind": "airport_area", - "precision": "high", - "lat": 51.886, - "lng": 0.2389 + "corroborationCount": 1, + "isDuplicateOf": "fusion-6e40ebbbf721ca80" }, { - "terms": [ - "woolwich" + "id": "uk-ofsi-blog-1", + "fusedIncidentId": "fusion-0ea411ece6694bdb", + "title": "Call For Evidence On Ownership And Control In Financial Sanctions Regulations", + "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": "13 Apr 2026, 16:59", + "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 …", + "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/", + "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", + "lat": 54.5, + "lng": -2.5, + "major": false, + "publishedAt": "2026-04-13T15:59:44.000Z", + "keywordHits": [], + "terrorismHits": [], + "eventType": "sanctions_update", + "geoPrecision": "country", + "isOfficial": true, + "priorityScore": -1.9, + "freshnessBucket": 0, + "freshUntil": "2026-04-23T15:59:44.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/", + "sourceTier": "context", + "reliabilityProfile": "official_context", + "publishedAt": "2026-04-13T15:59:44.000Z", + "confidence": "Verified official source update" + } ], - "label": "Woolwich, London, UK", - "kind": "neighbourhood", - "precision": "high", - "lat": 51.4906, - "lng": 0.0693 + "corroborationCount": 1, + "isDuplicateOf": "fusion-0ea411ece6694bdb" }, { - "terms": [ - "enfield" + "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": "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": "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": "2026-04-13T10:25:13.000Z", + "keywordHits": [], + "terrorismHits": [ + "terrorist" ], - "label": "Enfield, London, UK", - "kind": "borough", - "precision": "high", - "lat": 51.6522, - "lng": -0.0808 - }, - { - "terms": [ - "wembley" + "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-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" + } ], - "label": "Wembley, London, UK", - "kind": "neighbourhood", - "precision": "high", - "lat": 51.556, - "lng": -0.2795 + "corroborationCount": 1, + "isDuplicateOf": "fusion-2f2e7d1797f06378" }, { - "terms": [ - "redbridge" + "id": "uk-ncsc-news-0", + "fusedIncidentId": "fusion-6de206d78b0d3e71", + "title": "UK Exposes Russian Military Intelligence Hijacking Vulnerable Routers For Cyber Attacks", + "location": "Russia", + "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", + "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.", + "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.", + "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", + "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", + "threat" ], - "label": "Redbridge, London, UK", - "kind": "borough", - "precision": "high", - "lat": 51.5765, - "lng": 0.0455 - }, - { - "terms": [ - "primrose hill" + "terrorismHits": [], + "eventType": "oversight_update", + "geoPrecision": "region", + "isOfficial": true, + "priorityScore": -3.2, + "freshnessBucket": 0, + "freshUntil": "2026-04-15T12:00:00.000Z", + "needsHumanReview": false, + "isTerrorRelevant": true, + "corroboratingSources": [ + { + "fusedIncidentId": "fusion-6de206d78b0d3e71", + "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", + "sourceTier": "context", + "reliabilityProfile": "official_context", + "publishedAt": "2026-04-07T12:00:00.000Z", + "confidence": "Verified official source update" + } ], - "label": "Primrose Hill, London, UK", - "kind": "neighbourhood", - "precision": "high", - "lat": 51.539, - "lng": -0.16 + "corroborationCount": 1, + "isDuplicateOf": "fusion-6de206d78b0d3e71" }, { - "terms": [ - "southport" + "id": "uk-ncsc-news-1", + "fusedIncidentId": "fusion-df9e430f15ecb473", + "title": "APT28 Exploit Routers To Enable DNS Hijacking Operations", + "location": "Russia", + "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", + "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.", + "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.", + "peopleInvolved": [], + "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", + "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" ], - "label": "Southport, UK", - "kind": "town", - "precision": "high", - "lat": 53.6477, - "lng": -3.0056 + "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" }, { - "terms": [ - "birmingham" - ], - "label": "Birmingham, UK", - "kind": "city", - "precision": "high", - "lat": 52.4862, - "lng": -1.8904 - }, - { - "terms": [ - "manchester" - ], - "label": "Manchester, UK", - "kind": "city", - "precision": "high", - "lat": 53.4808, - "lng": -2.2426 - }, - { - "terms": [ - "liverpool" - ], - "label": "Liverpool, UK", - "kind": "city", - "precision": "high", - "lat": 53.4084, - "lng": -2.9916 - }, - { - "terms": [ - "leeds" - ], - "label": "Leeds, UK", - "kind": "city", - "precision": "high", - "lat": 53.8008, - "lng": -1.5491 - }, - { - "terms": [ - "sheffield" + "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", + "lat": 54.5, + "lng": -2.5, + "major": false, + "publishedAt": "2026-03-31T10:19:24.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" + } ], - "label": "Sheffield, UK", - "kind": "city", - "precision": "high", - "lat": 53.3811, - "lng": -1.4701 + "corroborationCount": 1, + "isDuplicateOf": "fusion-88e480db5fcdf290" }, { - "terms": [ - "bristol" + "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" ], - "label": "Bristol, UK", - "kind": "city", - "precision": "high", - "lat": 51.4545, - "lng": -2.5879 - }, - { - "terms": [ - "newcastle", - "newcastle upon tyne" + "terrorismHits": [ + "terrorism", + "terrorist" ], - "label": "Newcastle upon Tyne, UK", - "kind": "city", - "precision": "high", - "lat": 54.9783, - "lng": -1.6178 - }, - { - "terms": [ - "glasgow" + "eventType": "oversight_update", + "geoPrecision": "country", + "isOfficial": true, + "priorityScore": -5.2, + "freshnessBucket": 0, + "freshUntil": "2026-04-17T12: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", + "sourceTier": "context", + "reliabilityProfile": "official_context", + "publishedAt": "2026-04-09T12:00:00.000Z", + "confidence": "Verified official source update" + } ], - "label": "Glasgow, UK", - "kind": "city", - "precision": "high", - "lat": 55.8642, - "lng": -4.2518 + "corroborationCount": 1, + "isDuplicateOf": "fusion-ad5d553009dd02a4" }, { - "terms": [ - "edinburgh" + "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": "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": "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.", + "queueBucket": "prevention", + "time": "15 Apr 2026, 00:42", + "lat": -0.7893, + "lng": 113.9213, + "major": false, + "publishedAt": "2026-04-14T23:42:14.000Z", + "keywordHits": [ + "attacks" ], - "label": "Edinburgh, UK", - "kind": "city", - "precision": "high", - "lat": 55.9533, - "lng": -3.1883 - }, - { - "terms": [ - "cardiff" + "terrorismHits": [ + "terrorist" ], - "label": "Cardiff, UK", - "kind": "city", - "precision": "high", - "lat": 51.4816, - "lng": -3.1791 - }, - { - "terms": [ - "belfast" + "eventType": "prevention_update", + "geoPrecision": "region", + "isOfficial": false, + "priorityScore": -5.7, + "freshnessBucket": 0, + "freshUntil": "2026-04-22T23:42:14.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/", + "sourceTier": "research", + "reliabilityProfile": "specialist_research", + "publishedAt": "2026-04-14T23:42:14.000Z", + "confidence": "Research or analytical source" + } ], - "label": "Belfast, UK", - "kind": "city", - "precision": "high", - "lat": 54.5973, - "lng": -5.9301 + "corroborationCount": 1, + "isDuplicateOf": "fusion-f289bcaeba8fd554" }, { - "terms": [ - "leicester" - ], - "label": "Leicester, UK", - "kind": "city", - "precision": "high", - "lat": 52.6369, - "lng": -1.1398 - }, - { - "terms": [ - "nottingham" + "id": "uk-ncsc-news-4", + "fusedIncidentId": "fusion-a4c8d412564d7890", + "title": "NCSC Warns Of Messaging App Targeting", + "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": "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.", + "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", + "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, + "major": false, + "publishedAt": "2026-03-31T12:00:00.000Z", + "keywordHits": [ + "attacks" ], - "label": "Nottingham, UK", - "kind": "city", - "precision": "high", - "lat": 52.9548, - "lng": -1.1581 - }, - { - "terms": [ - "southampton" + "terrorismHits": [], + "eventType": "oversight_update", + "geoPrecision": "country", + "isOfficial": true, + "priorityScore": -5.8, + "freshnessBucket": 0, + "freshUntil": "2026-04-08T12:00: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" + } ], - "label": "Southampton, UK", - "kind": "city", - "precision": "high", - "lat": 50.9097, - "lng": -1.4044 + "corroborationCount": 1, + "isDuplicateOf": "fusion-a4c8d412564d7890" }, { - "terms": [ - "portsmouth" + "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" + } ], - "label": "Portsmouth, UK", - "kind": "city", - "precision": "high", - "lat": 50.8198, - "lng": -1.088 + "corroborationCount": 1, + "isDuplicateOf": "fusion-b96e09025d9b32c6" }, { - "terms": [ - "brighton" + "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" + } ], - "label": "Brighton, UK", - "kind": "city", - "precision": "high", - "lat": 50.8225, - "lng": -0.1372 + "corroborationCount": 1, + "isDuplicateOf": "fusion-4b8334e1ce46e542" }, { - "terms": [ - "oxford" + "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" + } ], - "label": "Oxford, UK", - "kind": "city", - "precision": "high", - "lat": 51.752, - "lng": -1.2577 + "corroborationCount": 1, + "isDuplicateOf": "fusion-e4ae87f9ebe0b16e" }, { - "terms": [ - "cambridge" + "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" ], - "label": "Cambridge, UK", - "kind": "city", - "precision": "high", - "lat": 52.2053, - "lng": 0.1218 - }, + "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": "gnet-youth-rss", + "provider": "Global Network on Extremism & Technology (GNET) a Youth (RSS)", + "endpoint": "https://gnet-research.org/tag/youth/feed/", + "finalUrl": "https://gnet-research.org/tag/youth/feed/", + "status": 200, + "message": "Blocked by anti-bot protection", + "errorCode": "BLOCKED_ANTI_BOT", + "category": "anti-bot-protection" + }, + { + "id": "act-campaign", + "provider": "ACT Awareness Campaign", + "endpoint": "https://act.campaign.gov.uk/", + "finalUrl": "https://act.campaign.gov.uk/", + "status": 421, + "message": "HTTP 421", + "errorCode": "HTTP_STATUS_ERROR", + "category": "http-status-error" + } + ], + "restoreAudit": null, + "geoLookupSnapshot": [ { "terms": [ - "northumberland" + "golders green" ], - "label": "Northumberland, UK", - "kind": "county", - "precision": "medium", - "lat": 55.2083, - "lng": -2.0784 + "label": "Golders Green, London, UK", + "kind": "neighbourhood", + "precision": "high", + "lat": 51.5722, + "lng": -0.1941 }, { "terms": [ - "west midlands" + "london" ], - "label": "West Midlands, UK", - "kind": "region", - "precision": "medium", - "lat": 52.4862, - "lng": -1.8904 + "label": "London, UK", + "kind": "city", + "precision": "high", + "lat": 51.5074, + "lng": -0.1278 }, { "terms": [ - "west yorkshire" + "westminster" ], - "label": "West Yorkshire, UK", - "kind": "county", - "precision": "medium", - "lat": 53.8008, - "lng": -1.5491 + "label": "Westminster, London, UK", + "kind": "borough", + "precision": "high", + "lat": 51.4975, + "lng": -0.1357 }, { "terms": [ - "south yorkshire" + "camden" ], - "label": "South Yorkshire, UK", - "kind": "county", - "precision": "medium", - "lat": 53.3811, - "lng": -1.4701 + "label": "Camden, London, UK", + "kind": "borough", + "precision": "high", + "lat": 51.545, + "lng": -0.1628 }, { "terms": [ - "essex" + "islington" ], - "label": "Essex, UK", - "kind": "county", - "precision": "medium", - "lat": 51.7343, - "lng": 0.4691 + "label": "Islington, London, UK", + "kind": "borough", + "precision": "high", + "lat": 51.538, + "lng": -0.1022 }, { "terms": [ - "kent" + "tower hamlets" ], - "label": "Kent, UK", - "kind": "county", - "precision": "medium", - "lat": 51.2787, - "lng": 0.5217 + "label": "Tower Hamlets, London, UK", + "kind": "borough", + "precision": "high", + "lat": 51.52, + "lng": -0.0293 }, { "terms": [ - "greater manchester" + "newham" ], - "label": "Greater Manchester, UK", - "kind": "region", - "precision": "medium", - "lat": 53.4808, - "lng": -2.2426 + "label": "Newham, London, UK", + "kind": "borough", + "precision": "high", + "lat": 51.5255, + "lng": 0.0352 }, { "terms": [ - "united kingdom", - "uk", - "britain", - "great britain", - "british" + "croydon" ], - "label": "United Kingdom", - "kind": "country", - "precision": "low", - "lat": 54.5, - "lng": -2.5 + "label": "Croydon, London, UK", + "kind": "borough", + "precision": "high", + "lat": 51.3762, + "lng": -0.0982 }, { "terms": [ - "england", - "english" + "hounslow" ], - "label": "England, UK", - "kind": "country_part", - "precision": "low", - "lat": 52.3555, - "lng": -1.1743 + "label": "Hounslow, London, UK", + "kind": "borough", + "precision": "high", + "lat": 51.4686, + "lng": -0.3613 }, { "terms": [ - "scotland", - "scottish" + "heathrow" ], - "label": "Scotland, UK", - "kind": "country_part", - "precision": "low", - "lat": 56.4907, - "lng": -4.2026 + "label": "Heathrow, London, UK", + "kind": "airport_area", + "precision": "high", + "lat": 51.47, + "lng": -0.4543 }, { "terms": [ - "wales", - "welsh" + "gatwick" ], - "label": "Wales, UK", - "kind": "country_part", - "precision": "low", - "lat": 52.1307, - "lng": -3.7837 + "label": "Gatwick, UK", + "kind": "airport_area", + "precision": "high", + "lat": 51.1537, + "lng": -0.1821 }, { "terms": [ - "northern ireland", - "northern irish" + "luton" ], - "label": "Northern Ireland, UK", - "kind": "country_part", - "precision": "low", - "lat": 54.7877, - "lng": -6.4923 + "label": "Luton, UK", + "kind": "town", + "precision": "high", + "lat": 51.8787, + "lng": -0.42 }, { "terms": [ - "paris" + "stansted" ], - "label": "Paris, France", - "kind": "city", + "label": "Stansted, UK", + "kind": "airport_area", "precision": "high", - "lat": 48.8566, - "lng": 2.3522 + "lat": 51.886, + "lng": 0.2389 }, { "terms": [ - "france", - "french" + "woolwich" ], - "label": "France", - "kind": "country", - "precision": "low", - "lat": 46.6034, - "lng": 1.8883 + "label": "Woolwich, London, UK", + "kind": "neighbourhood", + "precision": "high", + "lat": 51.4906, + "lng": 0.0693 }, { "terms": [ - "brussels" + "enfield" ], - "label": "Brussels, Belgium", - "kind": "city", + "label": "Enfield, London, UK", + "kind": "borough", "precision": "high", - "lat": 50.8503, - "lng": 4.3517 + "lat": 51.6522, + "lng": -0.0808 }, { "terms": [ - "belgium", - "belgian" + "wembley" ], - "label": "Belgium", - "kind": "country", - "precision": "low", - "lat": 50.5039, - "lng": 4.4699 + "label": "Wembley, London, UK", + "kind": "neighbourhood", + "precision": "high", + "lat": 51.556, + "lng": -0.2795 }, { "terms": [ - "amsterdam" + "redbridge" ], - "label": "Amsterdam, Netherlands", - "kind": "city", + "label": "Redbridge, London, UK", + "kind": "borough", "precision": "high", - "lat": 52.3676, - "lng": 4.9041 + "lat": 51.5765, + "lng": 0.0455 }, { "terms": [ - "netherlands", - "dutch" + "primrose hill" ], - "label": "Netherlands", - "kind": "country", - "precision": "low", - "lat": 52.1326, - "lng": 5.2913 + "label": "Primrose Hill, London, UK", + "kind": "neighbourhood", + "precision": "high", + "lat": 51.539, + "lng": -0.16 }, { "terms": [ - "rotterdam" + "southport" ], - "label": "Rotterdam, Netherlands", - "kind": "city", + "label": "Southport, UK", + "kind": "town", "precision": "high", - "lat": 51.9244, - "lng": 4.4777 + "lat": 53.6477, + "lng": -3.0056 }, { "terms": [ - "the hague", - "den haag" + "birmingham" ], - "label": "The Hague, Netherlands", + "label": "Birmingham, UK", "kind": "city", "precision": "high", - "lat": 52.0705, - "lng": 4.3007 + "lat": 52.4862, + "lng": -1.8904 }, { "terms": [ - "berlin" + "manchester" ], - "label": "Berlin, Germany", + "label": "Manchester, UK", "kind": "city", "precision": "high", - "lat": 52.52, - "lng": 13.405 - }, - { - "terms": [ - "germany", - "german" - ], - "label": "Germany", - "kind": "country", - "precision": "low", - "lat": 51.1657, - "lng": 10.4515 + "lat": 53.4808, + "lng": -2.2426 }, { "terms": [ - "hamburg" + "liverpool" ], - "label": "Hamburg, Germany", + "label": "Liverpool, UK", "kind": "city", "precision": "high", - "lat": 53.5511, - "lng": 9.9937 + "lat": 53.4084, + "lng": -2.9916 }, { "terms": [ - "munich", - "muenchen" + "leeds" ], - "label": "Munich, Germany", + "label": "Leeds, UK", "kind": "city", "precision": "high", - "lat": 48.1351, - "lng": 11.582 + "lat": 53.8008, + "lng": -1.5491 }, { "terms": [ - "frankfurt" + "sheffield" ], - "label": "Frankfurt, Germany", + "label": "Sheffield, UK", "kind": "city", "precision": "high", - "lat": 50.1109, - "lng": 8.6821 + "lat": 53.3811, + "lng": -1.4701 }, { "terms": [ - "madrid" + "bristol" ], - "label": "Madrid, Spain", + "label": "Bristol, UK", "kind": "city", "precision": "high", - "lat": 40.4168, - "lng": -3.7038 + "lat": 51.4545, + "lng": -2.5879 }, { "terms": [ - "spain", - "spanish" + "newcastle", + "newcastle upon tyne" ], - "label": "Spain", - "kind": "country", - "precision": "low", - "lat": 40.4637, - "lng": -3.7492 + "label": "Newcastle upon Tyne, UK", + "kind": "city", + "precision": "high", + "lat": 54.9783, + "lng": -1.6178 }, { "terms": [ - "barcelona" + "glasgow" ], - "label": "Barcelona, Spain", + "label": "Glasgow, UK", "kind": "city", "precision": "high", - "lat": 41.3851, - "lng": 2.1734 + "lat": 55.8642, + "lng": -4.2518 }, { "terms": [ - "rome" + "edinburgh" ], - "label": "Rome, Italy", + "label": "Edinburgh, UK", "kind": "city", "precision": "high", - "lat": 41.9028, - "lng": 12.4964 + "lat": 55.9533, + "lng": -3.1883 }, { "terms": [ - "italy", - "italian" + "cardiff" ], - "label": "Italy", - "kind": "country", - "precision": "low", - "lat": 41.8719, - "lng": 12.5674 + "label": "Cardiff, UK", + "kind": "city", + "precision": "high", + "lat": 51.4816, + "lng": -3.1791 }, { "terms": [ - "milan" + "belfast" ], - "label": "Milan, Italy", + "label": "Belfast, UK", "kind": "city", "precision": "high", - "lat": 45.4642, - "lng": 9.19 + "lat": 54.5973, + "lng": -5.9301 }, { "terms": [ - "athens" + "leicester" ], - "label": "Athens, Greece", + "label": "Leicester, UK", "kind": "city", "precision": "high", - "lat": 37.9838, - "lng": 23.7275 + "lat": 52.6369, + "lng": -1.1398 }, { "terms": [ - "greece", - "greek" + "nottingham" ], - "label": "Greece", - "kind": "country", - "precision": "low", - "lat": 39.0742, - "lng": 21.8243 + "label": "Nottingham, UK", + "kind": "city", + "precision": "high", + "lat": 52.9548, + "lng": -1.1581 }, { "terms": [ - "stockholm" + "southampton" ], - "label": "Stockholm, Sweden", + "label": "Southampton, UK", "kind": "city", "precision": "high", - "lat": 59.3293, - "lng": 18.0686 + "lat": 50.9097, + "lng": -1.4044 }, { "terms": [ - "sweden", - "swedish" + "portsmouth" ], - "label": "Sweden", - "kind": "country", - "precision": "low", - "lat": 60.1282, - "lng": 18.6435 + "label": "Portsmouth, UK", + "kind": "city", + "precision": "high", + "lat": 50.8198, + "lng": -1.088 }, { "terms": [ - "copenhagen" + "brighton" ], - "label": "Copenhagen, Denmark", + "label": "Brighton, UK", "kind": "city", "precision": "high", - "lat": 55.6761, - "lng": 12.5683 + "lat": 50.8225, + "lng": -0.1372 }, { "terms": [ - "denmark", - "danish" + "oxford" ], - "label": "Denmark", - "kind": "country", - "precision": "low", - "lat": 56.2639, - "lng": 9.5018 + "label": "Oxford, UK", + "kind": "city", + "precision": "high", + "lat": 51.752, + "lng": -1.2577 }, { "terms": [ - "dublin" + "cambridge" ], - "label": "Dublin, Ireland", + "label": "Cambridge, UK", "kind": "city", "precision": "high", - "lat": 53.3498, - "lng": -6.2603 + "lat": 52.2053, + "lng": 0.1218 }, { "terms": [ - "ireland", - "republic of ireland", - "irish" + "northumberland" ], - "label": "Ireland", - "kind": "country", - "precision": "low", - "lat": 53.1424, - "lng": -7.6921 + "label": "Northumberland, UK", + "kind": "county", + "precision": "medium", + "lat": 55.2083, + "lng": -2.0784 }, { "terms": [ - "vilnius" + "west midlands" ], - "label": "Vilnius, Lithuania", - "kind": "city", - "precision": "high", - "lat": 54.6872, - "lng": 25.2797 + "label": "West Midlands, UK", + "kind": "region", + "precision": "medium", + "lat": 52.4862, + "lng": -1.8904 }, { "terms": [ - "lithuania", - "lithuanian" + "west yorkshire" ], - "label": "Lithuania", - "kind": "country", - "precision": "low", - "lat": 55.1694, - "lng": 23.8813 + "label": "West Yorkshire, UK", + "kind": "county", + "precision": "medium", + "lat": 53.8008, + "lng": -1.5491 }, { "terms": [ - "warsaw" + "south yorkshire" ], - "label": "Warsaw, Poland", - "kind": "city", - "precision": "high", - "lat": 52.2297, - "lng": 21.0122 + "label": "South Yorkshire, UK", + "kind": "county", + "precision": "medium", + "lat": 53.3811, + "lng": -1.4701 }, { "terms": [ - "poland", - "polish" + "essex" ], - "label": "Poland", - "kind": "country", - "precision": "low", - "lat": 51.9194, - "lng": 19.1451 + "label": "Essex, UK", + "kind": "county", + "precision": "medium", + "lat": 51.7343, + "lng": 0.4691 }, { "terms": [ - "kyiv", - "kiev" + "kent" ], - "label": "Kyiv, Ukraine", - "kind": "city", - "precision": "high", - "lat": 50.4501, - "lng": 30.5234 + "label": "Kent, UK", + "kind": "county", + "precision": "medium", + "lat": 51.2787, + "lng": 0.5217 }, { "terms": [ - "ukraine", - "ukrainian" + "greater manchester" ], - "label": "Ukraine", - "kind": "country", - "precision": "low", - "lat": 48.3794, - "lng": 31.1656 + "label": "Greater Manchester, UK", + "kind": "region", + "precision": "medium", + "lat": 53.4808, + "lng": -2.2426 }, { "terms": [ - "vienna" + "united kingdom", + "uk", + "britain", + "great britain", + "british" ], - "label": "Vienna, Austria", - "kind": "city", - "precision": "high", - "lat": 48.2082, - "lng": 16.3738 + "label": "United Kingdom", + "kind": "country", + "precision": "low", + "lat": 54.5, + "lng": -2.5 }, { "terms": [ - "austria", - "austrian" + "england", + "english" ], - "label": "Austria", - "kind": "country", + "label": "England, UK", + "kind": "country_part", "precision": "low", - "lat": 47.5162, - "lng": 14.5501 + "lat": 52.3555, + "lng": -1.1743 }, { "terms": [ - "zurich" + "scotland", + "scottish" ], - "label": "Zurich, Switzerland", - "kind": "city", - "precision": "high", - "lat": 47.3769, - "lng": 8.5417 + "label": "Scotland, UK", + "kind": "country_part", + "precision": "low", + "lat": 56.4907, + "lng": -4.2026 }, { "terms": [ - "geneva" + "wales", + "welsh" ], - "label": "Geneva, Switzerland", - "kind": "city", - "precision": "high", - "lat": 46.2044, - "lng": 6.1432 + "label": "Wales, UK", + "kind": "country_part", + "precision": "low", + "lat": 52.1307, + "lng": -3.7837 }, { "terms": [ - "switzerland", - "swiss" + "northern ireland", + "northern irish" ], - "label": "Switzerland", - "kind": "country", + "label": "Northern Ireland, UK", + "kind": "country_part", "precision": "low", - "lat": 46.8182, - "lng": 8.2275 + "lat": 54.7877, + "lng": -6.4923 }, { "terms": [ - "prague" + "paris" ], - "label": "Prague, Czech Republic", + "label": "Paris, France", "kind": "city", "precision": "high", - "lat": 50.0755, - "lng": 14.4378 + "lat": 48.8566, + "lng": 2.3522 }, { "terms": [ - "czech republic", - "czechia", - "czech" + "france", + "french" ], - "label": "Czech Republic", + "label": "France", "kind": "country", "precision": "low", - "lat": 49.8175, - "lng": 15.473 + "lat": 46.6034, + "lng": 1.8883 }, { "terms": [ - "budapest" + "brussels" ], - "label": "Budapest, Hungary", + "label": "Brussels, Belgium", "kind": "city", "precision": "high", - "lat": 47.4979, - "lng": 19.0402 + "lat": 50.8503, + "lng": 4.3517 }, { "terms": [ - "hungary", - "hungarian" + "belgium", + "belgian" ], - "label": "Hungary", + "label": "Belgium", "kind": "country", "precision": "low", - "lat": 47.1625, - "lng": 19.5033 + "lat": 50.5039, + "lng": 4.4699 }, { "terms": [ - "bucharest" + "amsterdam" ], - "label": "Bucharest, Romania", + "label": "Amsterdam, Netherlands", "kind": "city", "precision": "high", - "lat": 44.4268, - "lng": 26.1025 - }, - { - "terms": [ - "romania", - "romanian" - ], - "label": "Romania", - "kind": "country", - "precision": "low", - "lat": 45.9432, - "lng": 24.9668 + "lat": 52.3676, + "lng": 4.9041 }, { "terms": [ - "latvia", - "latvian" + "netherlands", + "dutch" ], - "label": "Latvia", + "label": "Netherlands", "kind": "country", "precision": "low", - "lat": 56.8796, - "lng": 24.6032 + "lat": 52.1326, + "lng": 5.2913 }, { "terms": [ - "riga" + "rotterdam" ], - "label": "Riga, Latvia", + "label": "Rotterdam, Netherlands", "kind": "city", "precision": "high", - "lat": 56.9496, - "lng": 24.1052 + "lat": 51.9244, + "lng": 4.4777 }, { "terms": [ - "bulgaria", - "bulgarian" + "the hague", + "den haag" ], - "label": "Bulgaria", - "kind": "country", - "precision": "low", - "lat": 42.7339, - "lng": 25.4858 + "label": "The Hague, Netherlands", + "kind": "city", + "precision": "high", + "lat": 52.0705, + "lng": 4.3007 }, { "terms": [ - "sofia" + "berlin" ], - "label": "Sofia, Bulgaria", + "label": "Berlin, Germany", "kind": "city", "precision": "high", - "lat": 42.6977, - "lng": 23.3219 + "lat": 52.52, + "lng": 13.405 }, { "terms": [ - "serbia", - "serbian" + "germany", + "german" ], - "label": "Serbia", + "label": "Germany", "kind": "country", "precision": "low", - "lat": 44.0165, - "lng": 21.0059 + "lat": 51.1657, + "lng": 10.4515 }, { "terms": [ - "belgrade" + "hamburg" ], - "label": "Belgrade, Serbia", + "label": "Hamburg, Germany", "kind": "city", "precision": "high", - "lat": 44.7866, - "lng": 20.4489 + "lat": 53.5511, + "lng": 9.9937 }, { "terms": [ - "croatia", - "croatian" + "munich", + "muenchen" ], - "label": "Croatia", - "kind": "country", - "precision": "low", - "lat": 45.1, - "lng": 15.2 + "label": "Munich, Germany", + "kind": "city", + "precision": "high", + "lat": 48.1351, + "lng": 11.582 }, { "terms": [ - "estonia", - "estonian" + "frankfurt" ], - "label": "Estonia", - "kind": "country", - "precision": "low", - "lat": 58.5953, - "lng": 25.0136 + "label": "Frankfurt, Germany", + "kind": "city", + "precision": "high", + "lat": 50.1109, + "lng": 8.6821 }, { "terms": [ - "finland", - "finnish" + "madrid" ], - "label": "Finland", - "kind": "country", - "precision": "low", - "lat": 61.9241, - "lng": 25.7482 + "label": "Madrid, Spain", + "kind": "city", + "precision": "high", + "lat": 40.4168, + "lng": -3.7038 }, { "terms": [ - "norway", - "norwegian" + "spain", + "spanish" ], - "label": "Norway", + "label": "Spain", "kind": "country", "precision": "low", - "lat": 60.472, - "lng": 8.4689 + "lat": 40.4637, + "lng": -3.7492 }, { "terms": [ - "portugal", - "portuguese" + "barcelona" ], - "label": "Portugal", - "kind": "country", - "precision": "low", - "lat": 39.3999, - "lng": -8.2245 + "label": "Barcelona, Spain", + "kind": "city", + "precision": "high", + "lat": 41.3851, + "lng": 2.1734 }, { "terms": [ - "albania", - "albanian" + "rome" ], - "label": "Albania", - "kind": "country", - "precision": "low", - "lat": 41.1533, - "lng": 20.1683 + "label": "Rome, Italy", + "kind": "city", + "precision": "high", + "lat": 41.9028, + "lng": 12.4964 }, { "terms": [ - "kosovo", - "kosovar" + "italy", + "italian" ], - "label": "Kosovo", + "label": "Italy", "kind": "country", "precision": "low", - "lat": 42.6026, - "lng": 20.902 + "lat": 41.8719, + "lng": 12.5674 }, { "terms": [ - "north macedonia", - "macedonia" + "milan" ], - "label": "North Macedonia", - "kind": "country", - "precision": "low", - "lat": 41.5122, - "lng": 21.7453 + "label": "Milan, Italy", + "kind": "city", + "precision": "high", + "lat": 45.4642, + "lng": 9.19 }, { "terms": [ - "montenegro", - "montenegrin" + "athens" ], - "label": "Montenegro", - "kind": "country", - "precision": "low", - "lat": 42.7087, - "lng": 19.3744 + "label": "Athens, Greece", + "kind": "city", + "precision": "high", + "lat": 37.9838, + "lng": 23.7275 }, { "terms": [ - "bosnia", - "bosnia and herzegovina", - "bosnian" + "greece", + "greek" ], - "label": "Bosnia and Herzegovina", + "label": "Greece", "kind": "country", "precision": "low", - "lat": 43.9159, - "lng": 17.6791 + "lat": 39.0742, + "lng": 21.8243 }, { "terms": [ - "slovakia", - "slovak" + "stockholm" ], - "label": "Slovakia", - "kind": "country", - "precision": "low", - "lat": 48.669, - "lng": 19.699 + "label": "Stockholm, Sweden", + "kind": "city", + "precision": "high", + "lat": 59.3293, + "lng": 18.0686 }, { "terms": [ - "slovenia", - "slovenian" + "sweden", + "swedish" ], - "label": "Slovenia", + "label": "Sweden", "kind": "country", "precision": "low", - "lat": 46.1512, - "lng": 14.9955 + "lat": 60.1282, + "lng": 18.6435 }, { "terms": [ - "moldova", - "moldovan" + "copenhagen" ], - "label": "Moldova", - "kind": "country", - "precision": "low", - "lat": 47.4116, - "lng": 28.3699 + "label": "Copenhagen, Denmark", + "kind": "city", + "precision": "high", + "lat": 55.6761, + "lng": 12.5683 }, { "terms": [ - "luxembourg", - "luxembourgish" + "denmark", + "danish" ], - "label": "Luxembourg", + "label": "Denmark", "kind": "country", "precision": "low", - "lat": 49.8153, - "lng": 6.1296 - }, - { - "terms": [ - "europe", - "european" - ], - "label": "Europe", - "kind": "continent", - "precision": "low", - "lat": 50, - "lng": 10 + "lat": 56.2639, + "lng": 9.5018 }, { "terms": [ - "tehran" + "dublin" ], - "label": "Tehran, Iran", + "label": "Dublin, Ireland", "kind": "city", "precision": "high", - "lat": 35.6892, - "lng": 51.389 + "lat": 53.3498, + "lng": -6.2603 }, { "terms": [ - "iran", - "iranian" + "ireland", + "republic of ireland", + "irish" ], - "label": "Iran", + "label": "Ireland", "kind": "country", "precision": "low", - "lat": 32.4279, - "lng": 53.688 - }, - { - "terms": [ - "tel aviv" - ], - "label": "Tel Aviv, Israel", - "kind": "city", - "precision": "high", - "lat": 32.0853, - "lng": 34.7818 + "lat": 53.1424, + "lng": -7.6921 }, { "terms": [ - "jerusalem" + "vilnius" ], - "label": "Jerusalem", + "label": "Vilnius, Lithuania", "kind": "city", "precision": "high", - "lat": 31.7683, - "lng": 35.2137 + "lat": 54.6872, + "lng": 25.2797 }, { "terms": [ - "israel", - "israeli" + "lithuania", + "lithuanian" ], - "label": "Israel", + "label": "Lithuania", "kind": "country", "precision": "low", - "lat": 31.0461, - "lng": 34.8516 + "lat": 55.1694, + "lng": 23.8813 }, { "terms": [ - "beirut" + "warsaw" ], - "label": "Beirut, Lebanon", + "label": "Warsaw, Poland", "kind": "city", "precision": "high", - "lat": 33.8938, - "lng": 35.5018 + "lat": 52.2297, + "lng": 21.0122 }, { "terms": [ - "lebanon", - "lebanese" + "poland", + "polish" ], - "label": "Lebanon", + "label": "Poland", "kind": "country", "precision": "low", - "lat": 33.8547, - "lng": 35.8623 + "lat": 51.9194, + "lng": 19.1451 }, { "terms": [ - "baghdad" + "kyiv", + "kiev" ], - "label": "Baghdad, Iraq", + "label": "Kyiv, Ukraine", "kind": "city", "precision": "high", - "lat": 33.3152, - "lng": 44.3661 + "lat": 50.4501, + "lng": 30.5234 }, { "terms": [ - "iraq", - "iraqi" + "ukraine", + "ukrainian" ], - "label": "Iraq", + "label": "Ukraine", "kind": "country", "precision": "low", - "lat": 33.2232, - "lng": 43.6793 + "lat": 48.3794, + "lng": 31.1656 }, { "terms": [ - "sanaa", - "sana'a" + "vienna" ], - "label": "Sanaa, Yemen", + "label": "Vienna, Austria", "kind": "city", "precision": "high", - "lat": 15.3694, - "lng": 44.191 + "lat": 48.2082, + "lng": 16.3738 }, { "terms": [ - "yemen", - "yemeni" + "austria", + "austrian" ], - "label": "Yemen", + "label": "Austria", "kind": "country", "precision": "low", - "lat": 15.5527, - "lng": 48.5164 + "lat": 47.5162, + "lng": 14.5501 }, { "terms": [ - "abuja" + "zurich" ], - "label": "Abuja, Nigeria", + "label": "Zurich, Switzerland", "kind": "city", "precision": "high", - "lat": 9.0765, - "lng": 7.3986 - }, - { - "terms": [ - "nigeria", - "nigerian" - ], - "label": "Nigeria", - "kind": "country", - "precision": "low", - "lat": 9.082, - "lng": 8.6753 + "lat": 47.3769, + "lng": 8.5417 }, { "terms": [ - "islamabad" + "geneva" ], - "label": "Islamabad, Pakistan", + "label": "Geneva, Switzerland", "kind": "city", "precision": "high", - "lat": 33.6844, - "lng": 73.0479 + "lat": 46.2044, + "lng": 6.1432 }, { "terms": [ - "pakistan", - "pakistani" + "switzerland", + "swiss" ], - "label": "Pakistan", + "label": "Switzerland", "kind": "country", "precision": "low", - "lat": 30.3753, - "lng": 69.3451 + "lat": 46.8182, + "lng": 8.2275 }, { "terms": [ - "syria", - "syrian" + "prague" ], - "label": "Syria", + "label": "Prague, Czech Republic", + "kind": "city", + "precision": "high", + "lat": 50.0755, + "lng": 14.4378 + }, + { + "terms": [ + "czech republic", + "czechia", + "czech" + ], + "label": "Czech Republic", "kind": "country", "precision": "low", - "lat": 34.8021, - "lng": 38.9968 + "lat": 49.8175, + "lng": 15.473 }, { "terms": [ - "damascus" + "budapest" ], - "label": "Damascus, Syria", + "label": "Budapest, Hungary", "kind": "city", "precision": "high", - "lat": 33.5138, - "lng": 36.2765 + "lat": 47.4979, + "lng": 19.0402 }, { "terms": [ - "afghanistan", - "afghan" + "hungary", + "hungarian" ], - "label": "Afghanistan", + "label": "Hungary", "kind": "country", "precision": "low", - "lat": 33.9391, - "lng": 67.71 + "lat": 47.1625, + "lng": 19.5033 }, { "terms": [ - "kabul" + "bucharest" ], - "label": "Kabul, Afghanistan", + "label": "Bucharest, Romania", "kind": "city", "precision": "high", - "lat": 34.5553, - "lng": 69.2075 + "lat": 44.4268, + "lng": 26.1025 }, { "terms": [ - "turkey", - "turkiye", - "turkish" + "romania", + "romanian" ], - "label": "Turkey", + "label": "Romania", "kind": "country", "precision": "low", - "lat": 38.9637, - "lng": 35.2433 + "lat": 45.9432, + "lng": 24.9668 }, { "terms": [ - "istanbul" + "latvia", + "latvian" ], - "label": "Istanbul, Turkey", + "label": "Latvia", + "kind": "country", + "precision": "low", + "lat": 56.8796, + "lng": 24.6032 + }, + { + "terms": [ + "riga" + ], + "label": "Riga, Latvia", "kind": "city", "precision": "high", - "lat": 41.0082, - "lng": 28.9784 + "lat": 56.9496, + "lng": 24.1052 }, { "terms": [ - "saudi arabia", - "saudi" + "bulgaria", + "bulgarian" ], - "label": "Saudi Arabia", + "label": "Bulgaria", "kind": "country", "precision": "low", - "lat": 23.8859, - "lng": 45.0792 + "lat": 42.7339, + "lng": 25.4858 }, { "terms": [ - "riyadh" + "sofia" ], - "label": "Riyadh, Saudi Arabia", + "label": "Sofia, Bulgaria", "kind": "city", "precision": "high", - "lat": 24.7136, - "lng": 46.6753 + "lat": 42.6977, + "lng": 23.3219 }, { "terms": [ - "egypt", - "egyptian" + "serbia", + "serbian" ], - "label": "Egypt", + "label": "Serbia", "kind": "country", "precision": "low", - "lat": 26.8206, - "lng": 30.8025 + "lat": 44.0165, + "lng": 21.0059 }, { "terms": [ - "cairo" + "belgrade" ], - "label": "Cairo, Egypt", + "label": "Belgrade, Serbia", "kind": "city", "precision": "high", - "lat": 30.0444, - "lng": 31.2357 + "lat": 44.7866, + "lng": 20.4489 }, { "terms": [ - "jordan", - "jordanian" + "croatia", + "croatian" ], - "label": "Jordan", + "label": "Croatia", "kind": "country", "precision": "low", - "lat": 30.5852, - "lng": 36.2384 + "lat": 45.1, + "lng": 15.2 }, { "terms": [ - "palestine", - "palestinian", - "gaza" + "estonia", + "estonian" ], - "label": "Palestine", + "label": "Estonia", "kind": "country", "precision": "low", - "lat": 31.9522, - "lng": 35.2332 + "lat": 58.5953, + "lng": 25.0136 }, { "terms": [ - "hormuz" + "finland", + "finnish" ], - "label": "Strait of Hormuz", - "kind": "region", - "precision": "medium", - "lat": 26.5667, - "lng": 56.25 + "label": "Finland", + "kind": "country", + "precision": "low", + "lat": 61.9241, + "lng": 25.7482 }, { "terms": [ - "libya", - "libyan" + "norway", + "norwegian" ], - "label": "Libya", + "label": "Norway", "kind": "country", "precision": "low", - "lat": 26.3351, - "lng": 17.2283 + "lat": 60.472, + "lng": 8.4689 }, { "terms": [ - "tunisia", - "tunisian" + "portugal", + "portuguese" ], - "label": "Tunisia", + "label": "Portugal", "kind": "country", "precision": "low", - "lat": 33.8869, - "lng": 9.5375 + "lat": 39.3999, + "lng": -8.2245 }, { "terms": [ - "algeria", - "algerian" + "albania", + "albanian" ], - "label": "Algeria", + "label": "Albania", "kind": "country", "precision": "low", - "lat": 28.0339, - "lng": 1.6596 + "lat": 41.1533, + "lng": 20.1683 }, { "terms": [ - "morocco", - "moroccan" + "kosovo", + "kosovar" ], - "label": "Morocco", + "label": "Kosovo", "kind": "country", "precision": "low", - "lat": 31.7917, - "lng": -7.0926 + "lat": 42.6026, + "lng": 20.902 }, { "terms": [ - "somalia", - "somali" + "north macedonia", + "macedonia" ], - "label": "Somalia", + "label": "North Macedonia", "kind": "country", "precision": "low", - "lat": 5.1521, - "lng": 46.1996 + "lat": 41.5122, + "lng": 21.7453 }, { "terms": [ - "kenya", - "kenyan" + "montenegro", + "montenegrin" ], - "label": "Kenya", + "label": "Montenegro", "kind": "country", "precision": "low", - "lat": -0.0236, - "lng": 37.9062 + "lat": 42.7087, + "lng": 19.3744 }, { "terms": [ - "south africa", - "south african" + "bosnia", + "bosnia and herzegovina", + "bosnian" ], - "label": "South Africa", + "label": "Bosnia and Herzegovina", "kind": "country", "precision": "low", - "lat": -30.5595, - "lng": 22.9375 + "lat": 43.9159, + "lng": 17.6791 }, { "terms": [ - "india", - "indian" + "slovakia", + "slovak" ], - "label": "India", + "label": "Slovakia", "kind": "country", "precision": "low", - "lat": 20.5937, - "lng": 78.9629 + "lat": 48.669, + "lng": 19.699 }, { "terms": [ - "china", - "chinese" + "slovenia", + "slovenian" ], - "label": "China", + "label": "Slovenia", "kind": "country", "precision": "low", - "lat": 35.8617, - "lng": 104.1954 + "lat": 46.1512, + "lng": 14.9955 }, { "terms": [ - "russia", - "russian" + "moldova", + "moldovan" ], - "label": "Russia", + "label": "Moldova", "kind": "country", "precision": "low", - "lat": 61.524, - "lng": 105.3188 + "lat": 47.4116, + "lng": 28.3699 }, { "terms": [ - "vietnam", - "vietnamese" + "luxembourg", + "luxembourgish" ], - "label": "Vietnam", + "label": "Luxembourg", "kind": "country", "precision": "low", - "lat": 14.0583, - "lng": 108.2772 + "lat": 49.8153, + "lng": 6.1296 }, { "terms": [ - "philippines", - "philippine", - "filipino" + "europe", + "european" ], - "label": "Philippines", - "kind": "country", + "label": "Europe", + "kind": "continent", "precision": "low", - "lat": 12.8797, - "lng": 121.774 + "lat": 50, + "lng": 10 }, { "terms": [ - "indonesia", - "indonesian" + "tehran" ], - "label": "Indonesia", - "kind": "country", - "precision": "low", - "lat": -0.7893, - "lng": 113.9213 + "label": "Tehran, Iran", + "kind": "city", + "precision": "high", + "lat": 35.6892, + "lng": 51.389 }, { "terms": [ - "japan", - "japanese" + "iran", + "iranian" ], - "label": "Japan", + "label": "Iran", "kind": "country", "precision": "low", - "lat": 36.2048, - "lng": 138.2529 + "lat": 32.4279, + "lng": 53.688 }, { "terms": [ - "south korea", - "korean" + "tel aviv" ], - "label": "South Korea", - "kind": "country", - "precision": "low", - "lat": 35.9078, - "lng": 127.7669 + "label": "Tel Aviv, Israel", + "kind": "city", + "precision": "high", + "lat": 32.0853, + "lng": 34.7818 }, { "terms": [ - "north korea", - "north korean" + "jerusalem" ], - "label": "North Korea", - "kind": "country", - "precision": "low", - "lat": 40.3399, - "lng": 127.5101 + "label": "Jerusalem", + "kind": "city", + "precision": "high", + "lat": 31.7683, + "lng": 35.2137 }, { "terms": [ - "myanmar", - "burma", - "burmese" + "israel", + "israeli" ], - "label": "Myanmar", + "label": "Israel", "kind": "country", "precision": "low", - "lat": 21.9162, - "lng": 95.956 + "lat": 31.0461, + "lng": 34.8516 }, { "terms": [ - "bangladesh", - "bangladeshi" + "beirut" ], - "label": "Bangladesh", - "kind": "country", - "precision": "low", - "lat": 23.685, - "lng": 90.3563 + "label": "Beirut, Lebanon", + "kind": "city", + "precision": "high", + "lat": 33.8938, + "lng": 35.5018 }, { "terms": [ - "sri lanka", - "sri lankan" + "lebanon", + "lebanese" ], - "label": "Sri Lanka", + "label": "Lebanon", "kind": "country", "precision": "low", - "lat": 7.8731, - "lng": 80.7718 + "lat": 33.8547, + "lng": 35.8623 }, { "terms": [ - "thailand", - "thai" + "baghdad" ], - "label": "Thailand", - "kind": "country", - "precision": "low", - "lat": 15.87, - "lng": 100.9925 + "label": "Baghdad, Iraq", + "kind": "city", + "precision": "high", + "lat": 33.3152, + "lng": 44.3661 }, { "terms": [ - "malaysia", - "malaysian" + "iraq", + "iraqi" ], - "label": "Malaysia", + "label": "Iraq", "kind": "country", "precision": "low", - "lat": 4.2105, - "lng": 101.9758 - }, - { - "terms": [ - "bondi" - ], - "label": "Bondi Beach, Australia", - "kind": "neighbourhood", - "precision": "high", - "lat": -33.8915, - "lng": 151.2767 + "lat": 33.2232, + "lng": 43.6793 }, { "terms": [ - "sydney" + "sanaa", + "sana'a" ], - "label": "Sydney, Australia", + "label": "Sanaa, Yemen", "kind": "city", "precision": "high", - "lat": -33.8688, - "lng": 151.2093 + "lat": 15.3694, + "lng": 44.191 }, { "terms": [ - "mexico", - "mexican" + "yemen", + "yemeni" ], - "label": "Mexico", + "label": "Yemen", "kind": "country", "precision": "low", - "lat": 23.6345, - "lng": -102.5528 + "lat": 15.5527, + "lng": 48.5164 }, { "terms": [ - "brazil", - "brazilian" + "abuja" ], - "label": "Brazil", - "kind": "country", - "precision": "low", - "lat": -14.235, - "lng": -51.9253 + "label": "Abuja, Nigeria", + "kind": "city", + "precision": "high", + "lat": 9.0765, + "lng": 7.3986 }, { "terms": [ - "colombia", - "colombian" + "nigeria", + "nigerian" ], - "label": "Colombia", + "label": "Nigeria", "kind": "country", "precision": "low", - "lat": 4.5709, - "lng": -74.2973 + "lat": 9.082, + "lng": 8.6753 }, { "terms": [ - "auschwitz" + "islamabad" ], - "label": "Auschwitz, Poland", - "kind": "town", + "label": "Islamabad, Pakistan", + "kind": "city", "precision": "high", - "lat": 50.0343, - "lng": 19.1784 + "lat": 33.6844, + "lng": 73.0479 }, { "terms": [ - "united states", - "usa", - "u.s.", - "u.s.a.", - "american" + "pakistan", + "pakistani" ], - "label": "United States", + "label": "Pakistan", "kind": "country", "precision": "low", - "lat": 39.8283, - "lng": -98.5795 + "lat": 30.3753, + "lng": 69.3451 }, { "terms": [ - "california" + "syria", + "syrian" ], - "label": "California, USA", - "kind": "state", - "precision": "medium", - "lat": 36.7783, - "lng": -119.4179 - }, - { - "terms": [ - "yosemite" + "label": "Syria", + "kind": "country", + "precision": "low", + "lat": 34.8021, + "lng": 38.9968 + }, + { + "terms": [ + "damascus" ], - "label": "Yosemite, California, USA", - "kind": "region", + "label": "Damascus, Syria", + "kind": "city", "precision": "high", - "lat": 37.8651, - "lng": -119.5383 + "lat": 33.5138, + "lng": 36.2765 }, { "terms": [ - "canada", - "canadian" + "afghanistan", + "afghan" ], - "label": "Canada", + "label": "Afghanistan", "kind": "country", "precision": "low", - "lat": 56.1304, - "lng": -106.3468 + "lat": 33.9391, + "lng": 67.71 }, { "terms": [ - "australia", - "australian" + "kabul" ], - "label": "Australia", + "label": "Kabul, Afghanistan", + "kind": "city", + "precision": "high", + "lat": 34.5553, + "lng": 69.2075 + }, + { + "terms": [ + "turkey", + "turkiye", + "turkish" + ], + "label": "Turkey", "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 + "lat": 38.9637, + "lng": 35.2433 }, - "freshnessSlaByTier": { - "high": { - "count": 1, - "avgMinutes": 0, - "p95Minutes": 0 - }, - "medium": { - "count": 1, - "avgMinutes": 0, - "p95Minutes": 0 - } + { + "terms": [ + "istanbul" + ], + "label": "Istanbul, Turkey", + "kind": "city", + "precision": "high", + "lat": 41.0082, + "lng": 28.9784 }, - "failureReasons": { - "success": 2 + { + "terms": [ + "saudi arabia", + "saudi" + ], + "label": "Saudi Arabia", + "kind": "country", + "precision": "low", + "lat": 23.8859, + "lng": 45.0792 }, - "sourceRunStats": { - "totalConfiguredSources": 4, - "sourcesCheckedThisRun": 4, - "sourcesUpdatedThisRun": 2, - "sourcesFailedThisRun": 0, - "sourcesUnchangedThisRun": 0 + { + "terms": [ + "riyadh" + ], + "label": "Riyadh, Saudi Arabia", + "kind": "city", + "precision": "high", + "lat": 24.7136, + "lng": 46.6753 }, - "runDurationMs": 347, - "playwrightFallback": { - "attempts": 0, - "successes": 0, - "maxAttempts": 4, - "timeoutMs": 12000 + { + "terms": [ + "egypt", + "egyptian" + ], + "label": "Egypt", + "kind": "country", + "precision": "low", + "lat": 26.8206, + "lng": 30.8025 }, - "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": 70, - "criticalOnly": false, - "skipPlaywright": false, - "transitions": [] - } - } - }, - "health": { - "expectedRefreshMinutes": 30, - "staleAfterMinutes": 50, - "lastAttemptedRefreshTime": "2026-04-24T18:32:34.861Z", - "usedFallback": false, - "lastSuccessfulRefreshTime": "2026-04-24T18:32:34.861Z", - "lastSuccessfulRunId": "24905557737", - "lastSuccessfulRunNumber": "390", - "lastSuccessfulRunAttempt": "1", - "lastSuccessfulHeadSha": "304c5fc2c1c7d7db85bc59e94a74e92dbd7fa972", - "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 + { + "terms": [ + "cairo" + ], + "label": "Cairo, Egypt", + "kind": "city", + "precision": "high", + "lat": 30.0444, + "lng": 31.2357 }, - "extraMetrics": { - "schedulerMode": "candidate", - "coverage": { - "eligible": 4, - "scheduled": 4, - "initialScheduled": 1, - "continuationAttempted": 3, - "checked": 4, - "eligibleCheckedRate": 1, - "scheduledCheckedRate": 1 + { + "terms": [ + "jordan", + "jordanian" + ], + "label": "Jordan", + "kind": "country", + "precision": "low", + "lat": 30.5852, + "lng": 36.2384 + }, + { + "terms": [ + "palestine", + "palestinian", + "gaza" + ], + "label": "Palestine", + "kind": "country", + "precision": "low", + "lat": 31.9522, + "lng": 35.2332 + }, + { + "terms": [ + "hormuz" + ], + "label": "Strait of Hormuz", + "kind": "region", + "precision": "medium", + "lat": 26.5667, + "lng": 56.25 + }, + { + "terms": [ + "libya", + "libyan" + ], + "label": "Libya", + "kind": "country", + "precision": "low", + "lat": 26.3351, + "lng": 17.2283 + }, + { + "terms": [ + "tunisia", + "tunisian" + ], + "label": "Tunisia", + "kind": "country", + "precision": "low", + "lat": 33.8869, + "lng": 9.5375 + }, + { + "terms": [ + "algeria", + "algerian" + ], + "label": "Algeria", + "kind": "country", + "precision": "low", + "lat": 28.0339, + "lng": 1.6596 + }, + { + "terms": [ + "morocco", + "moroccan" + ], + "label": "Morocco", + "kind": "country", + "precision": "low", + "lat": 31.7917, + "lng": -7.0926 + }, + { + "terms": [ + "somalia", + "somali" + ], + "label": "Somalia", + "kind": "country", + "precision": "low", + "lat": 5.1521, + "lng": 46.1996 + }, + { + "terms": [ + "kenya", + "kenyan" + ], + "label": "Kenya", + "kind": "country", + "precision": "low", + "lat": -0.0236, + "lng": 37.9062 + }, + { + "terms": [ + "south africa", + "south african" + ], + "label": "South Africa", + "kind": "country", + "precision": "low", + "lat": -30.5595, + "lng": 22.9375 + }, + { + "terms": [ + "india", + "indian" + ], + "label": "India", + "kind": "country", + "precision": "low", + "lat": 20.5937, + "lng": 78.9629 + }, + { + "terms": [ + "china", + "chinese" + ], + "label": "China", + "kind": "country", + "precision": "low", + "lat": 35.8617, + "lng": 104.1954 + }, + { + "terms": [ + "russia", + "russian" + ], + "label": "Russia", + "kind": "country", + "precision": "low", + "lat": 61.524, + "lng": 105.3188 + }, + { + "terms": [ + "vietnam", + "vietnamese" + ], + "label": "Vietnam", + "kind": "country", + "precision": "low", + "lat": 14.0583, + "lng": 108.2772 + }, + { + "terms": [ + "philippines", + "philippine", + "filipino" + ], + "label": "Philippines", + "kind": "country", + "precision": "low", + "lat": 12.8797, + "lng": 121.774 + }, + { + "terms": [ + "indonesia", + "indonesian" + ], + "label": "Indonesia", + "kind": "country", + "precision": "low", + "lat": -0.7893, + "lng": 113.9213 + }, + { + "terms": [ + "japan", + "japanese" + ], + "label": "Japan", + "kind": "country", + "precision": "low", + "lat": 36.2048, + "lng": 138.2529 + }, + { + "terms": [ + "south korea", + "korean" + ], + "label": "South Korea", + "kind": "country", + "precision": "low", + "lat": 35.9078, + "lng": 127.7669 + }, + { + "terms": [ + "north korea", + "north korean" + ], + "label": "North Korea", + "kind": "country", + "precision": "low", + "lat": 40.3399, + "lng": 127.5101 + }, + { + "terms": [ + "myanmar", + "burma", + "burmese" + ], + "label": "Myanmar", + "kind": "country", + "precision": "low", + "lat": 21.9162, + "lng": 95.956 + }, + { + "terms": [ + "bangladesh", + "bangladeshi" + ], + "label": "Bangladesh", + "kind": "country", + "precision": "low", + "lat": 23.685, + "lng": 90.3563 + }, + { + "terms": [ + "sri lanka", + "sri lankan" + ], + "label": "Sri Lanka", + "kind": "country", + "precision": "low", + "lat": 7.8731, + "lng": 80.7718 + }, + { + "terms": [ + "thailand", + "thai" + ], + "label": "Thailand", + "kind": "country", + "precision": "low", + "lat": 15.87, + "lng": 100.9925 + }, + { + "terms": [ + "malaysia", + "malaysian" + ], + "label": "Malaysia", + "kind": "country", + "precision": "low", + "lat": 4.2105, + "lng": 101.9758 + }, + { + "terms": [ + "bondi" + ], + "label": "Bondi Beach, Australia", + "kind": "neighbourhood", + "precision": "high", + "lat": -33.8915, + "lng": 151.2767 + }, + { + "terms": [ + "sydney" + ], + "label": "Sydney, Australia", + "kind": "city", + "precision": "high", + "lat": -33.8688, + "lng": 151.2093 + }, + { + "terms": [ + "mexico", + "mexican" + ], + "label": "Mexico", + "kind": "country", + "precision": "low", + "lat": 23.6345, + "lng": -102.5528 + }, + { + "terms": [ + "brazil", + "brazilian" + ], + "label": "Brazil", + "kind": "country", + "precision": "low", + "lat": -14.235, + "lng": -51.9253 + }, + { + "terms": [ + "colombia", + "colombian" + ], + "label": "Colombia", + "kind": "country", + "precision": "low", + "lat": 4.5709, + "lng": -74.2973 + }, + { + "terms": [ + "auschwitz" + ], + "label": "Auschwitz, Poland", + "kind": "town", + "precision": "high", + "lat": 50.0343, + "lng": 19.1784 + }, + { + "terms": [ + "united states", + "usa", + "u.s.", + "u.s.a.", + "american" + ], + "label": "United States", + "kind": "country", + "precision": "low", + "lat": 39.8283, + "lng": -98.5795 + }, + { + "terms": [ + "california" + ], + "label": "California, USA", + "kind": "state", + "precision": "medium", + "lat": 36.7783, + "lng": -119.4179 + }, + { + "terms": [ + "yosemite" + ], + "label": "Yosemite, California, USA", + "kind": "region", + "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 377 low-yield source(s) on health cooldown.", + "runMetrics": { + "schedulerMode": "candidate", + "htmlBudget": 40, + "htmlDomainCapPerRun": 3, + "htmlDomainUsage": { + "www.psni.police.uk": 1, + "www.westyorkshire.police.uk": 3, + "policie.gov.cz": 1, + "www.politie.nl": 2, + "www.bka.de": 1, + "english.elpais.com": 1, + "mossos.gencat.cat": 1, + "www.policia.es": 1, + "www.policiajudiciaria.pt": 1, + "news.met.police.uk": 2, + "www.avonandsomerset.police.uk": 2, + "www.scotland.police.uk": 1, + "www.guysandstthomas.nhs.uk": 1, + "www.kingston.gov.uk": 1, + "www.nelft.nhs.uk": 1, + "oxleas.nhs.uk": 1, + "www.sutton.gov.uk": 1, + "www.towerhamlets.gov.uk": 1, + "www.gov.uk": 2, + "extremismcommission.blog.gov.uk": 1, + "hmiprisons.justiceinspectorates.gov.uk": 1, + "www.judiciary.uk": 1, + "www.wmnow.co.uk": 1, + "www.wypcommunityalert.co.uk": 1, + "www.dni.gov": 1, + "rewardsforjustice.net": 1, + "euaa.europa.eu": 1, + "commission.europa.eu": 1, + "www.eppo.europa.eu": 1, + "anti-fraud.ec.europa.eu": 1, + "home-affairs.ec.europa.eu": 1, + "www.ealing.gov.uk": 1, + "www.redbridge.gov.uk": 1, + "www.stgeorges.nhs.uk": 1 + }, + "coverage": { + "eligible": 555, + "scheduled": 178, + "initialScheduled": 83, + "continuationAttempted": 95, + "checked": 176, + "eligibleCheckedRate": 0.317, + "scheduledCheckedRate": 0.989 + }, + "freshnessSlaByTier": { + "high": { + "count": 6, + "avgMinutes": 5366, + "p95Minutes": 11581 + }, + "low": { + "count": 15, + "avgMinutes": 6144, + "p95Minutes": 10308 + }, + "medium": { + "count": 20, + "avgMinutes": 5479, + "p95Minutes": 11581 + } + }, + "failureReasons": { + "success": 10, + "unchanged": 3, + "blocked-or-anti-bot": 2, + "timeout-or-aborted": 1 + }, + "sourceRunStats": { + "totalConfiguredSources": 557, + "sourcesCheckedThisRun": 178, + "sourcesUpdatedThisRun": 10, + "sourcesFailedThisRun": 2, + "sourcesUnchangedThisRun": 3 + }, + "runDurationMs": 289759, + "playwrightFallback": { + "attempts": 0, + "successes": 0, + "maxAttempts": 4, + "timeoutMs": 12000 + }, + "guardrails": { + "maxRuntimeMs": 720000, + "maxFailedSourceRate": 0.65, + "minSuccessfulSources": 8, + "targetSuccessfulSourcesPerRun": 60, + "failedSourceRate": 0.011, + "successfulSources": 10, + "violations": [], + "midRun": { + "throttleLevel": 0, + "totalAttempted": 178, + "totalFailed": 2, + "totalSuccessful": 10, + "failedRate": 0.011, + "successRate": 0.056, + "avgSourceDurationMs": 1628, + "criticalOnly": false, + "skipPlaywright": false, + "transitions": [] + } + } + }, + "health": { + "expectedRefreshMinutes": 30, + "staleAfterMinutes": 50, + "lastAttemptedRefreshTime": "2026-04-24T17:57:58.900Z", + "usedFallback": false, + "lastSuccessfulRefreshTime": "2026-04-24T17:57:58.900Z", + "lastSuccessfulRunId": "24903940111", + "lastSuccessfulRunNumber": "516", + "lastSuccessfulRunAttempt": "1", + "lastSuccessfulHeadSha": "08d14f1b3ca99a432f66980fe2f0bd0356d60b3e", + "lastSuccessfulEvent": "schedule", + "lastSuccessfulSourceCount": 176, + "sourceErrorCount": 2, + "hasWarnings": true, + "autoDeferredSourceCount": 377, + "autoDeferredSources": [ + { + "id": "frontex-news-releases", + "provider": "Frontex a News Releases", + "reason": "health-deprioritised", + "until": "2026-04-26T15:22:10.638Z", + "statusKind": "cooled_down" + }, + { + "id": "austria-interior-ministry-news", + "provider": "Austrian Interior Ministry - News", + "reason": "health-deprioritised", + "until": "2026-04-26T08:17:25.806Z", + "statusKind": "cooled_down" + }, + { + "id": "austria-interior-ministry-rss-index", + "provider": "Austrian Interior Ministry - News", + "reason": "health-deprioritised", + "until": "2026-04-26T08:17:25.806Z", + "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-26T15:22:10.638Z", + "statusKind": "cooled_down" + }, + { + "id": "denmark-pet-news", + "provider": "Danish Security and Intelligence Service - News", + "reason": "health-deprioritised", + "until": "2026-04-26T15:22:10.638Z", + "statusKind": "cooled_down" + }, + { + "id": "ecfr-feeds-index", + "provider": "ECFR - Feeds", + "reason": "health-deprioritised", + "until": "2026-04-26T15:22:10.638Z", + "statusKind": "cooled_down" + }, + { + "id": "enisa-news", + "provider": "ENISA (EU Cybersecurity Agency) a News", + "reason": "health-deprioritised", + "until": "2026-04-26T15:22:10.638Z", + "statusKind": "cooled_down" + }, + { + "id": "enisa-rss-transition-page", + "provider": "ENISA - RSS Feeds Transition Notice", + "reason": "health-deprioritised", + "until": "2026-04-26T15:22:10.638Z", + "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-26T15:22:10.638Z", + "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-26T15:22:10.638Z", + "statusKind": "cooled_down" + }, + { + "id": "europol-newsroom-html", + "provider": "Europol - Newsroom", + "reason": "health-deprioritised", + "until": "2026-04-26T15:22:10.638Z", + "statusKind": "cooled_down" + }, + { + "id": "finland-supo-news", + "provider": "Finnish Security Intelligence Service - News", + "reason": "health-deprioritised", + "until": "2026-04-26T15:22:10.638Z", + "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-26T15:22:10.638Z", + "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-26T15:22:10.638Z", + "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" + } + ], + "operationalDeferredSourceCount": 0, + "operationalDeferredSources": [], + "sourceRunStats": { + "totalConfiguredSources": 557, + "sourcesCheckedThisRun": 178, + "sourcesUpdatedThisRun": 10, + "sourcesFailedThisRun": 2, + "sourcesUnchangedThisRun": 3 + }, + "extraMetrics": { + "schedulerMode": "candidate", + "coverage": { + "eligible": 555, + "scheduled": 178, + "initialScheduled": 83, + "continuationAttempted": 95, + "checked": 176, + "eligibleCheckedRate": 0.317, + "scheduledCheckedRate": 0.989 + }, + "freshnessSlaByTier": { + "high": { + "count": 6, + "avgMinutes": 5366, + "p95Minutes": 11581 + }, + "low": { + "count": 15, + "avgMinutes": 6144, + "p95Minutes": 10308 + }, + "medium": { + "count": 20, + "avgMinutes": 5479, + "p95Minutes": 11581 + } + }, + "failureReasons": { + "success": 10, + "unchanged": 3, + "blocked-or-anti-bot": 2, + "timeout-or-aborted": 1 + }, + "sourceRunStats": { + "totalConfiguredSources": 557, + "sourcesCheckedThisRun": 178, + "sourcesUpdatedThisRun": 10, + "sourcesFailedThisRun": 2, + "sourcesUnchangedThisRun": 3 + }, + "playwrightFallback": { + "attempts": 0, + "successes": 0 + }, + "guardrailViolations": [], + "midRunGuardrail": { + "throttleLevel": 0, + "totalAttempted": 178, + "totalFailed": 2, + "totalSuccessful": 10, + "failedRate": 0.011, + "successRate": 0.056, + "avgSourceDurationMs": 1628, + "criticalOnly": false, + "skipPlaywright": false, + "transitions": [] + } + }, + "sourceHealth": { + "euaa-news": { + "provider": "EUAA (EU Agency for Asylum) - Press Releases", + "lane": "border", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "eulisa-news-events": { + "provider": "eu-LISA - News and Events (RSS)", + "lane": "border", + "kind": "rss", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "frontex-news-releases": { + "provider": "Frontex a News Releases", + "lane": "border", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "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-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "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", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "austria-interior-ministry-rss-index": { + "provider": "Austrian Interior Ministry - News", + "lane": "context", + "kind": "rss", + "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", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "belgium-crisis-centre-news": { + "provider": "Belgian National Crisis Centre - Newsroom", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-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" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "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-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "denmark-pet-news": { + "provider": "Danish Security and Intelligence Service - News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 2, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-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" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "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-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "ecfr-feeds-index": { + "provider": "ECFR - Feeds", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 1, + "failedRuns": 7, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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: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" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "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-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "enisa-news": { + "provider": "ENISA (EU Cybersecurity Agency) a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastEmptyAt": null, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "enisa-rss-transition-page": { + "provider": "ENISA - RSS Feeds Transition Notice", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastEmptyAt": null, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "eurojust-press-news-html": { + "provider": "Eurojust - Press Releases and News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastEmptyAt": null, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "europol-media-press": { + "provider": "Europol a Media and Press", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastEmptyAt": null, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "europol-news-rss": { + "provider": "Europol - Newsroom (RSS)", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "europol-newsroom-html": { + "provider": "Europol - Newsroom", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastEmptyAt": null, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "finland-supo-news": { + "provider": "Finnish Security Intelligence Service - News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastEmptyAt": null, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "german-bfv-news": { + "provider": "German BfV - Press", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 3, + "failedRuns": 5, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 3, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "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" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "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-24T18:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "nctv-english-rss": { + "provider": "NCTV Netherlands - English RSS", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 2, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-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" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "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-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "statewatch-news": { + "provider": "Statewatch - News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 1, + "failedRuns": 7, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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: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" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "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-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "czech-police-news": { + "provider": "Police of the Czech Republic - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 27, + "failedRuns": 4, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 27, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-20T06:30:13.977Z", + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "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-24T18:57:58.900Z" + }, + "dutch-police-rss-index": { + "provider": "Dutch National Police - News (EN)", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 86, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 86, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "ertzaintza-news": { + "provider": "Ertzaintza - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "finland-police-news": { + "provider": "Finnish Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastEmptyAt": null, + "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-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" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "german-bka-press": { + "provider": "German BKA - Press Releases (2026 archive)", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastEmptyAt": null, + "lastErrorCategory": "timeout", + "lastErrorMessage": "This operation was aborted", + "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-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" + }, + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "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-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "german-bka-press-releases-de": { + "provider": "BKA Germany - Press Releases", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 16, + "failedRuns": 5, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 1, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T17:39:27.641Z", + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "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": null, + "autoSkipReason": null, + "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-24T18:57:58.900Z" + }, + "guardia-civil-news": { + "provider": "El Pais English - Guardia Civil", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 3, + "failedRuns": 5, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 3, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "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" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "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-24T18:57:58.900Z" + }, + "mossos-news": { + "provider": "Mossos d'Esquadra - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 86, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 86, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "policia-nacional-news": { + "provider": "Policia Nacional - Press", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 27, + "failedRuns": 4, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 27, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-19T18:05:04.781Z", + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "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-24T18:57:58.900Z" + }, + "romanian-police-news": { + "provider": "Romanian Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastEmptyAt": null, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "eppo-news-node-7": { + "provider": "European Public Prosecutor's Office - News (RSS)", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 14, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "eu-commission-counter-terrorism-measures-2026": { + "provider": "European Commission - Counter Terrorism Measures 2026", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "eu-commission-home-affairs-topic": { + "provider": "European Commission - Home Affairs News", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "eu-council-fight-against-terrorism": { + "provider": "Council of the EU - Fight Against Terrorism", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "eu-council-jha-register-rss": { + "provider": "Council of the EU - Latest Documents RSS", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "eu-council-press-releases": { + "provider": "Council of the European Union a Press Releases (RSS)", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "eu-council-press-releases-html": { + "provider": "Council of the EU - Press Releases", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 14, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "eu-council-rss-index": { + "provider": "Council of the EU - RSS Index", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "eu-ct-coordinator": { + "provider": "EU Counter-Terrorism Coordinator a Council of the EU", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "eu-ejustice-news-rss": { + "provider": "European e-Justice - News RSS", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 62, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 39, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-18T13:27:18.679Z", + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "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-24T18:57:58.900Z" + }, + "eu-eppo-news": { + "provider": "European Public Prosecutor's Office - News", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "eu-fra-rss": { + "provider": "EU Agency for Fundamental Rights (FRA) a RSS", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 1, + "failedRuns": 7, + "consecutiveFailures": 2, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 2, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked 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" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "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-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "eu-home-affairs-news": { + "provider": "European Commission - Home Affairs News", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "eu-olaf-news": { + "provider": "OLAF (EU Anti-Fraud Office) a News", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "eu-security-union-strategy": { + "provider": "European Commission - Home Affairs News", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "eurojust-publications": { + "provider": "Eurojust a Publications (RSS)", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 1, + "successfulRuns": 110, + "emptyRuns": 0, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-24T17:57:58.900Z", + "lastFailureAt": null, + "lastEmptyAt": null, + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 100, + "quarantined": false, + "quarantinedAt": null, + "quarantineReason": null, + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "eurojust-rss-feeds-page": { + "provider": "Eurojust - RSS Feeds", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastEmptyAt": null, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "europarl-committee-libe": { + "provider": "European Parliament - LIBE Press Releases", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 14, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "europarl-committee-sede": { + "provider": "European Parliament - SEDE Press Releases", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "europarl-pressreleases-committees": { + "provider": "European Parliament a Press Releases (Committees) (RSS)", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "europol-tesat-report": { + "provider": "Europol - TESAT Report", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastEmptyAt": null, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "europol-eu-iru": { + "provider": "Europol a EU Internet Referral Unit (EU IRU)", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastEmptyAt": null, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "eu-council-terrorism-sanctions": { + "provider": "Council of the EU - Sanctions Against Terrorism", + "lane": "sanctions", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "unhcr-europe-news": { + "provider": "UNHCR Europe a News", + "lane": "border", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "clingendael-publications": { + "provider": "Clingendael Institute a Publications", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 1, + "failedRuns": 7, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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: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" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "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-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "ecfr-publications": { + "provider": "European Council on Foreign Relations (ECFR) a Publications", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 1, + "failedRuns": 7, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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: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" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "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-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "euronews-europe": { + "provider": "Euronews a Europe", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 28, + "emptyRuns": 23, + "failedRuns": 5, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 2, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-22T22:53:26.529Z", + "lastFailureAt": "2026-04-23T03:28:47.210Z", + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "http-status-error", + "message": "HTTP 406", + "at": "2026-04-23T03:28:47.210Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 18, + "quarantined": true, + "quarantinedAt": "2026-04-23T03:28:47.210Z", + "quarantineReason": "Health score degraded to 24 after repeated failures", + "nextFetchAt": "2026-04-24T20:39:58.900Z" + }, + "financial-times-world": { + "provider": "Financial Times a World", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 1, + "failedRuns": 7, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 3, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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: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" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "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-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "french-interior-ministry-news": { + "provider": "French Ministry of the Interior - News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "netherlands-nctv-news": { + "provider": "Dutch NCTV - News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastEmptyAt": null, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "politico-europe": { + "provider": "Politico Europe", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 1, + "failedRuns": 7, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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: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" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "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-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "rte-ireland-news-rss": { + "provider": "RTE News - Ireland (RSS)", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 2, + "emptyRuns": 11, + "failedRuns": 4, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-23T11:47:27.254Z", + "lastFailureAt": "2026-04-20T08:39:19.161Z", + "lastEmptyAt": "2026-04-24T15:22:10.638Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "telegraph-world-news": { + "provider": "The Telegraph a World News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 30, + "emptyRuns": 30, + "failedRuns": 3, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-23T16:07:40.227Z", + "lastFailureAt": "2026-04-19T14:11:10.963Z", + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 14, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T20:11:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "french-gendarmerie-news": { + "provider": "Gendarmerie Nationale - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "french-police-nationale-news": { + "provider": "Police Nationale - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "ireland-gardai-press": { + "provider": "An Garda Siochana - Press Releases", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastEmptyAt": null, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "netherlands-police-news": { + "provider": "Dutch National Police - News (EN)", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 86, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 86, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "portugal-pj-news": { + "provider": "Policia Judiciaria Portugal - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 48, + "failedRuns": 4, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 26, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-20T15:59:44.503Z", + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "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-24T18:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "coe-counter-terrorism": { + "provider": "Council of Europe a Counter-Terrorism", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "echr-key-judgments-rss": { + "provider": "European Court of Human Rights - Key Judgments RSS", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 61, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 1, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T17:39:27.641Z", + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "http-status-error", + "message": "HTTP 400", + "at": "2026-04-22T17:39:27.641Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "echr-press-releases-rss": { + "provider": "UK Judiciary - Judgments Feed", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "french-justice-ministry-news": { + "provider": "French Ministry of Justice - News", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "netherlands-prosecution-news": { + "provider": "Dutch Public Prosecution Service - News", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastEmptyAt": null, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "bfv-de-english": { + "provider": "BfV service page (Federal Office for the Protection of the Constitution)", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 72, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 61, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-17T11:07:28.674Z", + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "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-24T18:57:58.900Z" + }, + "dsn-at-english": { + "provider": "DSN Austria - Aktuelles", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 82, + "failedRuns": 1, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastEmptyAt": "2026-04-24T13:53:37.949Z", + "lastErrorCategory": "http-status-error", + "lastErrorMessage": "HTTP 502", + "recentErrors": [ + { + "category": "http-status-error", + "message": "HTTP 502", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "pet-dk-english": { + "provider": "PET (Denmark) a English News", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 2, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-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" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "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-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "pst-no-english": { + "provider": "PST (Norway) English reporting page", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastEmptyAt": null, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "sapo-se-english": { + "provider": "Swedish Security Service English news", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "supo-fi-english": { + "provider": "SUPO Finland news and press releases", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastEmptyAt": null, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "iom-news": { + "provider": "IOM (International Organization for Migration) a News", + "lane": "border", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastEmptyAt": null, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "acled-updates": { + "provider": "ACLED a Updates and Analysis", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 1, + "failedRuns": 7, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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: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" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "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-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "aljazeera-news-rss": { + "provider": "Al Jazeera English a Top Stories (RSS)", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 1, + "emptyRuns": 26, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-23T10:13:21.253Z", + "lastFailureAt": "2026-04-20T17:16:47.386Z", + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T21:35:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "counter-extremism-project-news": { + "provider": "Counter Extremism Project a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 1, + "failedRuns": 6, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 2, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-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" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "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-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "interpol-news-events": { + "provider": "INTERPOL a News and Events", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "just-security": { + "provider": "Just Security a Law, Rights & National Security", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 3, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-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" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "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-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "long-war-journal": { + "provider": "Long War Journal a News Feed", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T11:47:26.601Z", + "lastBuiltCount": 0, + "successfulRuns": 6, + "emptyRuns": 18, + "failedRuns": 4, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 12, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-21T11:46:02.615Z", + "lastFailureAt": "2026-04-18T00:05:41.686Z", + "lastEmptyAt": "2026-04-24T11:47:26.601Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T23:47:26.601Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 26, + "quarantined": false, + "quarantinedAt": null, + "quarantineReason": null, + "nextFetchAt": "2026-04-24T23:47:26.601Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "nato-news-rss": { + "provider": "NATO a News (RSS)", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 2, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-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" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "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-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "occrp-news": { + "provider": "OCCRP a Organized Crime and Corruption Reporting Project", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 2, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "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" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "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-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "osce-press-releases": { + "provider": "OSCE a Press Releases", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "resolve-network-research": { + "provider": "RESOLVE Network a Research", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 1, + "failedRuns": 7, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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: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" + }, + { + "category": "http-status-error", + "message": "HTTP 503", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "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-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "reuters-uk": { + "provider": "Reuters a UK News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 1, + "failedRuns": 7, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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: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" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "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-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "rferl-security-news-rss": { + "provider": "Radio Free Europe/Radio Liberty a Security (RSS)", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T11:47:26.601Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 11, + "failedRuns": 4, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 11, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-20T08:39:19.161Z", + "lastEmptyAt": "2026-04-24T11:47:26.601Z", + "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-24T23:47:26.601Z", + "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-24T23:47:26.601Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "soufan-center-intelbrief": { + "provider": "The Soufan Center a IntelBrief", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 1, + "failedRuns": 7, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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: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" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "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-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "tony-blair-institute-news": { + "provider": "Tony Blair Institute for Global Change a Publications", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 1, + "failedRuns": 7, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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: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" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "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-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "unodc-news": { + "provider": "UNODC (UN Office on Drugs and Crime) a Press Releases", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 27, + "failedRuns": 4, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 27, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-20T06:30:13.977Z", + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "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-24T18:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "gctf-news": { + "provider": "Global Counterterrorism Forum (GCTF) a News", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastEmptyAt": null, + "lastErrorCategory": "network-failure", + "lastErrorMessage": "fetch failed", + "recentErrors": [ + { + "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" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "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-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "unoct-news": { + "provider": "UN Office of Counter-Terrorism (UNOCT) - News", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 5, + "successfulRuns": 5, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-24T17:57:58.900Z", + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 50, + "quarantined": false, + "quarantinedAt": null, + "quarantineReason": null, + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "unsc-counter-terrorism-committee": { + "provider": "UN Security Council - Counter-Terrorism Committee (CTC) Updates", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastEmptyAt": null, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "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", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "gnet-radicalisation-rss": { + "provider": "Global Network on Extremism & Technology (GNET) a Radicalisation (RSS)", + "lane": "prevention", + "kind": "rss", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 1, + "emptyRuns": 0, + "failedRuns": 8, + "consecutiveFailures": 8, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-16T16:57:11.406Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "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" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "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-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "gnet-youth-rss": { + "provider": "Global Network on Extremism & Technology (GNET) a Youth (RSS)", + "lane": "prevention", + "kind": "rss", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 5, + "emptyRuns": 0, + "failedRuns": 11, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-17T08:04:04.612Z", + "lastFailureAt": "2026-04-24T17:57:58.900Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "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" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T17:57:58.900Z" + } + ], + "cooldownUntil": "2026-04-26T17:57:58.900Z", + "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-26T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "fatf-news": { + "provider": "Financial Action Task Force (FATF) a News", + "lane": "sanctions", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "interpol-notices": { + "provider": "INTERPOL a Notices", + "lane": "sanctions", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "unsc-1267-press-releases": { + "provider": "UN Security Council - ISIL/Da'esh & Al-Qaeda Sanctions Committee Press Releases", + "lane": "sanctions", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastEmptyAt": null, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "barking-dagenham-council-news": { + "provider": "Barking and Dagenham Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 2, + "failedRuns": 7, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 5, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-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" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "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-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "bexley-council-news": { + "provider": "Bexley Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "brent-council-news": { + "provider": "Brent Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "bromley-council-news": { + "provider": "Bromley Council a Newsroom", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 2, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-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" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "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-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "camden-council-news": { + "provider": "Camden Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "chelsea-westminster-news": { + "provider": "Chelsea and Westminster Hospital NHS Foundation Trust a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "city-of-london-police-fraud-reporting": { + "provider": "City of London Police - Fraud Reporting", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "cnwl-news": { + "provider": "Central and North West London NHS Foundation Trust a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "croydon-council-news": { + "provider": "Croydon Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "ealing-council-news": { + "provider": "Ealing Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 1, + "emptyRuns": 62, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 34, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", + "lastFailureAt": "2026-04-18T21:09:53.488Z", + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "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-24T18:57:58.900Z" + }, + "east-london-nhs-news": { + "provider": "East London NHS Foundation Trust a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastEmptyAt": null, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "enfield-council-news": { + "provider": "Enfield Council a News and Events", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "gosh-news": { + "provider": "Great Ormond Street Hospital a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "guys-st-thomas-news": { + "provider": "Guy's and St Thomas' NHS Foundation Trust a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "hackney-council-news": { + "provider": "Hackney Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "hammersmith-fulham-news": { + "provider": "Hammersmith and Fulham Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 2, + "failedRuns": 7, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-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" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "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-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "harrow-council-news": { + "provider": "Harrow Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastEmptyAt": null, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "havering-council-news": { + "provider": "Havering Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "heathrow-media-centre": { + "provider": "Heathrow a Media Centre", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastEmptyAt": null, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "hillingdon-council-news": { + "provider": "Hillingdon Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "homerton-healthcare-news": { + "provider": "Homerton Healthcare NHS Foundation Trust a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 27, + "failedRuns": 4, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 27, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-20T06:30:13.977Z", + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "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-24T18:57:58.900Z" + }, + "hounslow-council-news": { + "provider": "Hounslow Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "imperial-healthcare-news": { + "provider": "Imperial College Healthcare NHS Trust a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastEmptyAt": null, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "islington-council-news": { + "provider": "Islington Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "kensington-chelsea-newsroom": { + "provider": "Royal Borough of Kensington and Chelsea a Newsroom", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastEmptyAt": null, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "kings-college-hospital-news": { + "provider": "King's College Hospital NHS Foundation Trust a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "kingston-council-news": { + "provider": "Kingston Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 72, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 17, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-21T08:24:19.478Z", + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "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-24T18:57:58.900Z" + }, + "lambeth-council-news": { + "provider": "Lambeth Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "lnwh-news": { + "provider": "London North West University Healthcare NHS Trust a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "london-ambulance-news": { + "provider": "London Ambulance Service a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastEmptyAt": null, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "london-city-airport-media-centre": { + "provider": "London City Airport a Media Centre", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "london-councils-news": { + "provider": "London Councils a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastEmptyAt": null, + "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": "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" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "london-fire-brigade-news": { + "provider": "London Fire Brigade a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastEmptyAt": null, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "london-gov-home": { + "provider": "London.gov.uk", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastEmptyAt": null, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "london-gov-press-releases-html": { + "provider": "London.gov.uk - Press Releases", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastEmptyAt": null, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "london-gov-rss-80603": { + "provider": "Mayor of London - Press Releases", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "london-gov-rss-80632": { + "provider": "London Assembly - Press Releases", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "mayor-of-london-press-releases": { + "provider": "Mayor of London a Press Releases", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 27, + "failedRuns": 4, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 27, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-20T06:30:13.977Z", + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "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-24T18:57:58.900Z" + }, + "merton-council-news": { + "provider": "Merton Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 72, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 17, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-21T08:24:19.478Z", + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "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-24T18:57:58.900Z" + }, + "met-police-the-met-tag": { + "provider": "Metropolitan Police - The Met Tag", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 13, + "emptyRuns": 81, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "moorfields-news": { + "provider": "Moorfields Eye Hospital NHS Foundation Trust a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "nelft-news": { + "provider": "North East London NHS Foundation Trust a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "newham-council-news": { + "provider": "Newham Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "nhs-london-ncl-news": { + "provider": "NHS North Central London a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastEmptyAt": null, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "nhs-london-nel-news": { + "provider": "NHS North East London a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 72, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 16, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-21T10:07:46.576Z", + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "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-24T18:57:58.900Z" + }, + "nhs-london-nwl-news": { + "provider": "NHS North West London a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "nhs-london-sel-news": { + "provider": "NHS South East London a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 2, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-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" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "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-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "nhs-london-swl-news": { + "provider": "NHS South West London a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastEmptyAt": null, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "north-middlesex-news": { + "provider": "North Middlesex University Hospital a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "oxleas-news": { + "provider": "Oxleas NHS Foundation Trust a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "port-of-london-authority-news": { + "provider": "Port of London Authority a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastEmptyAt": null, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "redbridge-council-news": { + "provider": "Redbridge Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "royal-free-london-news": { + "provider": "Royal Free London NHS Foundation Trust a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "royal-greenwich-news": { + "provider": "Royal Borough of Greenwich a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 2, + "failedRuns": 7, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 5, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-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" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "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-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "slam-news": { + "provider": "South London and Maudsley NHS Foundation Trust a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 27, + "failedRuns": 4, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 27, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-20T06:30:13.977Z", + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "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-24T18:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "st-georges-news": { + "provider": "St George's University Hospitals NHS Foundation Trust a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "sutton-council-news": { + "provider": "Sutton Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "swlstg-news": { + "provider": "South West London and St George's Mental Health NHS Trust a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "tavistock-portman-news": { + "provider": "Tavistock and Portman NHS Foundation Trust a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastEmptyAt": null, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "tfl-press-releases-html": { + "provider": "Transport for London - Press Releases", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "tower-hamlets-council-news": { + "provider": "Tower Hamlets Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 27, + "failedRuns": 4, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 27, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-20T06:30:13.977Z", + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "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-24T18:57:58.900Z" + }, + "uclh-news": { + "provider": "University College London Hospitals a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 58, + "failedRuns": 2, + "consecutiveFailures": 2, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 2, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "waltham-forest-council-news": { + "provider": "Waltham Forest Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "westminster-city-council-news": { + "provider": "Westminster City Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 2, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-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" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "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-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "whittington-health-news": { + "provider": "Whittington Health a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 2, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-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" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "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-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "city-of-london-police-news-html": { + "provider": "City of London Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "ct-policing-london": { + "provider": "Counter Terrorism Policing London", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastEmptyAt": null, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "met-police-latest-news": { + "provider": "Metropolitan Police - Latest News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 1, + "successfulRuns": 111, + "emptyRuns": 0, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-24T17:57:58.900Z", + "lastFailureAt": null, + "lastEmptyAt": null, + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 100, + "quarantined": false, + "quarantinedAt": null, + "quarantineReason": null, + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "met-police-news": { + "provider": "Metropolitan Police Service a News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 1, + "successfulRuns": 111, + "emptyRuns": 0, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-24T17:57:58.900Z", + "lastFailureAt": null, + "lastEmptyAt": null, + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 100, + "quarantined": false, + "quarantinedAt": null, + "quarantineReason": null, + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "london-assembly-press-releases": { + "provider": "London Assembly a Press Releases", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 27, + "failedRuns": 4, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 27, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-20T06:30:13.977Z", + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "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-24T18:57:58.900Z" + }, + "mopac-html": { + "provider": "Mayor's Office for Policing and Crime", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "gov-uk-fcdo-travel-advice": { + "provider": "FCDO a Foreign Travel Advice Index", + "lane": "border", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "uk-border-force": { + "provider": "Border Force (UK) a Announcements and Publications", + "lane": "border", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "uk-ukvi": { + "provider": "UK Visas and Immigration a Announcements and Publications", + "lane": "border", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "bbc-news-uk-politics-legacy": { + "provider": "BBC News a UK Politics (Legacy RSS)", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 11, + "failedRuns": 4, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 1, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-24T15:22:10.638Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "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-24T18:38:10.638Z", + "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-24T18:38:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "chatham-house-home": { + "provider": "Chatham House", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 1, + "failedRuns": 7, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastEmptyAt": "2026-04-16T19:01:30.233Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "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-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" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "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-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "chatham-house-security-defence": { + "provider": "Chatham House - Security and Defence", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 1, + "failedRuns": 7, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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: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" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "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-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "essex-police-news": { + "provider": "Essex Police a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "gov-uk-defence-intelligence": { + "provider": "UK Defence Intelligence a GOV.UK", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 27, + "failedRuns": 4, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 27, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-20T06:30:13.977Z", + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "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-24T18:57:58.900Z" + }, + "gov-uk-terrorism-search": { + "provider": "GOV.UK Search - Terrorism", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "guardian-uk": { + "provider": "The Guardian a UK News", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T11:47:26.601Z", + "lastBuiltCount": 0, + "successfulRuns": 23, + "emptyRuns": 38, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 11, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-23T05:47:56.833Z", + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T11:47:26.601Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T23:47:26.601Z", + "autoSkipReason": "empty-cooldown", + "healthScore": 45, + "quarantined": false, + "quarantinedAt": null, + "quarantineReason": null, + "nextFetchAt": "2026-04-24T23:47:26.601Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "institute-global-home": { + "provider": "Institute for Global Change", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 1, + "failedRuns": 7, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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: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" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "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-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "kent-police-news": { + "provider": "Kent Police a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "mi5-news-rss-direct": { + "provider": "MI5 - News RSS", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 27, + "failedRuns": 4, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 27, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-20T06:30:13.977Z", + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "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-24T18:57:58.900Z" + }, + "national-crime-agency-news": { + "provider": "National Crime Agency a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastEmptyAt": null, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "npcc-releases": { + "provider": "National Police Chiefs' Council - Releases", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "police-uk-all-crime-leicester": { + "provider": "Police.uk - Street Crime Around Leicester", + "lane": "context", + "kind": "json", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 84, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 78, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-16T23:55:39.351Z", + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "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-24T18:57:58.900Z" + }, + "police-uk-stops-force-leicestershire": { + "provider": "Police.uk - Force Stops (Leicestershire)", + "lane": "context", + "kind": "json", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "police-uk-stops-street-leicester": { + "provider": "Police.uk - Street Stops Around Leicester", + "lane": "context", + "kind": "json", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "report-fraud-home": { + "provider": "Report Fraud", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "report-fraud-newsroom": { + "provider": "Report Fraud - Newsroom", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "rusi-terrorism-conflict": { + "provider": "RUSI - Terrorism and Conflict", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T16:38:34.841Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 12, + "failedRuns": 4, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 11, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-20T12:14:24.733Z", + "lastEmptyAt": "2026-04-24T16:38:34.841Z", + "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-25T04:38:34.841Z", + "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-25T04:38:34.841Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "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-24T21:24:00.000Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 32, + "quarantined": false, + "quarantinedAt": null, + "quarantineReason": null, + "nextFetchAt": "2026-04-24T21:24:00.000Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "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", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "west-yorkshire-police-coroner-appeals-rss": { + "provider": "West Yorkshire Police - Coroner Appeals Feed", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 58, + "failedRuns": 2, + "consecutiveFailures": 2, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "wiltshire-999s": { + "provider": "Wiltshire 999s", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 1, + "failedRuns": 7, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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: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" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "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-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "cambridge-news": { + "provider": "Cambridge News", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T11:47:26.601Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 26, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 11, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-20T17:16:47.386Z", + "lastEmptyAt": "2026-04-24T11:47:26.601Z", + "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-24T23:47:26.601Z", + "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-24T23:47:26.601Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "channel-4-news": { + "provider": "Channel 4 News", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 12, + "emptyRuns": 25, + "failedRuns": 4, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 3, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-19T17:13:24.435Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "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": null, + "autoSkipReason": null, + "healthScore": 1, + "quarantined": true, + "quarantinedAt": "2026-04-22T14:59:55.048Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T20:03:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "daily-politics": { + "provider": "Daily Politics", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T11:47:26.601Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 11, + "failedRuns": 4, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 11, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-20T08:39:19.161Z", + "lastEmptyAt": "2026-04-24T11:47:26.601Z", + "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-24T23:47:26.601Z", + "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-24T23:47:26.601Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "deadline-news": { + "provider": "Deadline News", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T16:38:34.841Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 26, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 11, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-20T17:16:47.386Z", + "lastEmptyAt": "2026-04-24T16:38:34.841Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "http-status-error", + "message": "HTTP 500", + "at": "2026-04-20T17:16:47.386Z" + } + ], + "cooldownUntil": "2026-04-25T04:38:34.841Z", + "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-25T04:38:34.841Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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": "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-24T20:17:25.806Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "the-daily-mash": { + "provider": "The Daily Mash", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T11:47:26.601Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 11, + "failedRuns": 5, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 11, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-19T13:19:06.686Z", + "lastEmptyAt": "2026-04-24T11:47:26.601Z", + "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-24T23:47:26.601Z", + "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-24T23:47:26.601Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "guardian-uk-top-stories": { + "provider": "The Guardian - UK Top Stories", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 13, + "failedRuns": 3, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 1, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-24T15:22:10.638Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "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-24T18:42:10.638Z", + "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-24T18:42:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "independent-top-stories": { + "provider": "The Independent - Top Stories", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T11:47:26.601Z", + "lastBuiltCount": 0, + "successfulRuns": 4, + "emptyRuns": 40, + "failedRuns": 2, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 11, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-19T16:03:49.134Z", + "lastFailureAt": "2026-04-20T17:16:47.386Z", + "lastEmptyAt": "2026-04-24T11:47:26.601Z", + "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-24T23:47:26.601Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T23:47:26.601Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "the-week-uk": { + "provider": "The Week UK", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 11, + "emptyRuns": 16, + "failedRuns": 3, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 3, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-17T11:07:28.674Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-24T15:22:10.638Z", + "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-24T17:53:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 7, + "quarantined": true, + "quarantinedAt": "2026-04-22T14:59:55.048Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T17:53:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "evening-shire": { + "provider": "Evening Shire", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T11:47:26.601Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 24, + "failedRuns": 3, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 13, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-18T07:21:41.099Z", + "lastEmptyAt": "2026-04-24T11:47:26.601Z", + "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-24T23:47:26.601Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T23:47:26.601Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "fmcg-gurus": { + "provider": "FMCG Gurus", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T13:53:37.949Z", + "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-24T13:53:37.949Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-20T17:16:47.386Z" + } + ], + "cooldownUntil": "2026-04-25T01:53:37.949Z", + "autoSkipReason": "health-deprioritised", + "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-25T01:53:37.949Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "foreign-office-blogs": { + "provider": "Foreign Office Blogs", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "love-my-dress": { + "provider": "Love My Dress", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 4, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "http-status-error", + "message": "HTTP 520", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 2, + "quarantined": true, + "quarantinedAt": "2026-04-22T14:59:55.048Z", + "quarantineReason": "Health score degraded to 14 after repeated failures", + "nextFetchAt": "2026-04-24T20:01:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "quadrant2design-exhibiting-guides": { + "provider": "Quadrant2Design Exhibiting Guides", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T13:53:37.949Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 23, + "failedRuns": 3, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 13, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-18T07:21:41.099Z", + "lastEmptyAt": "2026-04-24T13:53:37.949Z", + "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-25T01:53:37.949Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-25T01:53:37.949Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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": "health-deprioritised", + "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", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "thank-you-for-the-days": { + "provider": "Thank you for the days", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 14, + "failedRuns": 5, + "consecutiveFailures": 3, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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" + }, + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "avon-and-somerset-police-news-html": { + "provider": "Avon and Somerset Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 86, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 86, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "avon-somerset-police-news": { + "provider": "Avon & Somerset Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 86, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 86, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "bedfordshire-police-news": { + "provider": "Bedfordshire Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "bedfordshire-police-news-search": { + "provider": "Bedfordshire Police - News Search", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "btp-british-transport-police-news-html": { + "provider": "British Transport Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "cambridgeshire-police-news-search": { + "provider": "Cambridgeshire Police - News Search", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 2, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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": "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" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "cheshire-police-news": { + "provider": "Cheshire Constabulary - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "cleveland-police-news": { + "provider": "Cleveland Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "cps-news-centre": { + "provider": "Crown Prosecution Service a News Centre", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastEmptyAt": null, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "ct-policing-north-west": { + "provider": "Counter Terrorism Policing North West", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastEmptyAt": null, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "ct-policing-uk-latest-news": { + "provider": "Counter Terrorism Policing UK a Latest News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastEmptyAt": null, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "cumbria-police-news": { + "provider": "Cumbria Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "cumbria-police-newsroom": { + "provider": "Cumbria Police - Newsroom", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastEmptyAt": null, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "derbyshire-police-news": { + "provider": "Derbyshire Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "devon-and-cornwall-police-newsroom": { + "provider": "Devon and Cornwall Police - Newsroom", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastEmptyAt": null, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "devon-cornwall-police-news": { + "provider": "Devon and Cornwall Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "dorset-police-news": { + "provider": "Dorset Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "dorset-police-newsroom": { + "provider": "Dorset Police - Newsroom", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastEmptyAt": null, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "durham-constabulary-news": { + "provider": "Durham Constabulary a News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "durham-police-durham-news": { + "provider": "Durham Police - Durham News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "dyfed-powys-police-news": { + "provider": "Dyfed-Powys Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "essex-police-news-html": { + "provider": "Essex Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "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-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "gloucestershire-police-news": { + "provider": "Gloucestershire Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "gmp-news": { + "provider": "Greater Manchester Police a News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "greater-manchester-police-news": { + "provider": "Greater Manchester Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "gwent-police-news": { + "provider": "Gwent Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "hampshire-police-news": { + "provider": "Hampshire & Isle of Wight Constabulary a News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "hertfordshire-police-news": { + "provider": "Hertfordshire Constabulary a News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "humberside-police-news-search": { + "provider": "Humberside Police - News Search", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "kent-police-news-html": { + "provider": "Kent Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "lancashire-constabulary-news": { + "provider": "Lancashire Constabulary a News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "lincolnshire-police-news": { + "provider": "Lincolnshire Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "merseyside-police-news": { + "provider": "Merseyside Police a News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "merseyside-police-news-html": { + "provider": "Merseyside Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "norfolk-constabulary-news": { + "provider": "Norfolk Constabulary - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "north-wales-police-news": { + "provider": "North Wales Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "north-yorkshire-police-news-html": { + "provider": "North Yorkshire Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "northamptonshire-police-news-html": { + "provider": "Northamptonshire Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "northumbria-police-northumbria-news": { + "provider": "Northumbria Police - Northumbria News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "nottinghamshire-police-news": { + "provider": "Nottinghamshire Police a News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "nottinghamshire-police-nottinghamshire-news": { + "provider": "Nottinghamshire Police - Nottinghamshire News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "police-scotland-news": { + "provider": "Police Scotland news", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 35, + "failedRuns": 4, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 27, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-19T19:32:35.264Z", + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "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-24T18:57:58.900Z" + }, + "psni-latest-news": { + "provider": "Police Service of Northern Ireland - Latest News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 86, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 86, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "psni-news": { + "provider": "Police Service of Northern Ireland a News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "south-wales-police-news": { + "provider": "South Wales Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "south-yorkshire-police-news": { + "provider": "South Yorkshire Police a News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "staffordshire-police-news": { + "provider": "Staffordshire Police a News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "staffordshire-police-staffordshire-news": { + "provider": "Staffordshire Police - Staffordshire News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "suffolk-constabulary-news": { + "provider": "Suffolk Constabulary - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "surrey-police-news": { + "provider": "Surrey Police a News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "sussex-police-news": { + "provider": "Sussex Police a News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "thames-valley-police-news": { + "provider": "Thames Valley Police a News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "thames-valley-police-news-html": { + "provider": "Thames Valley Police - Thames Valley News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "west-mercia-police-news-html": { + "provider": "West Mercia Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "west-midlands-police-news": { + "provider": "West Midlands Police a News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "west-yorkshire-police-all-rss": { + "provider": "West Yorkshire Police - All News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 86, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 86, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "west-yorkshire-police-appeals-rss": { + "provider": "West Yorkshire Police - Appeals", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T11:47:26.601Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 81, + "failedRuns": 1, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T11:47:26.601Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "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-24T11:47:26.601Z" + } + ], + "cooldownUntil": "2026-04-26T11:47:26.601Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-26T11:47:26.601Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "west-yorkshire-police-news": { + "provider": "West Yorkshire Police a News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 59, + "failedRuns": 2, + "consecutiveFailures": 2, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 2, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "west-yorkshire-police-news-appeals": { + "provider": "West Yorkshire Police - News Appeals", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 86, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 86, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "west-yorkshire-police-news-rss": { + "provider": "West Yorkshire Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 86, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 86, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "west-yorkshire-police-releases-rss": { + "provider": "West Yorkshire Police - RSS Feeds", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T11:47:26.601Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 81, + "failedRuns": 1, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T11:47:26.601Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T11:47:26.601Z" + } + ], + "cooldownUntil": "2026-04-26T11:47:26.601Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-26T11:47:26.601Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "wiltshire-police-news": { + "provider": "Wiltshire Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "attorney-generals-office-html": { + "provider": "Attorney General's Office", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "cabinet-office-html": { + "provider": "Cabinet Office", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "cps-homepage": { + "provider": "Crown Prosecution Service", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastEmptyAt": null, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "crown-office-news": { + "provider": "Crown Office and Procurator Fiscal Service - News", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "echr-uk-grand-chamber-rss": { + "provider": "European Court of Human Rights - HUDOC", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T11:47:26.601Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 1, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T11:47:26.601Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T11:47:26.601Z" + } + ], + "cooldownUntil": "2026-04-26T11:47:26.601Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-26T11:47:26.601Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "extremism-commission-blog": { + "provider": "Commission for Countering Extremism - Blog", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "fcdo-html": { + "provider": "Foreign, Commonwealth & Development Office", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 13, + "emptyRuns": 81, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "gov-scot-access-to-justice-latest": { + "provider": "Scottish Government - Access to Justice Latest", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "gov-uk-cabinet-office-atom": { + "provider": "Cabinet Office", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "gov-uk-hmcts": { + "provider": "HMCTS a Courts and Tribunals Announcements", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "gov-uk-hmic": { + "provider": "HM Inspectorate of Constabulary a GOV.UK", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastEmptyAt": null, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "gov-uk-home-office-atom": { + "provider": "UK Home Office", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 1, + "successfulRuns": 5, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-24T17:57:58.900Z", + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 50, + "quarantined": false, + "quarantinedAt": null, + "quarantineReason": null, + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "gov-uk-ipco": { + "provider": "Investigatory Powers Commissioner's Office a GOV.UK", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "gov-uk-mod-atom": { + "provider": "Ministry of Defence", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "gov-uk-moj-atom": { + "provider": "Ministry of Justice", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "gov-uk-news-and-communications-atom": { + "provider": "GOV.UK - News and Communications", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 17, + "emptyRuns": 79, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 35, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-20T21:17:14.299Z", + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "gov-uk-parliament-jcnss": { + "provider": "UK Parliament a Joint Committee on National Security Strategy", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "hmiprisons-news": { + "provider": "HM Inspectorate of Prisons - News", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "hmiprobation-news": { + "provider": "HM Inspectorate of Probation - News", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "home-office-media-blog": { + "provider": "Home Office Media Blog", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "independent-reviewer-terrorism-legislation": { + "provider": "Independent Reviewer of Terrorism Legislation a Reports", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "independent-reviewer-terrorism-legislation-html": { + "provider": "Independent Reviewer of Terrorism Legislation", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "judiciary-rss-feeds-page": { + "provider": "Judiciary UK - RSS Feeds", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "judiciary-uk-announcements-feed": { + "provider": "Judiciary UK - Announcements Feed", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "judiciary-uk-judgments-feed": { + "provider": "Judiciary UK - Judgments Feed", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "judiciary-uk-news": { + "provider": "Judiciary of England and Wales a News", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T16:38:34.841Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 34, + "failedRuns": 4, + "consecutiveFailures": 2, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T16:38:34.841Z", + "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" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-24T16:38:34.841Z" + } + ], + "cooldownUntil": "2026-04-26T16:38:34.841Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-26T16:38:34.841Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "judiciary-uk-publications-feed": { + "provider": "Judiciary UK - Publications Feed", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "ministry-of-defence-html": { + "provider": "Ministry of Defence", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 14, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "ons-html": { + "provider": "Office for National Statistics", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "parliament-all-bills-rss": { + "provider": "Parliament - All Bills RSS", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "parliament-private-bills-rss": { + "provider": "Parliament - Private Bills RSS", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "parliament-public-bills-rss": { + "provider": "Parliament - Public Bills RSS", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "police-ombudsman-current-investigations": { + "provider": "Police Ombudsman - Current Investigations", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "police-uk-crime-categories-2024-01": { + "provider": "Police.uk - Crime Categories (2024-01)", + "lane": "oversight", + "kind": "json", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "police-uk-crimes-street-dates": { + "provider": "Police.uk - Street Crime Dataset Dates", + "lane": "oversight", + "kind": "json", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "police-uk-outcomes-for-crime-e11dade0": { + "provider": "Police.uk - Outcomes For Crime e11dade0", + "lane": "oversight", + "kind": "json", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "scotcourts-fai-determinations-rss": { + "provider": "Scottish Courts - Fatal Accident Inquiry Determinations RSS", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "scotcourts-fai-hearings-rss": { + "provider": "Scottish Courts - Fatal Accident Inquiry Hearings RSS", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "scotcourts-high-court-justiciary-judgments-rss": { + "provider": "Scottish Courts - High Court of Justiciary Judgments RSS", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "scotcourts-high-court-practice-notes-rss": { + "provider": "Scottish Courts - High Court of Justiciary Practice Notes RSS", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "scotcourts-judgments-rss": { + "provider": "Scottish Courts - Judgments RSS", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "scotcourts-news-articles-rss": { + "provider": "Scottish Courts - News Articles RSS", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "scotcourts-publications-rss": { + "provider": "Scottish Courts - Publications RSS", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "scotcourts-sheriff-criminal-practice-notes-rss": { + "provider": "Scottish Courts - Sheriff Court Criminal Practice Notes RSS", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "scottish-government-justice-news": { + "provider": "Scottish Government - Justice and Safety", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 27, + "failedRuns": 4, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 27, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-20T06:30:13.977Z", + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "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-24T18:57:58.900Z" + }, + "serious-fraud-office-news": { + "provider": "Serious Fraud Office a News", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 68, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 27, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-20T04:05:33.139Z", + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "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-24T18:57:58.900Z" + }, + "uk-home-office": { + "provider": "UK Home Office a Announcements and Publications", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 1, + "successfulRuns": 106, + "emptyRuns": 4, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-24T17:57:58.900Z", + "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-24T18:57:58.900Z" + }, + "uk-iopc-news": { + "provider": "Independent Office for Police Conduct a News", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "uk-ncsc-news": { + "provider": "National Cyber Security Centre (UK) a News", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 5, + "successfulRuns": 110, + "emptyRuns": 0, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-24T17:57:58.900Z", + "lastFailureAt": null, + "lastEmptyAt": null, + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 100, + "quarantined": false, + "quarantinedAt": null, + "quarantineReason": null, + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "uk-ncsc-threat-reports": { + "provider": "National Cyber Security Centre (UK) a Threat Reports", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 1, + "emptyRuns": 0, + "failedRuns": 8, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-16T16:57:11.406Z", + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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: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" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "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-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "uk-parliament-business-news": { + "provider": "UK Parliament - Business News", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastEmptyAt": null, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "uk-parliament-foreign-affairs-committee": { + "provider": "UK Parliament a Foreign Affairs Select Committee", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "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", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "uk-parliament-isc": { + "provider": "UK Parliament a Intelligence and Security Committee (Reports & News)", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 2, + "failedRuns": 7, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 5, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-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" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "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-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "uk-parliament-justice-committee": { + "provider": "UK Parliament a Justice Select Committee", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "act-campaign": { + "provider": "ACT Awareness Campaign", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 84, + "failedRuns": 1, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T17:57:58.900Z", + "lastEmptyAt": "2026-04-24T16:38:34.841Z", + "lastErrorCategory": "http-status-error", + "lastErrorMessage": "HTTP 421", + "recentErrors": [ + { + "category": "http-status-error", + "message": "HTTP 421", + "at": "2026-04-24T17:57:58.900Z" + } + ], + "cooldownUntil": "2026-04-26T17:57:58.900Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-26T17:57:58.900Z" + }, + "cheshire-police-alert": { + "provider": "Cheshire Police Alert", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 64, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 27, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-19T17:13:24.435Z", + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "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-24T18:57:58.900Z" + }, + "ct-policing-prevent-programme": { + "provider": "Counter Terrorism Policing - Prevent", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastEmptyAt": null, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "ct-policing-what-you-can-do": { + "provider": "Counter Terrorism Policing - What You Can Do", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastEmptyAt": null, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "dc-police-community-messaging": { + "provider": "Dorset and Cornwall Police - Community Messaging", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 64, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 27, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-19T17:13:24.435Z", + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "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-24T18:57:58.900Z" + }, + "devon-cornwall-alerts": { + "provider": "Devon and Cornwall Alerts", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 64, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 27, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-19T17:13:24.435Z", + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "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-24T18:57:58.900Z" + }, + "gnet-research": { + "provider": "Global Network on Extremism & Technology (GNET) a Main Feed", + "lane": "prevention", + "kind": "rss", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 4, + "successfulRuns": 100, + "emptyRuns": 6, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-24T17:57:58.900Z", + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 100, + "quarantined": false, + "quarantinedAt": null, + "quarantineReason": null, + "nextFetchAt": "2026-04-24T21:40:58.900Z" + }, + "gov-uk-contest-strategy": { + "provider": "GOV.UK a CONTEST Counter-Terrorism Strategy", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "gov-uk-counter-extremism-commissioner": { + "provider": "Counter Extremism Commissioner a GOV.UK", + "lane": "prevention", + "kind": "rss", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 84, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 82, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-16T19:01:30.233Z", + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "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-24T18:57:58.900Z" + }, + "gov-uk-prevent-strategy": { + "provider": "UK Home Office - Prevent duty guidance", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "gov-uk-report-terrorism": { + "provider": "GOV.UK - Report Terrorism", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastEmptyAt": null, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "gov-uk-terrorism-national-emergency": { + "provider": "GOV.UK - Terrorism National Emergency", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastEmptyAt": null, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "icsr-kcl": { + "provider": "International Centre for the Study of Radicalisation (ICSR) a Updates", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 1, + "failedRuns": 7, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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: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" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "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-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "met-office-seasonal-advice": { + "provider": "Met Office - Seasonal Advice", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "mi5-terrorism-threat-levels": { + "provider": "MI5 - Terrorism Threat Levels", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastEmptyAt": null, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "mi5-uk-threat-level": { + "provider": "MI5 (Security Service) a UK Threat Level", + "lane": "prevention", + "kind": "rss", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "northamptonshire-talking": { + "provider": "Northamptonshire Talking", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastEmptyAt": null, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "npsa-blog": { + "provider": "NPSA - Blog", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "npsa-blog-news": { + "provider": "NPSA - Blog News", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastEmptyAt": null, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "npsa-national-protective-security-authority": { + "provider": "NPSA - Activity on GOV.UK", + "lane": "prevention", + "kind": "rss", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "protectuk": { + "provider": "ProtectUK (NPSA) a Protective Security Guidance", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastEmptyAt": null, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "south-yorkshire-police-alerts": { + "provider": "South Yorkshire Police Alerts", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 64, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 27, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-19T17:13:24.435Z", + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "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-24T18:57:58.900Z" + }, + "stay-in-the-know-home": { + "provider": "Stay In The Know - Community Alerts", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 64, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 27, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-19T17:13:24.435Z", + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "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-24T18:57:58.900Z" + }, + "stay-in-the-know-latest-alerts": { + "provider": "Stay In The Know - Latest Alerts", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 63, + "failedRuns": 2, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 27, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-19T17:13:24.435Z", + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "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-24T18:57:58.900Z" + }, + "uk-ncsc-all-rss": { + "provider": "UK NCSC - All Updates RSS", + "lane": "prevention", + "kind": "rss", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 14, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "uk-ncsc-homepage": { + "provider": "UK NCSC - Homepage", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastEmptyAt": null, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "uk-prevent-duty-guidance": { + "provider": "GOV.UK a Prevent Duty Guidance (Collection)", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "west-midlands-community-alerts": { + "provider": "WMNow - Community Alerts", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 64, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 27, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-19T17:13:24.435Z", + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "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-24T18:57:58.900Z" + }, + "west-yorkshire-community-alert": { + "provider": "West Yorkshire Community Alert", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 64, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 27, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-19T17:13:24.435Z", + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "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-24T18:57:58.900Z" + }, + "gov-uk-proscribed-terrorist-orgs": { + "provider": "GOV.UK a Proscribed Terrorist Organisations", + "lane": "sanctions", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "hm-treasury-html": { + "provider": "HM Treasury", + "lane": "sanctions", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "ofsi-blog-home": { + "provider": "OFSI - Blog", + "lane": "sanctions", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "otsi-blog-home": { + "provider": "OTSI - Blog", + "lane": "sanctions", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 1, + "successfulRuns": 106, + "emptyRuns": 4, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-24T17:57:58.900Z", + "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-24T18:57:58.900Z" + }, + "uk-ofsi-blog": { + "provider": "Office of Financial Sanctions Implementation (OFSI) a Blog", + "lane": "sanctions", + "kind": "rss", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 2, + "successfulRuns": 110, + "emptyRuns": 0, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-24T17:57:58.900Z", + "lastFailureAt": null, + "lastEmptyAt": null, + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 100, + "quarantined": false, + "quarantinedAt": null, + "quarantineReason": null, + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "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-24T17:57:58.900Z" + }, + "dhs-press-releases": { + "provider": "US Department of Homeland Security - News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "dni-press-releases": { + "provider": "Office of the Director of National Intelligence - Press Releases", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 27, + "failedRuns": 4, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 27, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-20T06:30:13.977Z", + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "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-24T18:57:58.900Z" + }, + "doj-nsd-press-releases": { + "provider": "U.S. Department of Justice - National Security Division Press Releases", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 27, + "failedRuns": 4, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 27, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-20T06:30:13.977Z", + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "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-24T18:57:58.900Z" + }, + "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-24T17:57:58.900Z" }, - "freshnessSlaByTier": { - "high": { - "count": 1, - "avgMinutes": 0, - "p95Minutes": 0 - }, - "medium": { - "count": 1, - "avgMinutes": 0, - "p95Minutes": 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-24T17:57:58.900Z" }, - "failureReasons": { - "success": 2 + "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-24T17:57:58.900Z" }, - "sourceRunStats": { - "totalConfiguredSources": 4, - "sourcesCheckedThisRun": 4, - "sourcesUpdatedThisRun": 2, - "sourcesFailedThisRun": 0, - "sourcesUnchangedThisRun": 0 + "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-24T17:57:58.900Z" }, - "playwrightFallback": { - "attempts": 0, - "successes": 0 + "nsa-cybersecurity-news": { + "provider": "NSA - Cybersecurity Advisories & Guidance", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" }, - "guardrailViolations": [], - "midRunGuardrail": { - "throttleLevel": 0, - "totalAttempted": 4, - "totalFailed": 0, - "totalSuccessful": 2, - "failedRate": 0, - "successRate": 0.5, - "avgSourceDurationMs": 70, - "criticalOnly": false, - "skipPlaywright": false, - "transitions": [] - } - }, - "sourceHealth": { - "fixture-rss-incidents": { - "provider": "Fixture Incidents Feed", - "lane": "incidents", - "kind": "rss", - "lastCheckedAt": "2026-04-24T18:32:34.861Z", + "rand-terrorism-topic": { + "provider": "RAND - Terrorism Topic Updates", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", "lastBuiltCount": 0, "successfulRuns": 0, "emptyRuns": 1, + "failedRuns": 7, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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: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" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "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-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "rewards-for-justice": { + "provider": "U.S. Department of State - Rewards for Justice", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, "failedRuns": 0, "consecutiveFailures": 0, - "consecutiveEmptyRuns": 1, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "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-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 1, + "failedRuns": 7, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastEmptyAt": "2026-04-16T19:01:30.233Z", + "lastErrorCategory": "network-failure", + "lastErrorMessage": "fetch failed", + "recentErrors": [ + { + "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" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "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-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "start-center-publications": { + "provider": "START Center (UMD) - News & Publications", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 1, + "failedRuns": 7, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastEmptyAt": "2026-04-16T19:01:30.233Z", + "lastErrorCategory": "network-failure", + "lastErrorMessage": "fetch failed", + "recentErrors": [ + { + "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" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "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-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "state-dept-terrorism": { + "provider": "US State Department - Bureau of Counterterrorism", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "cisa-cybersecurity-advisories": { + "provider": "CISA - Cybersecurity Alerts & Advisories", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 13, + "emptyRuns": 81, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "us-house-homeland-security": { + "provider": "US House Committee on Homeland Security - News", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 7, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastEmptyAt": null, + "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-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-26T15:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-26T15:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "us-treasury-ofac-press-releases": { + "provider": "U.S. Treasury (OFAC) - Press Releases", + "lane": "sanctions", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 84, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 84, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-16T15:11:26.228Z", + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "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-24T18:57:58.900Z" + }, + "us-treasury-ofac-recent-actions": { + "provider": "U.S. Treasury (OFAC) - Recent Actions", + "lane": "sanctions", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 85, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 85, "consecutiveBlockedFailures": 0, "consecutiveDeadUrlFailures": 0, "lastSuccessfulAt": null, "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T18:32:34.861Z", + "lastEmptyAt": "2026-04-24T17:57:58.900Z", "lastErrorCategory": null, "lastErrorMessage": null, "recentErrors": [], "cooldownUntil": null, "autoSkipReason": null, - "healthScore": 77, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:57:58.900Z" + }, + "requested-rss-feed-48d28e8f4091": { + "provider": "RSS Feed", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 3, + "consecutiveFailures": 3, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-24T11:47:26.601Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-24T13:53:37.949Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-25T18:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 35, "quarantined": false, "quarantinedAt": null, "quarantineReason": null, - "nextFetchAt": "2026-04-24T19:29:34.861Z" + "nextFetchAt": "2026-04-25T18:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" }, - "fixture-rss-context": { - "provider": "Fixture Context Feed", + "requested-rss-feed-c34c5c93b43b": { + "provider": "RSS Feed", "lane": "context", "kind": "rss", - "lastCheckedAt": "2026-04-24T18:32:34.861Z", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", "lastBuiltCount": 0, "successfulRuns": 0, - "emptyRuns": 1, + "emptyRuns": 0, + "failedRuns": 3, + "consecutiveFailures": 3, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "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-24T11:47:26.601Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-24T13:53:37.949Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-25T18:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 35, + "quarantined": false, + "quarantinedAt": null, + "quarantineReason": null, + "nextFetchAt": "2026-04-25T18:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "requested-rss-feed-b3c5f204dee8": { + "provider": "RSS Feed", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 5, "failedRuns": 0, "consecutiveFailures": 0, - "consecutiveEmptyRuns": 1, + "consecutiveEmptyRuns": 5, "consecutiveBlockedFailures": 0, "consecutiveDeadUrlFailures": 0, "lastSuccessfulAt": null, "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T18:32:34.861Z", + "lastEmptyAt": "2026-04-24T17:57:58.900Z", "lastErrorCategory": null, "lastErrorMessage": null, "recentErrors": [], "cooldownUntil": null, "autoSkipReason": null, - "healthScore": 77, + "healthScore": 65, "quarantined": false, "quarantinedAt": null, "quarantineReason": null, - "nextFetchAt": "2026-04-24T21:09:34.861Z" + "nextFetchAt": "2026-04-24T20:58:58.900Z" }, - "fixture-atom-oversight": { - "provider": "Fixture Oversight Feed", - "lane": "oversight", - "kind": "atom", - "lastCheckedAt": "2026-04-24T18:32:34.861Z", - "lastBuiltCount": 1, - "successfulRuns": 1, + "requested-neighbourhood-alerts-feed-8ad5321239de": { + "provider": "Neighbourhood Alerts Feed", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, "emptyRuns": 0, + "failedRuns": 3, + "consecutiveFailures": 3, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T11:47:26.601Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T13:53:37.949Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-25T18:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 35, + "quarantined": false, + "quarantinedAt": null, + "quarantineReason": null, + "nextFetchAt": "2026-04-25T18:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "requested-rss-feed-364751d1cc8d": { + "provider": "RSS Feed", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 5, "failedRuns": 0, "consecutiveFailures": 0, - "consecutiveEmptyRuns": 0, + "consecutiveEmptyRuns": 5, "consecutiveBlockedFailures": 0, "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-24T18:32:34.861Z", + "lastSuccessfulAt": null, "lastFailureAt": null, - "lastEmptyAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", "lastErrorCategory": null, "lastErrorMessage": null, "recentErrors": [], "cooldownUntil": null, "autoSkipReason": null, - "healthScore": 90, + "healthScore": 65, "quarantined": false, "quarantinedAt": null, "quarantineReason": null, - "nextFetchAt": "2026-04-24T19:10:34.861Z" + "nextFetchAt": "2026-04-24T20:06:58.900Z" }, - "fixture-json-prevention": { - "provider": "Fixture Prevention Feed", - "lane": "prevention", - "kind": "json", - "lastCheckedAt": "2026-04-24T18:32:34.861Z", - "lastBuiltCount": 1, - "successfulRuns": 1, - "emptyRuns": 0, + "requested-news-national-police-air-service-4c2fff6ba6c7": { + "provider": "News | National Police Air Service", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 5, "failedRuns": 0, "consecutiveFailures": 0, - "consecutiveEmptyRuns": 0, + "consecutiveEmptyRuns": 5, "consecutiveBlockedFailures": 0, "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-24T18:32:34.861Z", + "lastSuccessfulAt": null, "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 65, + "quarantined": false, + "quarantinedAt": null, + "quarantineReason": null, + "nextFetchAt": "2026-04-24T18:34:58.900Z" + }, + "requested-rss-feed-3f8b8535297b": { + "provider": "RSS Feed", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 3, + "consecutiveFailures": 3, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T15:22:10.638Z", "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-24T11:47:26.601Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-24T13:53:37.949Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-24T15:22:10.638Z" + } + ], + "cooldownUntil": "2026-04-25T18:22:10.638Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 35, + "quarantined": false, + "quarantinedAt": null, + "quarantineReason": null, + "nextFetchAt": "2026-04-25T18:22:10.638Z", + "lastDeferredAt": "2026-04-24T17:57:58.900Z" + }, + "requested-bsc-policing-network-f5c77a83a91e": { + "provider": "BSC Policing Network", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T17:57:58.900Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 5, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 5, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T17:57:58.900Z", "lastErrorCategory": null, "lastErrorMessage": null, "recentErrors": [], "cooldownUntil": null, "autoSkipReason": null, - "healthScore": 90, + "healthScore": 65, "quarantined": false, "quarantinedAt": null, "quarantineReason": null, - "nextFetchAt": "2026-04-24T22:00:34.861Z" + "nextFetchAt": "2026-04-24T20:22:58.900Z" } } } diff --git a/scripts/build-live-feed.mjs b/scripts/build-live-feed.mjs index ace9af58..5d19f491 100644 --- a/scripts/build-live-feed.mjs +++ b/scripts/build-live-feed.mjs @@ -8,6 +8,7 @@ import { AUTO_QUARANTINE_BLOCKED_HTML_THRESHOLD, AUTO_QUARANTINE_DEAD_URL_THRESHOLD, AUTO_QUARANTINE_RECHECK_HOURS, + AUTO_QUARANTINE_TIMEOUT_THRESHOLD, AUTO_SKIP_EMPTY_THRESHOLD, BLOCKED_NON_CONTENT_COOLDOWN_HOURS, BLOCKED_NON_CONTENT_FAIL_THRESHOLD, @@ -163,6 +164,17 @@ function isNotFoundFailureCategory(category) { return category === 'not-found-404'; } +function isTimeoutFailureCategory(category) { + return category === 'timeout'; +} + +function shouldAutoQuarantineHealthEntry(entry = {}) { + const consecutiveFailures = Number(entry.consecutiveFailures || 0); + const consecutiveTimeoutFailures = Number(entry.consecutiveTimeoutFailures || 0); + return consecutiveFailures >= AUTO_QUARANTINE_FAILURE_THRESHOLD + || consecutiveTimeoutFailures >= AUTO_QUARANTINE_TIMEOUT_THRESHOLD; +} + function sourceMayAutoCooldown(source, previousEntry, buildDate) { if (!previousEntry) return null; @@ -265,6 +277,7 @@ function nextSourceHealthEntry(source, stat, previousEntry, generatedAt) { const prior = previousEntry && typeof previousEntry === 'object' ? previousEntry : {}; const priorBlockedFailures = Number(prior.consecutiveBlockedFailures || 0); const priorDeadUrlFailures = Number(prior.consecutiveDeadUrlFailures || 0); + const priorTimeoutFailures = Number(prior.consecutiveTimeoutFailures || 0); const priorHealthScore = Number.isFinite(Number(prior.healthScore)) ? Number(prior.healthScore) : HEALTH_SCORE_INITIAL; const priorRecentErrors = Array.isArray(prior.recentErrors) ? prior.recentErrors : []; const generatedAtMs = Date.parse(generatedAt); @@ -283,6 +296,7 @@ function nextSourceHealthEntry(source, stat, previousEntry, generatedAt) { consecutiveEmptyRuns: Number(prior.consecutiveEmptyRuns || 0), consecutiveBlockedFailures: priorBlockedFailures, consecutiveDeadUrlFailures: priorDeadUrlFailures, + consecutiveTimeoutFailures: priorTimeoutFailures, lastSuccessfulAt: prior.lastSuccessfulAt || null, lastFailureAt: prior.lastFailureAt || null, lastEmptyAt: prior.lastEmptyAt || null, @@ -304,6 +318,7 @@ function nextSourceHealthEntry(source, stat, previousEntry, generatedAt) { next.consecutiveEmptyRuns = 0; next.consecutiveBlockedFailures = 0; next.consecutiveDeadUrlFailures = 0; + next.consecutiveTimeoutFailures = 0; next.lastErrorCategory = null; next.lastErrorMessage = null; next.recentErrors = []; @@ -321,11 +336,13 @@ function nextSourceHealthEntry(source, stat, previousEntry, generatedAt) { const blockedNonContent = stat?.statusKind === 'blocked_non_content' || blockedFailure; const deadUrlFailure = isDeadUrlFailureCategory(stat?.lastErrorCategory); const notFoundFailure = isNotFoundFailureCategory(stat?.lastErrorCategory); + const timeoutFailure = isTimeoutFailureCategory(stat?.lastErrorCategory); next.failedRuns += 1; next.consecutiveFailures += 1; next.consecutiveEmptyRuns = 0; next.consecutiveBlockedFailures = blockedNonContent ? priorBlockedFailures + 1 : 0; next.consecutiveDeadUrlFailures = deadUrlFailure ? priorDeadUrlFailures + 1 : 0; + next.consecutiveTimeoutFailures = timeoutFailure ? priorTimeoutFailures + 1 : 0; next.lastFailureAt = generatedAt; next.lastErrorCategory = stat?.lastErrorCategory || null; next.lastErrorMessage = stat?.lastErrorMessage || null; @@ -342,20 +359,21 @@ function nextSourceHealthEntry(source, stat, previousEntry, generatedAt) { const isCritical = notFoundFailure || deadUrlFailure || (source?.kind === 'html' && next.consecutiveBlockedFailures >= AUTO_QUARANTINE_BLOCKED_HTML_THRESHOLD) || next.consecutiveDeadUrlFailures >= AUTO_QUARANTINE_DEAD_URL_THRESHOLD + || next.consecutiveTimeoutFailures >= AUTO_QUARANTINE_TIMEOUT_THRESHOLD || next.consecutiveFailures >= AUTO_QUARANTINE_FAILURE_THRESHOLD; const penalty = isCritical ? HEALTH_SCORE_CRITICAL_FAILURE_PENALTY : HEALTH_SCORE_FAILURE_PENALTY; next.healthScore = Math.max(0, priorHealthScore - penalty); // Auto-quarantine only after repeated consecutive failures. - const overFailureThreshold = next.consecutiveFailures >= AUTO_QUARANTINE_FAILURE_THRESHOLD; - if (overFailureThreshold && !next.quarantined) { + const shouldAutoQuarantine = shouldAutoQuarantineHealthEntry(next); + if (shouldAutoQuarantine && !next.quarantined) { next.quarantined = true; next.quarantinedAt = generatedAt; next.quarantineReason = analyseErrorPattern(next.recentErrors, { healthScore: next.healthScore, kind: source?.kind }); - } else if (!overFailureThreshold) { + } else if (!shouldAutoQuarantine) { next.quarantined = false; next.quarantinedAt = null; next.quarantineReason = null; @@ -381,6 +399,7 @@ function nextSourceHealthEntry(source, stat, previousEntry, generatedAt) { next.consecutiveFailures = 0; next.consecutiveBlockedFailures = 0; next.consecutiveDeadUrlFailures = 0; + next.consecutiveTimeoutFailures = 0; next.quarantined = false; next.quarantinedAt = null; next.quarantineReason = null; @@ -1027,8 +1046,9 @@ function buildQuarantinedSourceEntries(sources, sourceHealth) { const manuallyQuarantined = Boolean(source?.quarantined); const healthScore = Number.isFinite(Number(health?.healthScore)) ? Number(health.healthScore) : HEALTH_SCORE_INITIAL; 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; + const consecutiveTimeoutFailures = Number(health?.consecutiveTimeoutFailures || 0); + const healthQuarantined = Boolean(health?.quarantined) && shouldAutoQuarantineHealthEntry(health); + const needsReview = manuallyQuarantined || healthQuarantined || shouldAutoQuarantineHealthEntry(health); if (!needsReview) return null; return { id: clean(source?.id), @@ -1046,6 +1066,7 @@ function buildQuarantinedSourceEntries(sources, sourceHealth) { lastErrorCategory: clean(health?.lastErrorCategory), lastErrorMessage: clean(health?.lastErrorMessage), consecutiveFailures, + consecutiveTimeoutFailures, consecutiveBlockedFailures: Number(health?.consecutiveBlockedFailures || 0), consecutiveDeadUrlFailures: Number(health?.consecutiveDeadUrlFailures || 0), recentErrors: Array.isArray(health?.recentErrors) ? health.recentErrors : [], @@ -3076,9 +3097,8 @@ 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 priorConsecutiveFailures = Number(priorEntry?.consecutiveFailures || 0); const isQuarantined = Boolean(priorEntry?.quarantined) - && priorConsecutiveFailures >= AUTO_QUARANTINE_FAILURE_THRESHOLD; + && shouldAutoQuarantineHealthEntry(priorEntry); const deferredNextFetchAt = deferred.until || (isQuarantined ? priorEntry?.nextFetchAt : null) || sourceScheduleNextFetchAt(source, buildDate, priorEntry, true); diff --git a/scripts/build-live-feed/config.mjs b/scripts/build-live-feed/config.mjs index cce8e18b..b2dbd928 100644 --- a/scripts/build-live-feed/config.mjs +++ b/scripts/build-live-feed/config.mjs @@ -285,6 +285,7 @@ export const AUTO_QUARANTINE_RECHECK_HOURS = 7 * 24; export const AUTO_SKIP_EMPTY_THRESHOLD = 10; export const AUTO_QUARANTINE_BLOCKED_HTML_THRESHOLD = envInt('ALBERTALERT_AUTO_QUARANTINE_BLOCKED_HTML_THRESHOLD', 4, 1); export const AUTO_QUARANTINE_DEAD_URL_THRESHOLD = envInt('ALBERTALERT_AUTO_QUARANTINE_DEAD_URL_THRESHOLD', 2, 1); +export const AUTO_QUARANTINE_TIMEOUT_THRESHOLD = envInt('ALBERTALERT_AUTO_QUARANTINE_TIMEOUT_THRESHOLD', 4, 1); export const AUTO_QUARANTINE_FAILURE_THRESHOLD = envInt('ALBERTALERT_AUTO_QUARANTINE_FAILURE_THRESHOLD', 6, 1); export const HEALTH_SCORE_INITIAL = envInt('ALBERTALERT_HEALTH_SCORE_INITIAL', 80, 0); export const HEALTH_SCORE_DEPRIORITISE_THRESHOLD = envInt('ALBERTALERT_HEALTH_SCORE_DEPRIORITISE_THRESHOLD', 40, 0); diff --git a/scripts/ci/seed-quarantine-from-health.mjs b/scripts/ci/seed-quarantine-from-health.mjs index 76646875..1162ad01 100644 --- a/scripts/ci/seed-quarantine-from-health.mjs +++ b/scripts/ci/seed-quarantine-from-health.mjs @@ -18,6 +18,9 @@ import path from 'node:path'; const AUTO_QUARANTINE_FAILURE_THRESHOLD = Number( process.env.ALBERTALERT_AUTO_QUARANTINE_FAILURE_THRESHOLD || 6 ); +const AUTO_QUARANTINE_TIMEOUT_THRESHOLD = Number( + process.env.ALBERTALERT_AUTO_QUARANTINE_TIMEOUT_THRESHOLD || 4 +); // ── Paths ──────────────────────────────────────────────────────────── const repoRoot = path.resolve( @@ -36,6 +39,7 @@ const sourcesPath = process.argv[3] || path.join(repoRoot, 'data', 'sources.json */ export function deriveQuarantineIds(sourceHealth, options = {}) { const failureThreshold = options.failureThreshold ?? AUTO_QUARANTINE_FAILURE_THRESHOLD; + const timeoutThreshold = options.timeoutThreshold ?? AUTO_QUARANTINE_TIMEOUT_THRESHOLD; const ids = new Set(); if (!sourceHealth || typeof sourceHealth !== 'object') return ids; @@ -45,10 +49,12 @@ export function deriveQuarantineIds(sourceHealth, options = {}) { const alreadyQuarantined = Boolean(entry.quarantined); const consecutiveFailures = Number(entry.consecutiveFailures || 0); + const consecutiveTimeoutFailures = Number(entry.consecutiveTimeoutFailures || 0); if ( alreadyQuarantined || - consecutiveFailures >= failureThreshold + consecutiveFailures >= failureThreshold || + consecutiveTimeoutFailures >= timeoutThreshold ) { ids.add(id); } diff --git a/source-quarantine.html b/source-quarantine.html index 47aaf9ea..e15f35db 100644 --- a/source-quarantine.html +++ b/source-quarantine.html @@ -269,13 +269,13 @@

Source Quarantine Review

- Generated: 2026-04-24T18:32:34.861Z - Low-health sources: 0 + Generated: 2026-04-24T17:57:58.900Z + Low-health sources: 527 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: 163h 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-24T18:32:34.861Z') + '', + 'Generated: ' + escapeHtml(payload.generatedAt || '2026-04-24T17:57:58.900Z') + '', '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 f670f9ae..5952bf69 100644 --- a/tests/decision-logic.test.mjs +++ b/tests/decision-logic.test.mjs @@ -61,6 +61,7 @@ import { DEFAULT_MAX_RETRIES, DEFAULT_TIMEOUT_MS, FEED_SOURCE_CONCURRENCY, + AUTO_QUARANTINE_TIMEOUT_THRESHOLD, MAX_FEED_PREFETCH_ITEMS, MAX_HTML_PREFETCH_ITEMS, MAX_HTML_SOURCES_PER_RUN, @@ -1399,6 +1400,7 @@ test('default fetch/runtime tuning constants remain stable', () => { assert.equal(MAX_HTML_PREFETCH_ITEMS, 12); assert.equal(MAX_FEED_PREFETCH_ITEMS, 8); assert.equal(AUTO_QUARANTINE_BLOCKED_HTML_THRESHOLD, 4); + assert.equal(AUTO_QUARANTINE_TIMEOUT_THRESHOLD, 4); }); test('source error summary classifies HTTP 404 separately for direct quarantine routing', async () => { diff --git a/tests/error-pattern-analysis.test.mjs b/tests/error-pattern-analysis.test.mjs index 264a9aca..aad2fec5 100644 --- a/tests/error-pattern-analysis.test.mjs +++ b/tests/error-pattern-analysis.test.mjs @@ -136,6 +136,7 @@ test('nextSourceHealthEntry – failure appends to empty recentErrors', () => { assert.equal(result.recentErrors.length, 1); assert.equal(result.recentErrors[0].category, 'not-found-404'); assert.equal(result.recentErrors[0].at, '2026-01-01T00:00:00Z'); + assert.equal(result.consecutiveTimeoutFailures, 0); }); test('nextSourceHealthEntry – failures accumulate in rolling window', () => { @@ -147,6 +148,7 @@ test('nextSourceHealthEntry – failures accumulate in rolling window', () => { assert.equal(prior.recentErrors.length, 3); assert.equal(prior.recentErrors[0].category, 'timeout'); assert.equal(prior.recentErrors[2].at, '2026-01-03T00:00:00Z'); + assert.equal(prior.consecutiveTimeoutFailures, 3); }); test('nextSourceHealthEntry – rolling window caps at configured size', () => { @@ -175,6 +177,7 @@ test('nextSourceHealthEntry – success clears recentErrors', () => { const result = nextSourceHealthEntry(source, successStat(), prior, '2026-01-03T00:00:00Z'); assert.deepEqual(result.recentErrors, []); assert.equal(result.lastErrorCategory, null); + assert.equal(result.consecutiveTimeoutFailures, 0); }); test('nextSourceHealthEntry – empty run preserves existing recentErrors', () => { @@ -186,6 +189,7 @@ test('nextSourceHealthEntry – empty run preserves existing recentErrors', () = const result = nextSourceHealthEntry(source, emptyStat(), prior, '2026-01-02T00:00:00Z'); assert.equal(result.recentErrors.length, 1); assert.equal(result.recentErrors[0].category, 'timeout'); + assert.equal(result.consecutiveTimeoutFailures, 0); }); test('nextSourceHealthEntry – quarantine reason uses pattern analysis', () => { @@ -254,6 +258,29 @@ test('nextSourceHealthEntry – never-verified source with non-definitive failur const source = makeSource(); const result = nextSourceHealthEntry(source, failStat('timeout', 'Timed out'), {}, '2026-01-01T00:00:00Z'); assert.equal(result.quarantined, false, 'timeout alone should not immediately quarantine a new source'); + assert.equal(result.consecutiveTimeoutFailures, 1); +}); + +test('nextSourceHealthEntry – four consecutive timeouts trigger auto-quarantine', () => { + const source = makeSource(); + let prior = {}; + for (let i = 0; i < 4; i++) { + prior = nextSourceHealthEntry(source, failStat('timeout', 'Timed out'), prior, `2026-01-0${i + 1}T00:00:00Z`); + } + assert.equal(prior.consecutiveFailures, 4); + assert.equal(prior.consecutiveTimeoutFailures, 4); + assert.equal(prior.quarantined, true); + assert.match(prior.quarantineReason, /persistent timeouts/i); +}); + +test('nextSourceHealthEntry – non-timeout failure resets timeout streak', () => { + const source = makeSource(); + let prior = {}; + prior = nextSourceHealthEntry(source, failStat('timeout', 'Timed out'), prior, '2026-01-01T00:00:00Z'); + prior = nextSourceHealthEntry(source, failStat('timeout', 'Timed out'), prior, '2026-01-02T00:00:00Z'); + prior = nextSourceHealthEntry(source, failStat('network-failure', 'ECONNRESET'), prior, '2026-01-03T00:00:00Z'); + assert.equal(prior.consecutiveTimeoutFailures, 0); + assert.equal(prior.quarantined, false); }); test('nextSourceHealthEntry – previously-verified source with 404 is NOT immediately quarantined', () => { diff --git a/tests/seed-quarantine.test.mjs b/tests/seed-quarantine.test.mjs index 35fa1513..66977a94 100644 --- a/tests/seed-quarantine.test.mjs +++ b/tests/seed-quarantine.test.mjs @@ -42,6 +42,14 @@ test('deriveQuarantineIds flags source at or above failure threshold', () => { assert.ok(ids.has('src-c')); }); +test('deriveQuarantineIds flags source at or above timeout threshold', () => { + const ids = deriveQuarantineIds( + { 'src-timeout': { healthScore: 50, quarantined: false, consecutiveFailures: 4, consecutiveTimeoutFailures: 4 } }, + { failureThreshold: 6, timeoutThreshold: 4 } + ); + assert.ok(ids.has('src-timeout')); +}); + test('deriveQuarantineIds does not flag healthy source', () => { const ids = deriveQuarantineIds( { 'src-d': { healthScore: 80, quarantined: false, consecutiveFailures: 1 } }, From a3e2d6699ec3174bdf6a0c33a0286758d4a0ede3 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 24 Apr 2026 18:39:10 +0000 Subject: [PATCH 3/4] chore: checkpoint before playwright workflow fix Agent-Logs-Url: https://github.com/potemkin666/AlbertAlert/sessions/2112c38c-9289-4c53-abb4-eeb1c4ccc571 Co-authored-by: potemkin666 <183807833+potemkin666@users.noreply.github.com> --- data/albertalert.sqlite | Bin 2396160 -> 2404352 bytes data/quarantined-sources.json | 18783 +--------------- data/source-remediation-sweep.json | 92 +- data/top-20-source-remediation.json | 41 +- live-alerts.json | 31166 +++----------------------- source-quarantine.html | 12 +- 6 files changed, 3711 insertions(+), 46383 deletions(-) diff --git a/data/albertalert.sqlite b/data/albertalert.sqlite index c900dc1a9c5a150e54de13e4e63d577174774c7d..c30b1e1ff67427d66e0b37514647074ded06ea3b 100644 GIT binary patch delta 4089 zcmbVP3vd(18NS^;Nq5rePDaAA<%i_h#yl)r4@itRRAIw6EM(>$2AJf^6VKm%!MLjwu#gk(Z^q>xTCBs4P#leTI11Tw}v z>~!Zo&1i4`_wN7gt$TI|tUEUZHf1T6Q50+#w9E#}c0T@`z~l>Vipp;toYkMx{XPvHD|He>fZo1VcVz!Ifyt1H1S*Svv@dDd7|0obVT6kAQ^@ zLaR_NOcm1jFZg%)Kk(1--{)iecleonI*+vf(4N-r)&5euNxM=jYHPJ++CnYOea4;T z-r|18ZQ%w$3n&KlTqpNk?taeA<#JGSPV=hf8O?yEOVgy8r*UZv>Z|Ir>etlU)WdOg zmwLXsNtUy|8s4s26vq|&6u(kDp=eXoE9{DNg@V37ze(?> zx6lK0AH9U0OJ|^q=+7v=9Sx#YD1;WFS~MN;@G^V{z6^f~WAHKPfm5IYd;(5_-QZ_n zEk$J`FKi92i1kE7YezI3vUW$rc46WaSsu~Iw!Eu$&k+H!94ty7Ze&Np(5B85@Xhg z7!`dHe>=FAbf_lqXXY+4zVXfz2RcbAtQ9o;iT-R&D^56nHJc>;QTIULLH@#+5t4 z6DCGJXR?k?UnC@2W5F&l3W{vV4{_5qG-Ckn0t7GtccK4Qm6Ejvs)iC4DHHq)ik0*- z?KN#N>g8HAJK#3;yXv{%MRpH!l{&%HsdiE|gVp-D#PvJ$PFI$mVHt+4qA2oEOjT+J zj@o3k*Egl5=K7wq)QV!@#{MI#95#pBYAdrk$`;xyDxKw(E?bGiUH0fW^J%vUB({Hw z&MM>5q<*`;++)6nUn2!bc~+mQNYb~F*Z+@qxpxUin$mC6`(3#4OJo{ozlI2C0tJDR zKt;e1umoxX4FN}>CEy7J0v$mb!6X7bfq`H$K{|nvAcG*2K-Ql{kWG+7kV{}Dun^=C z+?Qy-mj857fex?~e}&g+OSy+NF?9>u&h)F+C^sqg(r==_!}H(^zz(OaJ6|GoND3`g zl~wAMsKgR5M1r^R(%u;`tKAC0+7Qz@wyC*BSFBBz44->L=#W;p3(q*7fw-uMvFp z2WBJw=&0!+Sd$F>&T)_wW#CVbnVyBctMOOI&6(!WXDyYUP?+%WjpVpbm|sQfg;n@! zNkL}XZL9ILW9Cc6%`0!zw`ijE-QKNwy7=L~8)6_Utzo?Cu39 z3vHfCr>)XvE3w&ZkM6f@mdDSfCB1T9s=N|1XL`nl7{A#Y33-f;@mAg*39+Tj=Mh_6 z6&{u5jVWd)ow%zj7>kLbWr4q)9E(mdO6GcGt=5HNBodC00G9{FUdvp#b|6Q(quw6UBh_jt?`4`NgeZRGNm3gXrT%VkJbL0;V~ZFCbWgzE6J zLW6$ZJ-i-aw3OPr6CNpm3#SbkGZUMBRL~8d+K*@k@<%A4oj*cKbbyab#{M#WvOsci zs$|-yD0YPS#~iqn#d}ucZWX@MeEeRQ1If_u)F<zF&zI7pNIGUo8LS`QhhC{O!ECuSHo2P1 zmI_-%i^EmX>hjcxU8K9p9kSaO>a#rPYxPCiL`yB{jsZ(uPq33PM19Dzpf3{iS+4iW vV6@9pOFmr5B{I}zsqsZc3_j-#Sarr!l3{l)v^y%v&DK$#?Dcc_*5vpf$I`X` delta 1328 zcmX}sdu&rx7y$5o=bZa&?>%kz=(??IOW9CH*#;|n$ZI^@kdes@LgHg~U7=;&Bexx9 zQAZ~;gBXD^$%#Y+jDo-)unpG*6$C?~5F%(qfgq0nMk7;*(Fq8iVd71G_a^t;^PTT} z-^op0*#gO(TVQjJ&~7rJMSY$*&_3|e2UMOwXPWpmx8Gu2Fl0;qruWZrAE*2crX%A6 z6X{KQcF5{^gZ6up1^u5CIj5vsu@A+9Mr+ugh_-~|Fo}PcmVt{P+~E%;{Gqlsqbb@N zOtcw+!D7)WoHNm%DD&==7Y})oNxFa{?1Nw|Y$O^&kq)DEjRSBAinnzbp>TuI(b^D+ z#`)yV>VUu_OY{=Iqxtk6{gd9Nzw%hu=p~-(2|9GSA^&r{5$aNs2l7A&LN!e8w4bvTM^aWUWCNjglo(Js1zE~I{%r9aSb z=-=p{>U;F{`Wk(ec$&N^j_51&*?NI))lJ$>?Sgh(+pYCzA#I*ksM$1R8MU0Zj99i> zUbn2YEVPtaZ00|Nx7V7ln9rK`VXN@6P;1^`UX320Tj&friuR$cD2D2UBJ#0dCqJ8) zm>)OW)qCnM>S^_m_@265U8k;87pujpL%FY9RgNipl=Vt8*?}sNPpLtYGFh?9f5|uH zFXRLAF1bsNkc;wDav6LN@5|ZJL+OU}wKVIvv{%|DbxDoziu4S;0Oi6p;gqmPnk%^_ zMI04h6C1@Eu>g9Y8HQo|qh~!-@UG*YY4InFa4_CsbowKSmKd_<<0X8ZS7nbC*);4z z(NNs*H-}>IfI&Gt$y&<6MJD6rh*h1`^4XyZa69aH5?a+7PWX**JRCGa5g7B~MSNq| zG^iweIUheSZsNrY5!-dmnTw#0b(O%gtfUOGo$0vnQGSWG_WyHqdGLJ1tbe<5 zM3j?_%lKx$RWjJE5~!s*cB9p8u~=tQIMfWwm_8l8V>P8v!g@>L3Ymbb`RZpxmk3Rd z$^_?$BZX(c)bXNBN9^pK^fcC320KU|p2HKGE;w1F0(}2<;HnpSSymS4!}Ba_Elw&VjM#3#W7siiw1#1DKv;5 z&MK5PnCzzgCb~@Aq<%qg78nK=umaXLpiD`(^E zTpE|oWpJ6CgUjNa+<5#PE|+t0d7PW`a9(agDl+DKcajMDs7W6kvL&zUsnMwuGnZSource Quarantine Review
- Generated: 2026-04-24T17:57:58.900Z - Low-health sources: 527 + Generated: 2026-04-24T18:37:50.264Z + 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: 163h + 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-24T17:57:58.900Z') + '', + 'Generated: ' + escapeHtml(payload.generatedAt || '2026-04-24T18:37:50.264Z') + '', 'Low-health sources: ' + escapeHtml(currentEntries.length) + '', 'Pending suggestions: ' + escapeHtml(currentSuggestions.length) + '', 'SLA: deprioritised, auto-recheck 24h+', From 3d1870e1b4d489ec5cb17f11e40f6b4d691e5b31 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 24 Apr 2026 18:39:58 +0000 Subject: [PATCH 4/4] Install Playwright browsers in CI and deprioritize HTML sources Agent-Logs-Url: https://github.com/potemkin666/AlbertAlert/sessions/2112c38c-9289-4c53-abb4-eeb1c4ccc571 Co-authored-by: potemkin666 <183807833+potemkin666@users.noreply.github.com> --- .github/workflows/ci-feed-validation.yml | 6 ++---- .github/workflows/update-live-feed.yml | 3 +-- scripts/build-live-feed/config.mjs | 2 +- tests/decision-logic.test.mjs | 8 ++++++++ 4 files changed, 12 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ci-feed-validation.yml b/.github/workflows/ci-feed-validation.yml index 49207e21..3306eac0 100644 --- a/.github/workflows/ci-feed-validation.yml +++ b/.github/workflows/ci-feed-validation.yml @@ -49,8 +49,7 @@ jobs: run: npm ci --no-audit --no-fund - name: Install Playwright Chromium - if: ${{ env.ALBERTALERT_ENABLE_PLAYWRIGHT_FALLBACK == 'true' }} - run: npx playwright install chromium --with-deps + run: npx playwright install --with-deps chromium - name: Validate feed data files run: npm run validate:feed-data @@ -135,8 +134,7 @@ jobs: run: npm ci --no-audit --no-fund - name: Install Playwright Chromium - if: ${{ env.ALBERTALERT_ENABLE_PLAYWRIGHT_FALLBACK == 'true' }} - run: npx playwright install chromium --with-deps + run: npx playwright install --with-deps chromium - name: Seed quarantine from production health run: node ./scripts/ci/seed-quarantine-from-health.mjs diff --git a/.github/workflows/update-live-feed.yml b/.github/workflows/update-live-feed.yml index e96d550c..27e21d0d 100644 --- a/.github/workflows/update-live-feed.yml +++ b/.github/workflows/update-live-feed.yml @@ -36,8 +36,7 @@ jobs: run: npm ci --no-audit --no-fund - name: Install Playwright Chromium - if: ${{ env.ALBERTALERT_ENABLE_PLAYWRIGHT_FALLBACK == 'true' }} - run: npx playwright install chromium --with-deps + run: npx playwright install --with-deps chromium - name: Validate feed data files run: npm run validate:feed-data diff --git a/scripts/build-live-feed/config.mjs b/scripts/build-live-feed/config.mjs index b2dbd928..2b454cf4 100644 --- a/scripts/build-live-feed/config.mjs +++ b/scripts/build-live-feed/config.mjs @@ -428,7 +428,7 @@ export function sourceRefreshEveryHours(source) { const byLane = DEFAULT_SOURCE_REFRESH_HOURS_BY_LANE[source?.lane] || DEFAULT_SOURCE_REFRESH_HOURS_BY_LANE.default; if (source?.lane === 'incidents') return 0.25; - if (source?.kind === 'html') return Math.max(byLane, 1); + if (source?.kind === 'html') return Math.max(byLane * 2, 1); return byLane; } diff --git a/tests/decision-logic.test.mjs b/tests/decision-logic.test.mjs index 5952bf69..0734ce7e 100644 --- a/tests/decision-logic.test.mjs +++ b/tests/decision-logic.test.mjs @@ -65,6 +65,7 @@ import { MAX_FEED_PREFETCH_ITEMS, MAX_HTML_PREFETCH_ITEMS, MAX_HTML_SOURCES_PER_RUN, + sourceRefreshEveryHours, shouldRefreshSourceThisRun, sourceScheduleIntervalMinutes, sourceScheduleOffsetMinutes, @@ -1393,6 +1394,13 @@ test('html source run cap keeps control scheduler budget at legacy value', () => assert.equal(CONTROL_MAX_HTML_SOURCES_PER_RUN, 30); }); +test('non-incident HTML sources refresh less often than machine-readable equivalents', () => { + assert.equal(sourceRefreshEveryHours({ lane: 'context', kind: 'rss' }), 0.5); + assert.equal(sourceRefreshEveryHours({ lane: 'context', kind: 'html' }), 1); + assert.equal(sourceRefreshEveryHours({ lane: 'oversight', kind: 'rss' }), 1); + assert.equal(sourceRefreshEveryHours({ lane: 'oversight', kind: 'html' }), 2); +}); + test('default fetch/runtime tuning constants remain stable', () => { assert.equal(DEFAULT_TIMEOUT_MS, 12000); assert.equal(DEFAULT_MAX_RETRIES, 2);