From 5498d61783d323e30d5deaa664c24a0d6d5efd48 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 25 Apr 2026 15:47:46 +0000 Subject: [PATCH 1/9] Plan quarantine reset Agent-Logs-Url: https://github.com/potemkin666/AlbertAlert/sessions/bac9620c-285f-47fd-a16c-cefdcedccee2 Co-authored-by: potemkin666 <183807833+potemkin666@users.noreply.github.com> --- data/albertalert.sqlite | Bin 2818048 -> 2818048 bytes data/quarantined-sources.json | 9323 +-------- data/source-remediation-sweep.json | 2 +- data/top-20-source-remediation.json | 2 +- live-alerts.json | 28603 +------------------------- source-quarantine.html | 10 +- 6 files changed, 217 insertions(+), 37723 deletions(-) diff --git a/data/albertalert.sqlite b/data/albertalert.sqlite index d82c8532759ebab32bf78d1ac37b5b9d7069e32b..6acb8715248437cb0087006d785868e510a5c1eb 100644 GIT binary patch delta 1953 zcmb7_&rcgi6vubH2Cu<}fJ4C;;w7mGv9#9u7w+11s)`gfNmZf-sZAo4uI({w13T{i z0CMSirMTQGDpXmiR4Io@C~7Wk4{lG%DN@=f{S(>~=c?x%`o^$p7TKsB`E%JB&HKLZ zoA+F=KcVZuZiKFXGqph1fBfvLrO5~5G?Vmb*ig%8MKzR_HCfZKdhh1@;|(5fB2|-D*L2VC6HMCKQ#Fk*V?{^Xy63k^Cg<9am9kuc8#T`h5^S}^D`-pO zjk|meuQ!L6;{KicX&UeV4B!R&fPTOSumCwT01N^FAP5Wr!@wC}1Q-QEz*%4ncmo&* zCV((72}FP?U>Z0FL;((%0nP&#fHzzB)3N$%Ziv~V`kKT2L$Sca!C$=32fp@A`*+zN z`gelgdK1hZ7>F6u8gG0MDimhM{4A_uks`}q?BVI+q1D_C$7OC2p-RVeQiGI`n&*WK zpUN&Lv-wOepB582asGCP4Xb)}flG@Ui>>9U~ITa^|y9mhkRCb!M z*7MBlue3SXHjARH(ZNJW)u_i4ZjRYQZR zz*n>7Qm#~$lJlu_wpy+(;EfGKk@b7WAN9vry{oO^8u#9|S(B6ss&Ma?Rjg^;M`#sp z(K;_)CSetcOdM(5_U%M}*ph|JvLNQuLS7IOf*{;}#yueGJL`@$5rhMOTid ztA|b`>23ih$5KWTQ7QYDD5Qk>ikR&51j$y`b%eN^){(|7V1wkqFC$gODrC4R zqb=@zB&o8pim%xHgbWqekey-YN-_YBC72ZQ@Us&fPq)|3!Q)G4(KQSxT{`48D*d9cFSY#O4m!6y>Jt}M~JK=q&Qe-yWvi7GS4rzkJ zAP@=SG`|ebv2LgBD98RB>0JpiW8Mb2WPeK%!Hq9@> ab7NOruj9C8XQbGd_MSMcTmN$7A1pRRdS`FGWiJ%q*&7sK)B)7O|_~9Vb zXt|Wb)zl_5wFR}*bXy?J4ZVgBJRZDfngcSyic{+{u|=)>{qs_cM@TSOqt>h+9G2_N zYWe86aZ;W0T~of!3#d{LjZy>0U-#(Buv3H%)tM56lNg?aY#TCQZNT;n1=<(z@ptQ zXy$KJ6-O?K2i*b9ckO)?N9u(qsaW#eFl60|_Gl&hM09f%vU+xMHCuI454qdXidk5K sWm_xeJ}WX)9G5y!9PB=nj?>TCPG3)L3n^xB&sg6?|4p{>qrdw903qOdDF6Tf diff --git a/data/quarantined-sources.json b/data/quarantined-sources.json index 19196f91..47fe034b 100644 --- a/data/quarantined-sources.json +++ b/data/quarantined-sources.json @@ -1,9325 +1,14 @@ { - "generatedAt": "2026-04-25T15:10:51.097Z", - "count": 190, + "generatedAt": "2026-04-25T15:47:39.796Z", + "count": 0, "metrics": { - "total": 190, - "newThisWeek": 1, - "avgTimeInQuarantineHours": 186, + "total": 0, + "newThisWeek": 0, + "avgTimeInQuarantineHours": 0, "avgHealthScore": 0, "reQuarantineRate": 0, "reQuarantined": 0, "restoredTotal": 0 }, - "sources": [ - { - "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, - "consecutiveTimeoutFailures": 0, - "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": "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, - "consecutiveTimeoutFailures": 0, - "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": "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, - "consecutiveTimeoutFailures": 0, - "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": "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, - "consecutiveTimeoutFailures": 0, - "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": "ecfr-feeds-index", - "provider": "ECFR - Feeds", - "endpoint": "https://ecfr.eu/feed/", - "kind": "rss", - "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, - "consecutiveTimeoutFailures": 0, - "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/rssfeed", - "kind": "rss", - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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/feed/?post_type=publication", - "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-18T03:42:22.439Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveTimeoutFailures": 0, - "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": "AP News - Terrorism", - "endpoint": "https://apnews.com/hub/terrorism", - "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, - "consecutiveTimeoutFailures": 0, - "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/feed/", - "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-18T03:42:22.439Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveTimeoutFailures": 0, - "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/global-analysis", - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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/feed/", - "kind": "rss", - "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, - "consecutiveTimeoutFailures": 0, - "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": "chatham-house-home", - "provider": "Chatham House", - "endpoint": "https://www.chathamhouse.org/path/whatsnew.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-18T03:42:22.439Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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://institute.global/insights/geopolitics-and-security", - "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, - "consecutiveTimeoutFailures": 0, - "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/news/feed/", - "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-18T03:42:22.439Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveTimeoutFailures": 0, - "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/category/publications/reports/feed/", - "kind": "rss", - "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, - "consecutiveTimeoutFailures": 0, - "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/pubs/new.xml", - "kind": "rss", - "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, - "consecutiveTimeoutFailures": 0, - "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) - BAAD Database", - "endpoint": "https://www.start.umd.edu/baad/database.html?page=1", - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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": 8, - "consecutiveTimeoutFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "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" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-25T14:31:06.996Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-05-02T14:31:06.996Z", - "lastFailureAt": "2026-04-25T14:31:06.996Z", - "lastCheckedAt": "2026-04-25T14:31:06.996Z" - }, - { - "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": 8, - "consecutiveTimeoutFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "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" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-25T14:31:06.996Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-05-02T14:31:06.996Z", - "lastFailureAt": "2026-04-25T14:31:06.996Z", - "lastCheckedAt": "2026-04-25T14:31:06.996Z" - }, - { - "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": 8, - "consecutiveTimeoutFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "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" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-25T14:31:06.996Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-05-02T14:31:06.996Z", - "lastFailureAt": "2026-04-25T14:31:06.996Z", - "lastCheckedAt": "2026-04-25T14:31:06.996Z" - }, - { - "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": 8, - "consecutiveTimeoutFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "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" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-25T14:31:06.996Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-05-02T14:31:06.996Z", - "lastFailureAt": "2026-04-25T14:31:06.996Z", - "lastCheckedAt": "2026-04-25T14:31:06.996Z" - }, - { - "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": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 8, - "consecutiveTimeoutFailures": 0, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "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" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-25T14:31:06.996Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-05-02T14:31:06.996Z", - "lastFailureAt": "2026-04-25T14:31:06.996Z", - "lastCheckedAt": "2026-04-25T14:31:06.996Z" - }, - { - "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": 8, - "consecutiveTimeoutFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "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" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-25T14:31:06.996Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-05-02T14:31:06.996Z", - "lastFailureAt": "2026-04-25T14:31:06.996Z", - "lastCheckedAt": "2026-04-25T14:31:06.996Z" - }, - { - "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": 8, - "consecutiveTimeoutFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "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" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-25T14:31:06.996Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-05-02T14:31:06.996Z", - "lastFailureAt": "2026-04-25T14:31:06.996Z", - "lastCheckedAt": "2026-04-25T14:31:06.996Z" - }, - { - "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": 8, - "consecutiveTimeoutFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "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" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-25T14:31:06.996Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-05-02T14:31:06.996Z", - "lastFailureAt": "2026-04-25T14:31:06.996Z", - "lastCheckedAt": "2026-04-25T14:31:06.996Z" - }, - { - "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": 8, - "consecutiveTimeoutFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "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" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-25T14:31:06.996Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-05-02T14:31:06.996Z", - "lastFailureAt": "2026-04-25T14:31:06.996Z", - "lastCheckedAt": "2026-04-25T14:31:06.996Z" - }, - { - "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": 8, - "consecutiveTimeoutFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "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" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-25T14:31:06.996Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-05-02T14:31:06.996Z", - "lastFailureAt": "2026-04-25T14:31:06.996Z", - "lastCheckedAt": "2026-04-25T14:31:06.996Z" - }, - { - "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": 8, - "consecutiveTimeoutFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "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" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-25T14:31:06.996Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-05-02T14:31:06.996Z", - "lastFailureAt": "2026-04-25T14:31:06.996Z", - "lastCheckedAt": "2026-04-25T14:31:06.996Z" - }, - { - "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": 8, - "consecutiveTimeoutFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "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" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-25T14:31:06.996Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-05-02T14:31:06.996Z", - "lastFailureAt": "2026-04-25T14:31:06.996Z", - "lastCheckedAt": "2026-04-25T14:31:06.996Z" - }, - { - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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/rss/press-releases.xml", - "kind": "rss", - "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, - "consecutiveTimeoutFailures": 0, - "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/rss.xml", - "kind": "rss", - "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, - "consecutiveTimeoutFailures": 0, - "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/news-and-press-releases/-/asset_publisher/LVkvGHGkmM3J/rss", - "kind": "rss", - "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, - "consecutiveTimeoutFailures": 0, - "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": "spain-interior-ministry-news", - "provider": "Spanish Ministry of the Interior - News", - "endpoint": "https://www.interior.gob.es/opencms/en/prensa/noticias/", - "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": 8, - "consecutiveTimeoutFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "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" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-25T10:57:22.432Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-05-02T10:57:22.432Z", - "lastFailureAt": "2026-04-25T10:57:22.432Z", - "lastCheckedAt": "2026-04-25T10:57:22.432Z" - }, - { - "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, - "consecutiveTimeoutFailures": 0, - "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/national-bureau-of-investigation/-/asset_publisher/ZtAEeHB39. Lxr/rss", - "kind": "rss", - "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, - "consecutiveTimeoutFailures": 0, - "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": "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, - "consecutiveTimeoutFailures": 0, - "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-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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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": "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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 - Terrorism and Counterterrorism", - "endpoint": "https://www.hrw.org/topic/terrorism-counterterrorism", - "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": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 8, - "consecutiveTimeoutFailures": 0, - "consecutiveBlockedFailures": 1, - "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-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" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-25T10:57:22.432Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-05-02T10:57:22.432Z", - "lastFailureAt": "2026-04-25T10:57:22.432Z", - "lastCheckedAt": "2026-04-25T10:57:22.432Z" - }, - { - "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, - "consecutiveTimeoutFailures": 0, - "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-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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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": "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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": "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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": 8, - "consecutiveTimeoutFailures": 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-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" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-25T10:57:22.432Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-05-02T10:57:22.432Z", - "lastFailureAt": "2026-04-25T10:57:22.432Z", - "lastCheckedAt": "2026-04-25T10:57:22.432Z" - }, - { - "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": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 8, - "consecutiveTimeoutFailures": 0, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "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" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-25T10:57:22.432Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-05-02T10:57:22.432Z", - "lastFailureAt": "2026-04-25T10:57:22.432Z", - "lastCheckedAt": "2026-04-25T10:57:22.432Z" - }, - { - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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": "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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-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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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": "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, - "consecutiveTimeoutFailures": 0, - "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": 8, - "consecutiveTimeoutFailures": 0, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "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" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-25T10:57:22.432Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-05-02T10:57:22.432Z", - "lastFailureAt": "2026-04-25T10:57:22.432Z", - "lastCheckedAt": "2026-04-25T10:57:22.432Z" - }, - { - "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, - "consecutiveTimeoutFailures": 0, - "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": "timeout", - "lastErrorMessage": "page.goto: Timeout 12000ms exceeded. Call log: - navigating to \"https://www.nationalcrimeagency.gov.uk/news?source=city-of-london-police-news\", waiting until \"domcontentloaded\"", - "consecutiveFailures": 8, - "consecutiveTimeoutFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "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" - }, - { - "category": "timeout", - "message": "page.goto: Timeout 12000ms exceeded.\nCall log:\n - navigating to \"https://www.nationalcrimeagency.gov.uk/news?source=city-of-london-police-news\", waiting until \"domcontentloaded\"\n", - "at": "2026-04-25T10:57:22.432Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-05-02T10:57:22.432Z", - "lastFailureAt": "2026-04-25T10:57:22.432Z", - "lastCheckedAt": "2026-04-25T10:57:22.432Z" - }, - { - "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, - "consecutiveTimeoutFailures": 0, - "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-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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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", - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 8, - "consecutiveTimeoutFailures": 0, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "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" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-25T10:57:22.432Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-05-02T10:57:22.432Z", - "lastFailureAt": "2026-04-25T10:57:22.432Z", - "lastCheckedAt": "2026-04-25T10:57:22.432Z" - }, - { - "id": "national-crime-agency-news", - "provider": "National Crime Agency - 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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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", - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 8, - "consecutiveTimeoutFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "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" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-25T10:57:22.432Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-05-02T10:57:22.432Z", - "lastFailureAt": "2026-04-25T10:57:22.432Z", - "lastCheckedAt": "2026-04-25T10:57:22.432Z" - }, - { - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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": 8, - "consecutiveTimeoutFailures": 0, - "consecutiveBlockedFailures": 1, - "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-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" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-25T14:31:06.996Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-05-02T14:31:06.996Z", - "lastFailureAt": "2026-04-25T14:31:06.996Z", - "lastCheckedAt": "2026-04-25T14:31:06.996Z" - }, - { - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 8, - "consecutiveTimeoutFailures": 0, - "consecutiveBlockedFailures": 1, - "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-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" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-25T10:57:22.432Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-05-02T10:57:22.432Z", - "lastFailureAt": "2026-04-25T10:57:22.432Z", - "lastCheckedAt": "2026-04-25T10:57:22.432Z" - }, - { - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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-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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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-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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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": 8, - "consecutiveTimeoutFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "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" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-25T10:57:22.432Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-05-02T10:57:22.432Z", - "lastFailureAt": "2026-04-25T10:57:22.432Z", - "lastCheckedAt": "2026-04-25T10:57:22.432Z" - }, - { - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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-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, - "consecutiveTimeoutFailures": 0, - "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-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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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": 8, - "consecutiveTimeoutFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "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" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-25T10:57:22.432Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-05-02T10:57:22.432Z", - "lastFailureAt": "2026-04-25T10:57:22.432Z", - "lastCheckedAt": "2026-04-25T10:57:22.432Z" - }, - { - "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": 8, - "consecutiveTimeoutFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "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" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-25T10:57:22.432Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-05-02T10:57:22.432Z", - "lastFailureAt": "2026-04-25T10:57:22.432Z", - "lastCheckedAt": "2026-04-25T10:57:22.432Z" - }, - { - "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": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 8, - "consecutiveTimeoutFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "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" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-25T10:57:22.432Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-05-02T10:57:22.432Z", - "lastFailureAt": "2026-04-25T10:57:22.432Z", - "lastCheckedAt": "2026-04-25T10:57:22.432Z" - }, - { - "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": 8, - "consecutiveTimeoutFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "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" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-25T10:57:22.432Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-05-02T10:57:22.432Z", - "lastFailureAt": "2026-04-25T10:57:22.432Z", - "lastCheckedAt": "2026-04-25T10:57:22.432Z" - }, - { - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 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-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": "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, - "consecutiveTimeoutFailures": 0, - "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": "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, - "consecutiveTimeoutFailures": 0, - "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": "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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": "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, - "consecutiveTimeoutFailures": 0, - "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": "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, - "consecutiveTimeoutFailures": 0, - "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": "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, - "consecutiveTimeoutFailures": 0, - "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": "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, - "consecutiveTimeoutFailures": 0, - "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, - "consecutiveTimeoutFailures": 0, - "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" - } - ] + "sources": [] } diff --git a/data/source-remediation-sweep.json b/data/source-remediation-sweep.json index ede87808..ff09ccc2 100644 --- a/data/source-remediation-sweep.json +++ b/data/source-remediation-sweep.json @@ -1,6 +1,6 @@ { "generatedFrom": "live-alerts.json", - "generatedAt": "2026-04-25T15:10:51.097Z", + "generatedAt": "2026-04-25T15:47:39.796Z", "totalSourceErrors": 0, "byCategory": {}, "byKind": {}, diff --git a/data/top-20-source-remediation.json b/data/top-20-source-remediation.json index 1a876e85..a31a26f2 100644 --- a/data/top-20-source-remediation.json +++ b/data/top-20-source-remediation.json @@ -1,6 +1,6 @@ { "generatedFrom": "live-alerts.json", - "generatedAt": "2026-04-25T15:10:51.097Z", + "generatedAt": "2026-04-25T15:47:39.796Z", "totalSourceErrors": 0, "top20": [] } diff --git a/live-alerts.json b/live-alerts.json index 1c0bc022..e0ee54aa 100644 --- a/live-alerts.json +++ b/live-alerts.json @@ -1,7 +1,7 @@ { - "generatedAt": "2026-04-25T15:10:51.097Z", - "sourceCount": 18, - "alertCount": 181, + "generatedAt": "2026-04-25T15:47:39.796Z", + "sourceCount": 4, + "alertCount": 183, "alerts": [ { "id": "met-police-latest-news-0", @@ -10330,6 +10330,56 @@ "corroborationCount": 1, "isDuplicateOf": "fusion-f289bcaeba8fd554" }, + { + "id": "fixture-atom-oversight-0", + "fusedIncidentId": "fusion-b4a9eb5890206d91", + "title": "Oversight Committee Schedules Counter-Terror Review Hearing", + "location": "Europe", + "region": "europe", + "lane": "oversight", + "severity": "moderate", + "status": "Update", + "actor": "Fixture Oversight Feed", + "subject": "Fixture Oversight Feed", + "happenedWhen": "04 Apr 2026, 11:10", + "confidence": "Verified official source update", + "confidenceScore": 0.84, + "summary": "Parliamentary committee confirms an oversight hearing on prevention strategy.", + "aiSummary": "Fixture Oversight Feed has published an oversight or review update. This is useful for legal, custody, supervision, or institutional risk context rather than immediate public warning.", + "sourceExtract": "Parliamentary committee confirms an oversight hearing on prevention strategy.", + "peopleInvolved": [], + "source": "Fixture Oversight Feed", + "sourceUrl": "https://fixtures.albertalert.local/oversight/1", + "sourceTier": "context", + "reliabilityProfile": "official_context", + "incidentTrack": "", + "laneReason": "Oversight, legislation, or review signal relevant to counter-terror posture.", + "queueReason": "Oversight, legislation, or review signal relevant to counter-terror posture.", + "queueBucket": "oversight", + "time": "04 Apr 2026, 11:10", + "lat": 50, + "lng": 10, + "major": false, + "publishedAt": "2026-04-04T10:10:00.000Z", + "keywordHits": [ + "terror" + ], + "terrorismHits": [ + "terror", + "counter-terror" + ], + "eventType": "oversight_update", + "geoPrecision": "country", + "isOfficial": true, + "priorityScore": -5.8, + "freshnessBucket": 0, + "freshUntil": "2026-04-12T10:10:00.000Z", + "needsHumanReview": false, + "isTerrorRelevant": true, + "corroboratingSources": [], + "corroborationCount": 0, + "isDuplicateOf": null + }, { "id": "uk-ncsc-news-4", "fusedIncidentId": "fusion-a4c8d412564d7890", @@ -10656,6 +10706,51 @@ ], "corroborationCount": 1, "isDuplicateOf": "fusion-a705408939c4c725" + }, + { + "id": "fixture-json-prevention-0", + "fusedIncidentId": "fusion-f5cb7bfa16235fcf", + "title": "Community Prevention Workshop Expanded Across Regions", + "location": "Europe", + "region": "international", + "lane": "prevention", + "severity": "moderate", + "status": "Update", + "actor": "Fixture Prevention Feed", + "subject": "Fixture Prevention Feed", + "happenedWhen": "04 Apr 2026, 10:30", + "confidence": "Research or analytical source", + "confidenceScore": 0.68, + "summary": "Prevention specialists announced a new training cycle focused on reporting suspicious behavior.", + "aiSummary": "Fixture Prevention Feed has published a prevention or radicalisation update. The value is horizon scanning, theme detection, and context for later operational or analytical work.", + "sourceExtract": "Prevention specialists announced a new training cycle focused on reporting suspicious behavior.", + "peopleInvolved": [], + "source": "Fixture Prevention Feed", + "sourceUrl": "https://fixtures.albertalert.local/prevention/1", + "sourceTier": "research", + "reliabilityProfile": "specialist_research", + "incidentTrack": "", + "laneReason": "Prevention, radicalisation, or analytical context source.", + "queueReason": "Prevention, radicalisation, or analytical context source.", + "queueBucket": "prevention", + "time": "04 Apr 2026, 10:30", + "lat": 50, + "lng": 10, + "major": false, + "publishedAt": "2026-04-04T09:30:00.000Z", + "keywordHits": [], + "terrorismHits": [], + "eventType": "prevention_update", + "geoPrecision": "country", + "isOfficial": false, + "priorityScore": -8.3, + "freshnessBucket": 0, + "freshUntil": "2026-04-12T09:30:00.000Z", + "needsHumanReview": false, + "isTerrorRelevant": true, + "corroboratingSources": [], + "corroborationCount": 0, + "isDuplicateOf": null } ], "sourceErrors": [], @@ -12502,53 +12597,44 @@ "lng": 133.7751 } ], - "buildWarning": "Deferred 683 low-yield source(s) on health cooldown.", + "buildWarning": null, "runMetrics": { "schedulerMode": "candidate", "htmlBudget": 40, "htmlDomainCapPerRun": 3, - "htmlDomainUsage": { - "news.met.police.uk": 2, - "www.npas.police.uk": 1, - "www.hansardsociety.org.uk": 1 - }, + "htmlDomainUsage": {}, "coverage": { - "eligible": 701, - "scheduled": 18, - "initialScheduled": 4, - "continuationAttempted": 14, - "checked": 18, - "eligibleCheckedRate": 0.026, + "eligible": 4, + "scheduled": 4, + "initialScheduled": 1, + "continuationAttempted": 3, + "checked": 4, + "eligibleCheckedRate": 1, "scheduledCheckedRate": 1 }, "freshnessSlaByTier": { "high": { - "count": 6, - "avgMinutes": 6002, - "p95Minutes": 12854 - }, - "low": { - "count": 17, - "avgMinutes": 6339, - "p95Minutes": 11580 + "count": 1, + "avgMinutes": 0, + "p95Minutes": 0 }, "medium": { - "count": 26, - "avgMinutes": 4777, - "p95Minutes": 12084 + "count": 1, + "avgMinutes": 0, + "p95Minutes": 0 } }, "failureReasons": { - "success": 12 + "success": 2 }, "sourceRunStats": { - "totalConfiguredSources": 704, - "sourcesCheckedThisRun": 18, - "sourcesUpdatedThisRun": 12, + "totalConfiguredSources": 4, + "sourcesCheckedThisRun": 4, + "sourcesUpdatedThisRun": 2, "sourcesFailedThisRun": 0, "sourcesUnchangedThisRun": 0 }, - "runDurationMs": 10491, + "runDurationMs": 290, "playwrightFallback": { "attempts": 0, "successes": 0, @@ -12558,19 +12644,19 @@ "guardrails": { "maxRuntimeMs": 720000, "maxFailedSourceRate": 0.65, - "minSuccessfulSources": 8, - "targetSuccessfulSourcesPerRun": 60, + "minSuccessfulSources": 1, + "targetSuccessfulSourcesPerRun": 1, "failedSourceRate": 0, - "successfulSources": 12, + "successfulSources": 2, "violations": [], "midRun": { "throttleLevel": 0, - "totalAttempted": 18, + "totalAttempted": 4, "totalFailed": 0, - "totalSuccessful": 12, + "totalSuccessful": 2, "failedRate": 0, - "successRate": 0.667, - "avgSourceDurationMs": 581, + "successRate": 0.5, + "avgSourceDurationMs": 68, "criticalOnly": false, "skipPlaywright": false, "transitions": [] @@ -12580,239 +12666,58 @@ "health": { "expectedRefreshMinutes": 30, "staleAfterMinutes": 50, - "lastAttemptedRefreshTime": "2026-04-25T15:10:51.097Z", + "lastAttemptedRefreshTime": "2026-04-25T15:47:39.796Z", "usedFallback": false, - "lastSuccessfulRefreshTime": "2026-04-25T15:10:51.097Z", - "lastSuccessfulRunId": "24933860105", - "lastSuccessfulRunNumber": "532", + "lastSuccessfulRefreshTime": "2026-04-25T15:47:39.796Z", + "lastSuccessfulRunId": "24934565678", + "lastSuccessfulRunNumber": "397", "lastSuccessfulRunAttempt": "1", - "lastSuccessfulHeadSha": "690a5ff511b96cb5a0b97bede2a3822d2932bfe6", - "lastSuccessfulEvent": "schedule", - "lastSuccessfulSourceCount": 18, + "lastSuccessfulHeadSha": "d4d3ecd380e55b78f61fba20a73a8c14a02b5b3f", + "lastSuccessfulEvent": "dynamic", + "lastSuccessfulSourceCount": 4, "sourceErrorCount": 0, - "hasWarnings": true, - "autoDeferredSourceCount": 683, - "autoDeferredSources": [ - { - "id": "euaa-news", - "provider": "EUAA (EU Agency for Asylum) - Press Releases", - "reason": "health-deprioritised", - "until": "2026-04-25T15:31:06.996Z", - "statusKind": "cooled_down" - }, - { - "id": "eulisa-news-events", - "provider": "eu-LISA - News and Events (RSS)", - "reason": "health-deprioritised", - "until": "2026-04-25T15:31:06.996Z", - "statusKind": "cooled_down" - }, - { - "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-27T14:31:06.996Z", - "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": "cert-eu-security-advisories-rss", - "provider": "CERT-EU - Security Advisories (RSS)", - "reason": "health-deprioritised", - "until": "2026-04-25T15:31:06.996Z", - "statusKind": "cooled_down" - }, - { - "id": "euiss-home", - "provider": "EU Institute for Security Studies", - "reason": "health-deprioritised", - "until": "2026-04-25T19:34:50.373Z", - "statusKind": "cooled_down" - }, - { - "id": "euractiv-security-rss", - "provider": "BBC News - Europe", - "reason": "health-deprioritised", - "until": "2026-04-25T16:37:06.996Z", - "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-news-rss", - "provider": "Europol - Newsroom (RSS)", - "reason": "health-deprioritised", - "until": "2026-04-25T15:31:06.996Z", - "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-bfv-news", - "provider": "German BfV - Press", - "reason": "health-deprioritised", - "until": "2026-04-25T15:31:06.996Z", - "statusKind": "cooled_down" - }, - { - "id": "german-interior-ministry-press", - "provider": "German Federal Ministry for Economic Cooperation and Development - Feed", - "reason": "health-deprioritised", - "until": "2026-04-25T15:31:06.996Z", - "statusKind": "cooled_down" - }, - { - "id": "icct-home", - "provider": "ICCT - Home", - "reason": "health-deprioritised", - "until": "2026-04-25T19:34:50.373Z", - "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-25T15:31:06.996Z", - "statusKind": "cooled_down" - }, - { - "id": "spain-interior-ministry-news", - "provider": "Spanish Ministry of the Interior - News", - "reason": "health-deprioritised", - "until": "2026-04-27T10:57:22.432Z", - "statusKind": "cooled_down" - }, - { - "id": "statewatch-news", - "provider": "Statewatch - News", - "reason": "health-deprioritised", - "until": "2026-04-26T15:22:10.638Z", - "statusKind": "cooled_down" - } - ], + "hasWarnings": false, + "autoDeferredSourceCount": 0, + "autoDeferredSources": [], "operationalDeferredSourceCount": 0, "operationalDeferredSources": [], "sourceRunStats": { - "totalConfiguredSources": 704, - "sourcesCheckedThisRun": 18, - "sourcesUpdatedThisRun": 12, + "totalConfiguredSources": 4, + "sourcesCheckedThisRun": 4, + "sourcesUpdatedThisRun": 2, "sourcesFailedThisRun": 0, "sourcesUnchangedThisRun": 0 }, "extraMetrics": { "schedulerMode": "candidate", "coverage": { - "eligible": 701, - "scheduled": 18, - "initialScheduled": 4, - "continuationAttempted": 14, - "checked": 18, - "eligibleCheckedRate": 0.026, + "eligible": 4, + "scheduled": 4, + "initialScheduled": 1, + "continuationAttempted": 3, + "checked": 4, + "eligibleCheckedRate": 1, "scheduledCheckedRate": 1 }, "freshnessSlaByTier": { "high": { - "count": 6, - "avgMinutes": 6002, - "p95Minutes": 12854 - }, - "low": { - "count": 17, - "avgMinutes": 6339, - "p95Minutes": 11580 + "count": 1, + "avgMinutes": 0, + "p95Minutes": 0 }, "medium": { - "count": 26, - "avgMinutes": 4777, - "p95Minutes": 12084 + "count": 1, + "avgMinutes": 0, + "p95Minutes": 0 } }, "failureReasons": { - "success": 12 + "success": 2 }, "sourceRunStats": { - "totalConfiguredSources": 704, - "sourcesCheckedThisRun": 18, - "sourcesUpdatedThisRun": 12, + "totalConfiguredSources": 4, + "sourcesCheckedThisRun": 4, + "sourcesUpdatedThisRun": 2, "sourcesFailedThisRun": 0, "sourcesUnchangedThisRun": 0 }, @@ -12823,28229 +12728,129 @@ "guardrailViolations": [], "midRunGuardrail": { "throttleLevel": 0, - "totalAttempted": 18, + "totalAttempted": 4, "totalFailed": 0, - "totalSuccessful": 12, + "totalSuccessful": 2, "failedRate": 0, - "successRate": 0.667, - "avgSourceDurationMs": 581, + "successRate": 0.5, + "avgSourceDurationMs": 68, "criticalOnly": false, "skipPlaywright": false, "transitions": [] } }, "sourceHealth": { - "euaa-news": { - "provider": "EUAA (EU Agency for Asylum) - Press Releases", - "lane": "border", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "eulisa-news-events": { - "provider": "eu-LISA - News and Events (RSS)", - "lane": "border", + "fixture-rss-incidents": { + "provider": "Fixture Incidents Feed", + "lane": "incidents", "kind": "rss", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", + "lastCheckedAt": "2026-04-25T15:47:39.796Z", "lastBuiltCount": 0, "successfulRuns": 0, - "emptyRuns": 94, + "emptyRuns": 1, "failedRuns": 0, "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, + "consecutiveEmptyRuns": 1, "consecutiveBlockedFailures": 0, "consecutiveDeadUrlFailures": 0, "consecutiveTimeoutFailures": 0, "lastSuccessfulAt": null, "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", + "lastEmptyAt": "2026-04-25T15:47:39.796Z", "lastErrorCategory": null, "lastErrorMessage": null, "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 77, "quarantined": false, "quarantinedAt": null, "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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": false, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-26T08:17:25.806Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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": false, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-26T08:17:25.806Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "bdk-rss": { - "provider": "Bund Deutscher Kriminalbeamter - RSS", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 8, - "consecutiveFailures": 8, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-25T14:31:06.996Z", - "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-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" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-25T14:31:06.996Z" - } - ], - "cooldownUntil": "2026-04-27T14:31:06.996Z", - "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-27T14:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" + "nextFetchAt": "2026-04-25T16:44:39.796Z" }, - "ecfr-feeds-index": { - "provider": "ECFR - Feeds", + "fixture-rss-context": { + "provider": "Fixture Context Feed", "lane": "context", "kind": "rss", - "lastCheckedAt": "2026-04-24T15:22:10.638Z", + "lastCheckedAt": "2026-04-25T15:47:39.796Z", "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "cert-eu-security-advisories-rss": { - "provider": "CERT-EU - Security Advisories (RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 14, "failedRuns": 0, "consecutiveFailures": 0, - "consecutiveEmptyRuns": 14, + "consecutiveEmptyRuns": 1, "consecutiveBlockedFailures": 0, "consecutiveDeadUrlFailures": 0, "consecutiveTimeoutFailures": 0, "lastSuccessfulAt": null, "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", + "lastEmptyAt": "2026-04-25T15:47:39.796Z", "lastErrorCategory": null, "lastErrorMessage": null, "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 38, + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 77, "quarantined": false, "quarantinedAt": null, "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" + "nextFetchAt": "2026-04-25T18:24:39.796Z" }, - "euiss-home": { - "provider": "EU Institute for Security Studies", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, + "fixture-atom-oversight": { + "provider": "Fixture Oversight Feed", + "lane": "oversight", + "kind": "atom", + "lastCheckedAt": "2026-04-25T15:47:39.796Z", + "lastBuiltCount": 1, + "successfulRuns": 1, + "emptyRuns": 0, "failedRuns": 0, "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, + "consecutiveEmptyRuns": 0, "consecutiveBlockedFailures": 0, "consecutiveDeadUrlFailures": 0, "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, + "lastSuccessfulAt": "2026-04-25T15:47:39.796Z", "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", + "lastEmptyAt": null, "lastErrorCategory": null, "lastErrorMessage": null, "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "euractiv-security-rss": { - "provider": "BBC News - Europe", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 7, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "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-25T16:37:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 90, "quarantined": false, "quarantinedAt": null, "quarantineReason": null, - "nextFetchAt": "2026-04-25T16:37:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" + "nextFetchAt": "2026-04-25T16:25:39.796Z" }, - "eurojust-press-news-html": { - "provider": "Eurojust - Press Releases and News", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T15:22:10.638Z", - "lastBuiltCount": 0, - "successfulRuns": 0, + "fixture-json-prevention": { + "provider": "Fixture Prevention Feed", + "lane": "prevention", + "kind": "json", + "lastCheckedAt": "2026-04-25T15:47:39.796Z", + "lastBuiltCount": 1, + "successfulRuns": 1, "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-25T15:10:51.097Z" - }, - "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": false, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-25T18:02:43.923Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "europol-news-rss": { - "provider": "Europol - Newsroom (RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, "failedRuns": 0, "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, + "consecutiveEmptyRuns": 0, "consecutiveBlockedFailures": 0, "consecutiveDeadUrlFailures": 0, "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, + "lastSuccessfulAt": "2026-04-25T15:47:39.796Z", "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "europol-newsroom-html": { - "provider": "Europol - Newsroom", - "lane": "context", - "kind": "rss", - "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-25T15:10:51.097Z" - }, - "finland-supo-news": { - "provider": "Finnish Security Intelligence Service - News", - "lane": "context", - "kind": "rss", - "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-25T15:10:51.097Z" - }, - "german-bfv-news": { - "provider": "German BfV - Press", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 12, - "failedRuns": 5, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 12, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "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": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "german-interior-ministry-press": { - "provider": "German Federal Ministry for Economic Cooperation and Development - Feed", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 3, - "failedRuns": 7, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 3, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "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-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "icct-home": { - "provider": "ICCT - Home", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "paris-prefecture-police-rss-page": { - "provider": "Paris Prefecture of Police - RSS", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 3, - "failedRuns": 7, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 3, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "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-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "spain-interior-ministry-news": { - "provider": "Spanish Ministry of the Interior - News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T10:57:22.432Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 8, - "consecutiveFailures": 8, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-25T10:57:22.432Z", - "lastEmptyAt": null, - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "recentErrors": [ - { - "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" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-25T10:57:22.432Z" - } - ], - "cooldownUntil": "2026-04-27T10:57:22.432Z", - "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-27T10:57:22.432Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "statewatch-news": { - "provider": "Statewatch - News", - "lane": "context", - "kind": "rss", - "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-25T15:10:51.097Z" - }, - "breakingnews-ie": { - "provider": "BreakingNews.ie", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "independent-ie": { - "provider": "Independent.ie", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "de-bfv-islamist-extremism": { - "provider": "BfV - Islamist Extremism and Terrorism", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 14, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 14, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 38, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "de-bayern-stmi-press-rss": { - "provider": "Bavarian Interior Ministry - Press RSS", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 14, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 14, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 38, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "de-bmj-press-rss": { - "provider": "German Federal Ministry of Justice - RSS", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T21:33:33.442Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 3, - "consecutiveFailures": 3, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T21:33:33.442Z", - "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-24T19:10:51.723Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-24T20:13:14.472Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-24T21:33:33.442Z" - } - ], - "cooldownUntil": "2026-04-26T00:33:33.442Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 35, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T00:33:33.442Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "de-bdk-bka-rss": { - "provider": "Bund Deutscher Kriminalbeamter - BKA RSS", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T21:33:33.442Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 3, - "consecutiveFailures": 3, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T21:33:33.442Z", - "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-24T19:10:51.723Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-24T20:13:14.472Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-24T21:33:33.442Z" - } - ], - "cooldownUntil": "2026-04-26T00:33:33.442Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 35, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T00:33:33.442Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "me-ministry-defence": { - "provider": "Montenegro Ministry of Defence", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T21:33:33.442Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 3, - "consecutiveFailures": 3, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 3, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T21:33:33.442Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T19:10:51.723Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T20:13:14.472Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T21:33:33.442Z" - } - ], - "cooldownUntil": "2026-04-26T12:33:33.442Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 5, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T12:33:33.442Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "me-osce-montenegro-security": { - "provider": "OSCE Mission to Montenegro", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 14, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 14, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 38, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "me-moneyval-aml-cft": { - "provider": "Council of Europe MONEYVAL", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T21:33:33.442Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 3, - "consecutiveFailures": 3, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 3, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T21:33:33.442Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-24T19:10:51.723Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-24T20:13:14.472Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-24T21:33:33.442Z" - } - ], - "cooldownUntil": "2026-04-26T00:33:33.442Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 35, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T00:33:33.442Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "sk-minv-press": { - "provider": "Slovak Ministry of Interior - Press", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 14, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 14, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 38, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "sk-sis-news": { - "provider": "Slovak Information Service - News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T21:33:33.442Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 3, - "consecutiveFailures": 3, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T21:33:33.442Z", - "lastEmptyAt": null, - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-24T19:10:51.723Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-24T20:13:14.472Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-24T21:33:33.442Z" - } - ], - "cooldownUntil": "2026-04-26T00:33:33.442Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 35, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T00:33:33.442Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "sk-sis-annual-report": { - "provider": "Slovak Information Service - Annual Report", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T21:33:33.442Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 3, - "consecutiveFailures": 3, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T21:33:33.442Z", - "lastEmptyAt": null, - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-24T19:10:51.723Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-24T20:13:14.472Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-24T21:33:33.442Z" - } - ], - "cooldownUntil": "2026-04-26T00:33:33.442Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 35, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T00:33:33.442Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "sk-general-prosecutor-news": { - "provider": "Slovak General Prosecutor - News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 14, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 14, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 38, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "sk-justice-press": { - "provider": "Slovak Ministry of Justice - Press", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 14, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 14, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 38, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "sk-defence-press": { - "provider": "Slovak Ministry of Defence - Press", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T21:33:33.442Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 3, - "consecutiveFailures": 3, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T21:33:33.442Z", - "lastEmptyAt": null, - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-24T19:10:51.723Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-24T20:13:14.472Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-24T21:33:33.442Z" - } - ], - "cooldownUntil": "2026-04-26T00:33:33.442Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 35, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T00:33:33.442Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "sk-mfa-all-news": { - "provider": "Slovak Foreign Ministry - All News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T21:33:33.442Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 3, - "consecutiveFailures": 3, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 3, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T21:33:33.442Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-24T19:10:51.723Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-24T20:13:14.472Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-24T21:33:33.442Z" - } - ], - "cooldownUntil": "2026-04-26T00:33:33.442Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 35, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T00:33:33.442Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "sk-csirt": { - "provider": "Government CSIRT Slovakia", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 14, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 14, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 38, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "sk-iom-press-rss": { - "provider": "IOM Slovakia - Press RSS", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 14, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 14, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 38, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "sk-teraz-slovensko-rss": { - "provider": "Teraz.sk - Slovensko", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T10:04:35.232Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 10, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T10:04:35.232Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T22:04:35.232Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 50, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T22:04:35.232Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "germany-federal-prosecutor-current-press-en": { - "provider": "German Federal Public Prosecutor - Current Press Releases (EN)", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T20:13:14.472Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 2, - "consecutiveFailures": 2, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T20:13:14.472Z", - "lastEmptyAt": null, - "lastErrorCategory": "not-found-404", - "lastErrorMessage": "HTTP 404", - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-24T19:10:51.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-24T20:13:14.472Z" - } - ], - "cooldownUntil": "2026-04-26T08:13:14.472Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 20, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T08:13:14.472Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "netherlands-om-terrorisme": { - "provider": "Dutch Public Prosecution Service - Terrorisme", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T21:33:33.442Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 3, - "consecutiveFailures": 3, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 3, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T21:33:33.442Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T19:10:51.723Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T20:13:14.472Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T21:33:33.442Z" - } - ], - "cooldownUntil": "2026-04-26T00:33:33.442Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 35, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T00:33:33.442Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "netherlands-om-terrorismefinanciering-nieuws": { - "provider": "Dutch Public Prosecution Service - Terrorismefinanciering Nieuws", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T20:13:14.472Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 2, - "consecutiveFailures": 2, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T20:13:14.472Z", - "lastEmptyAt": null, - "lastErrorCategory": "not-found-404", - "lastErrorMessage": "HTTP 404", - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-24T19:10:51.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-24T20:13:14.472Z" - } - ], - "cooldownUntil": "2026-04-26T08:13:14.472Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 20, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T08:13:14.472Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "guardia-civil-rss-list": { - "provider": "Guardia Civil - RSS List", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 14, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 14, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 38, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "belgian-federal-police-news": { - "provider": "Belgian Federal Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 13, - "failedRuns": 5, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 2, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T11:47:27.254Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "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": "timeout", - "message": "This operation was aborted", - "at": "2026-04-23T11:47:27.254Z" - } - ], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "czech-police-news": { - "provider": "Police of the Czech Republic - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 36, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 36, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "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": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "dutch-police-rss-index": { - "provider": "Dutch National Police - News (EN)", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 95, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 95, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "finland-police-news": { - "provider": "Finnish Police - News", - "lane": "incidents", - "kind": "rss", - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "german-bka-press-releases-de": { - "provider": "BKA Germany - Press Releases", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-24T19:10:51.723Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 16, - "failedRuns": 6, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T19:10:51.723Z", - "lastEmptyAt": "2026-04-24T17:57:58.900Z", - "lastErrorCategory": "timeout", - "lastErrorMessage": "This operation was aborted", - "recentErrors": [ - { - "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" - }, - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-24T19:10:51.723Z" - } - ], - "cooldownUntil": "2026-04-26T19:10:51.723Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T19:10:51.723Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "guardia-civil-news": { - "provider": "El Pais English - Guardia Civil", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 12, - "failedRuns": 5, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 12, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "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": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "mossos-news": { - "provider": "Mossos d'Esquadra - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 95, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 95, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "paris-prefecture-police-press-releases": { - "provider": "Paris Prefecture of Police - Press Releases", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 3, - "failedRuns": 7, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 3, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "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-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "policia-nacional-news": { - "provider": "Policia Nacional - Press", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 36, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 36, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-19T18:05:04.781Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "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": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "de-bka-press": { - "provider": "BKA Germany - Press Releases", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-25T10:04:35.232Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 8, - "failedRuns": 2, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-25T10:04:35.232Z", - "lastEmptyAt": "2026-04-25T08:35:27.399Z", - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-24T21:33:33.442Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-25T10:04:35.232Z" - } - ], - "cooldownUntil": "2026-04-26T18:28:35.232Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 26, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T18:28:35.232Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "de-bka-current-alerts": { - "provider": "BKA Germany - Current Notices", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 14, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 14, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 38, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "de-bundespolizei-presseportal": { - "provider": "Bundespolizei via Presseportal", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 14, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 14, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 38, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "de-zoll-press": { - "provider": "German Customs (Zoll) - Press", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 14, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 14, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 38, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "de-zoll-press-rss": { - "provider": "German Customs (Zoll) - Press RSS", - "lane": "incidents", - "kind": "rss", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 14, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 14, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 38, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "de-berlin-police-rss": { - "provider": "Berlin Police - Press RSS", - "lane": "incidents", - "kind": "rss", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 14, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 14, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 38, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "de-brandenburg-police-overregional-rss": { - "provider": "Brandenburg Police - Overregional RSS", - "lane": "incidents", - "kind": "rss", - "lastCheckedAt": "2026-04-25T08:35:27.399Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 7, - "failedRuns": 2, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-25T08:35:27.399Z", - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "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-24T23:16:11.061Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-25T08:35:27.399Z" - } - ], - "cooldownUntil": "2026-04-26T15:11:27.399Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 29, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T15:11:27.399Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "de-sachsen-police-rss": { - "provider": "Saxony Police - RSS", - "lane": "incidents", - "kind": "rss", - "lastCheckedAt": "2026-04-24T20:13:14.472Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 2, - "consecutiveFailures": 2, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T20:13:14.472Z", - "lastEmptyAt": null, - "lastErrorCategory": "not-found-404", - "lastErrorMessage": "HTTP 404", - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-24T19:10:51.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-24T20:13:14.472Z" - } - ], - "cooldownUntil": "2026-04-26T08:13:14.472Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 20, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T08:13:14.472Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "de-sachsen-generalstaatsanwaltschaft": { - "provider": "General Prosecutor Dresden - Press 2026", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 14, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 14, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 38, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "de-sachsen-zesa-archive": { - "provider": "General Prosecutor Dresden - Press 2025 Archive", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 14, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 14, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 38, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "de-bayern-police-press": { - "provider": "Bavarian Police - Press Releases", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-24T21:33:33.442Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 3, - "consecutiveFailures": 3, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T21:33:33.442Z", - "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-24T19:10:51.723Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-24T20:13:14.472Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-24T21:33:33.442Z" - } - ], - "cooldownUntil": "2026-04-26T00:33:33.442Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 35, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T00:33:33.442Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "me-police-administration": { - "provider": "Montenegro Police Directorate", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-24T21:33:33.442Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 3, - "consecutiveFailures": 3, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T21:33:33.442Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T19:10:51.723Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T20:13:14.472Z" - }, - { - "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-24T21:33:33.442Z" - } - ], - "cooldownUntil": "2026-04-26T12:33:33.442Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 5, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T12:33:33.442Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "me-ministry-interior": { - "provider": "Montenegro Ministry of the Interior", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-24T21:33:33.442Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 3, - "consecutiveFailures": 3, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 3, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T21:33:33.442Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T19:10:51.723Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T20:13:14.472Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T21:33:33.442Z" - } - ], - "cooldownUntil": "2026-04-26T12:33:33.442Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 5, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T12:33:33.442Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "me-govme-all-news": { - "provider": "Government of Montenegro - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-24T21:33:33.442Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 3, - "consecutiveFailures": 3, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 3, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T21:33:33.442Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T19:10:51.723Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T20:13:14.472Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T21:33:33.442Z" - } - ], - "cooldownUntil": "2026-04-26T12:33:33.442Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 5, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T12:33:33.442Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "me-national-security-agency": { - "provider": "Montenegro National Security Agency", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-24T21:33:33.442Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 3, - "consecutiveFailures": 3, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 3, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T21:33:33.442Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T19:10:51.723Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T20:13:14.472Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T21:33:33.442Z" - } - ], - "cooldownUntil": "2026-04-26T12:33:33.442Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 5, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T12:33:33.442Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "me-national-security-authority": { - "provider": "Montenegro National Security Authority", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-24T21:33:33.442Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 3, - "consecutiveFailures": 3, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 3, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T21:33:33.442Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T19:10:51.723Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T20:13:14.472Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T21:33:33.442Z" - } - ], - "cooldownUntil": "2026-04-26T12:33:33.442Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 5, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T12:33:33.442Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "me-customs-administration": { - "provider": "Montenegro Customs Administration", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-24T21:33:33.442Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 3, - "consecutiveFailures": 3, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 3, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T21:33:33.442Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T19:10:51.723Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T20:13:14.472Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T21:33:33.442Z" - } - ], - "cooldownUntil": "2026-04-26T12:33:33.442Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 5, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T12:33:33.442Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "me-vijesti-black-chronicle": { - "provider": "Vijesti - Black Chronicle", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 14, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 14, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 38, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "me-rtcg-hronika": { - "provider": "RTCG - Hronika", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 14, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 14, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 38, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "curia-press-rss-en": { - "provider": "Court of Justice of the European Union - RSS (EN/FR)", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 71, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 6, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T03:28:47.210Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T03:28:47.210Z" - } - ], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "eppo-news-node-7": { - "provider": "European Public Prosecutor's Office - News (RSS)", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 14, - "emptyRuns": 89, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 89, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "eu-cellar-rss-atom": { - "provider": "Publications Office of the European Union (CELLAR) a RSS/Atom Feeds", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 13, - "emptyRuns": 67, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 6, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", - "lastFailureAt": "2026-04-23T03:28:47.210Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T03:28:47.210Z" - } - ], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "eu-commission-counter-terrorism-measures-2026": { - "provider": "European Commission - Counter Terrorism Measures 2026", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "eu-commission-home-affairs-topic": { - "provider": "European Commission - Home Affairs News", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "eu-commission-presscorner-home": { - "provider": "Council of the EU - Press Releases (RSS)", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 3, - "failedRuns": 7, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 3, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "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-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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": false, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-25T18:02:43.923Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "eu-council-jha-register-rss": { - "provider": "Council of the EU - Latest Documents RSS", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "eu-council-press-releases": { - "provider": "Council of the European Union a Press Releases (RSS)", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "eu-council-press-releases-html": { - "provider": "Council of the EU - Press Releases", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 14, - "emptyRuns": 89, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 89, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "eu-ejustice-news-rss": { - "provider": "European e-Justice - News RSS", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 71, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 48, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-18T13:27:18.679Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-18T13:27:18.679Z" - } - ], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "eu-eppo-news": { - "provider": "European Public Prosecutor's Office - News", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "eu-fra-rss": { - "provider": "OHCHR - Terrorism and Violent Extremism", - "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": false, - "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-25T15:10:51.097Z" - }, - "eu-home-affairs-news": { - "provider": "European Commission - Home Affairs News", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "eu-olaf-news": { - "provider": "OLAF (EU Anti-Fraud Office) a News", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "eu-security-union-strategy": { - "provider": "European Commission - Home Affairs News", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "eucrim-counter-terrorism-agenda": { - "provider": "eucrim - Commission Counter Terrorism Agenda", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "eucrim-judicial-counter-terrorism-register": { - "provider": "eucrim - Judicial Counter Terrorism Register", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "eurojust-publications": { - "provider": "Eurojust a Publications (RSS)", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-25T15:10:51.097Z", - "lastBuiltCount": 1, - "successfulRuns": 125, - "emptyRuns": 0, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": "2026-04-25T15:10:51.097Z", - "lastFailureAt": null, - "lastEmptyAt": null, - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 100, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T16:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "europarl-committee-libe": { - "provider": "European Parliament - LIBE Press Releases", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 14, - "emptyRuns": 89, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 89, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "europarl-committee-sede": { - "provider": "European Parliament - SEDE Press Releases", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "europarl-pressreleases-committees": { - "provider": "European Parliament a Press Releases (Committees) (RSS)", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "fra-rss": { - "provider": "Human Rights Watch - Terrorism and Counterterrorism", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-25T10:57:22.432Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 8, - "consecutiveFailures": 8, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-25T10:57:22.432Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "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-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" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-25T10:57:22.432Z" - } - ], - "cooldownUntil": "2026-04-27T10:57:22.432Z", - "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-27T10:57:22.432Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "ncsc-nl-rss": { - "provider": "NCSC Netherlands - RSS", - "lane": "prevention", - "kind": "rss", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 3, - "failedRuns": 7, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 3, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "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-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "de-cemas-digital-seismograph": { - "provider": "CeMAS - Digital Seismograph", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-24T21:33:33.442Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 3, - "consecutiveFailures": 3, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 3, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T21:33:33.442Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T19:10:51.723Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T20:13:14.472Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T21:33:33.442Z" - } - ], - "cooldownUntil": "2026-04-26T00:33:33.442Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 35, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T00:33:33.442Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "de-cemas-right-terror-database": { - "provider": "CeMAS - Right-Wing Terrorism Database", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-25T10:04:35.232Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 10, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T10:04:35.232Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T22:04:35.232Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 50, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T22:04:35.232Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "de-knix-islamism-prevention": { - "provider": "KN:IX - Islamism Prevention Network", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-25T10:04:35.232Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 10, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T10:04:35.232Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T22:04:35.232Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 50, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T22:04:35.232Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "dw-europe-rss": { - "provider": "Deutsche Welle a Europe (RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 8, - "consecutiveFailures": 8, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-25T14:31:06.996Z", - "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-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" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-25T14:31:06.996Z" - } - ], - "cooldownUntil": "2026-04-27T14:31:06.996Z", - "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-27T14:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "ecfr-publications": { - "provider": "European Council on Foreign Relations (ECFR) a Publications", - "lane": "context", - "kind": "rss", - "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-25T15:10:51.097Z" - }, - "euronews-europe": { - "provider": "Euronews a Europe", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T13:23:56.797Z", - "lastBuiltCount": 0, - "successfulRuns": 28, - "emptyRuns": 27, - "failedRuns": 5, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 6, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": "2026-04-22T22:53:26.529Z", - "lastFailureAt": "2026-04-23T03:28:47.210Z", - "lastEmptyAt": "2026-04-25T13:23:56.797Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "http-status-error", - "message": "HTTP 406", - "at": "2026-04-23T03:28:47.210Z" - } - ], - "cooldownUntil": "2026-04-25T16:05:56.797Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 6, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T16:05:56.797Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "financial-times-world": { - "provider": "AP News - Terrorism", - "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-25T15:10:51.097Z" - }, - "france24-europe-rss": { - "provider": "France 24 a Europe (RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T05:58:37.999Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 11, - "failedRuns": 5, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-25T05:58:37.999Z", - "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" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-25T05:58:37.999Z" - } - ], - "cooldownUntil": "2026-04-27T05:58:37.999Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-27T05:58:37.999Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "icct-perspectives-on-terrorism": { - "provider": "Perspectives on Terrorism (ICCT) a Journal", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "icct-publications": { - "provider": "International Centre for Counter-Terrorism (ICCT) - Publications", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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": false, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-25T18:02:43.923Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "politico-europe": { - "provider": "Politico Europe", - "lane": "context", - "kind": "rss", - "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-25T15:10:51.097Z" - }, - "rte-ireland-news-rss": { - "provider": "RTE News - Ireland (RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T05:58:37.999Z", - "lastBuiltCount": 0, - "successfulRuns": 2, - "emptyRuns": 14, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": "2026-04-23T11:47:27.254Z", - "lastFailureAt": "2026-04-20T08:39:19.161Z", - "lastEmptyAt": "2026-04-25T05:58:37.999Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T17:58:37.999Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T17:58:37.999Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "switzerland-fedpol-news": { - "provider": "Swiss fedpol - News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T22:12:47.520Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 5, - "failedRuns": 6, - "consecutiveFailures": 2, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T22:12:47.520Z", - "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-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "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" - }, - { - "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-24T22:12:47.520Z" - } - ], - "cooldownUntil": "2026-04-26T22:12:47.520Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T22:12:47.520Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "telegraph-world-news": { - "provider": "The Telegraph a World News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T05:58:37.999Z", - "lastBuiltCount": 0, - "successfulRuns": 30, - "emptyRuns": 33, - "failedRuns": 3, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": "2026-04-23T16:07:40.227Z", - "lastFailureAt": "2026-04-19T14:11:10.963Z", - "lastEmptyAt": "2026-04-25T05:58:37.999Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T17:58:37.999Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 5, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T17:58:37.999Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "vox-pol-publications": { - "provider": "VOX-Pol Network a Publications", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "netherlands-police-news": { - "provider": "Dutch National Police - News (EN)", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 95, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 95, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "paris-police-prefecture-news": { - "provider": "France24 - France (RSS)", - "lane": "incidents", - "kind": "rss", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 3, - "failedRuns": 7, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 3, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "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-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "portugal-pj-news": { - "provider": "Policia Judiciaria Portugal - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 57, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 35, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T15:59:44.503Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "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": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "portugal-psp-news": { - "provider": "The Portugal News - Crime", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 3, - "failedRuns": 7, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 3, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "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-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "echr-key-judgments-rss": { - "provider": "European Court of Human Rights - Key Judgments RSS", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 70, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T17:39:27.641Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "http-status-error", - "message": "HTTP 400", - "at": "2026-04-22T17:39:27.641Z" - } - ], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "echr-press-releases-rss": { - "provider": "UK Judiciary - Judgments Feed", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "french-justice-ministry-news": { - "provider": "French Ministry of Justice - News", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "bfv-de-english": { - "provider": "BfV service page (Federal Office for the Protection of the Constitution)", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 81, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 70, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-17T11:07:28.674Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-17T11:07:28.674Z" - } - ], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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": false, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-26T15:22:10.638Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "isd-global": { - "provider": "Institute for Strategic Dialogue (ISD) - Publications", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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": false, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-25T18:02:43.923Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "ran-network": { - "provider": "RUSI - Terrorism and Conflict", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 3, - "successfulRuns": 2, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": "2026-04-25T14:31:06.996Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T17:07:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 20, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T17:07:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "sapo-se-english": { - "provider": "Swedish Security Service English news", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "aljazeera-news-rss": { - "provider": "Al Jazeera English a Top Stories (RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T10:04:35.232Z", - "lastBuiltCount": 0, - "successfulRuns": 1, - "emptyRuns": 29, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": "2026-04-23T10:13:21.253Z", - "lastFailureAt": "2026-04-20T17:16:47.386Z", - "lastEmptyAt": "2026-04-25T10:04:35.232Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T22:04:35.232Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T22:04:35.232Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "ap-top-news": { - "provider": "BBC News - Top Stories", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 7, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "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-25T17:22:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T17:22:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "bbc-news-world": { - "provider": "BBC News a World", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "bbc-news-world-legacy": { - "provider": "BBC News a World (Legacy RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "bellingcat": { - "provider": "Bellingcat a Investigations", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "chathamhouse-events": { - "provider": "Chatham House a Events (RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "chathamhouse-intl-security-feed": { - "provider": "Chatham House a International Security Programme (RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 5, - "emptyRuns": 30, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 12, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": "2026-04-23T14:03:06.243Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 40, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "chathamhouse-news-releases": { - "provider": "Chatham House a News Releases (RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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": false, - "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-25T15:10:51.097Z" - }, - "crisis-group": { - "provider": "International Crisis Group a Research & Analysis", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 8, - "consecutiveFailures": 8, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-25T14:31:06.996Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "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" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-25T14:31:06.996Z" - } - ], - "cooldownUntil": "2026-04-27T14:31:06.996Z", - "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-27T14:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "crisis-group-europe": { - "provider": "International Crisis Group a Europe (RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 8, - "consecutiveFailures": 8, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-25T14:31:06.996Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "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" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-25T14:31:06.996Z" - } - ], - "cooldownUntil": "2026-04-27T14:31:06.996Z", - "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-27T14:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "global-initiative-news": { - "provider": "Global Initiative Against Transnational Organized Crime a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "interpol-news-events": { - "provider": "INTERPOL a News and Events", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "lawfare-blog": { - "provider": "Just Security - National Security Analysis", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 8, - "consecutiveFailures": 8, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-25T14:31:06.996Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "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" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-25T14:31:06.996Z" - } - ], - "cooldownUntil": "2026-04-27T14:31:06.996Z", - "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-27T14:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "long-war-journal": { - "provider": "Long War Journal a News Feed", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T15:10:51.097Z", - "lastBuiltCount": 1, - "successfulRuns": 16, - "emptyRuns": 18, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": "2026-04-25T15:10:51.097Z", - "lastFailureAt": "2026-04-18T00:05:41.686Z", - "lastEmptyAt": "2026-04-24T11:47:26.601Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 100, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T18:53:51.097Z" - }, - "jamestown-terrorism-monitor": { - "provider": "Jamestown Foundation - Terrorism Monitor", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T10:04:35.232Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 10, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T10:04:35.232Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T22:04:35.232Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 50, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T22:04:35.232Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "osce-press-releases": { - "provider": "OSCE a Press Releases", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "rferl-security-news-rss": { - "provider": "Radio Free Europe/Radio Liberty a Security (RSS)", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 2, - "emptyRuns": 14, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 3, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": "2026-04-25T05:58:37.999Z", - "lastFailureAt": "2026-04-20T08:39:19.161Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T17:03:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T17:03:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "soufan-center-intelbrief": { - "provider": "The Soufan Center a IntelBrief", - "lane": "context", - "kind": "rss", - "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-25T15:10:51.097Z" - }, - "tech-against-terrorism-podcast": { - "provider": "Tech Against Terrorism - Podcast", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T19:10:51.723Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 1, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T19:10:51.723Z", - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "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-24T19:10:51.723Z" - } - ], - "cooldownUntil": "2026-04-26T17:58:51.723Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 2, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T17:58:51.723Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "unodc-news": { - "provider": "UNODC (UN Office on Drugs and Crime) a Press Releases", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 36, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 36, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "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": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "war-on-the-rocks": { - "provider": "War on the Rocks a National Security & CT Analysis", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "usgs-earthquakes-all-hour": { - "provider": "USGS - Earthquakes (All Hour)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 14, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 14, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 38, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "krebs-on-security": { - "provider": "Krebs on Security", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T21:33:33.442Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 3, - "consecutiveFailures": 3, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T21:33:33.442Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T19:10:51.723Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T20:13:14.472Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T21:33:33.442Z" - } - ], - "cooldownUntil": "2026-04-26T00:33:33.442Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 35, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T00:33:33.442Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "sans-isc-diary": { - "provider": "SANS Internet Storm Center", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T10:04:35.232Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 10, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T10:04:35.232Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T22:04:35.232Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 50, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T22:04:35.232Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "aviation-herald-rss": { - "provider": "The Aviation Herald", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T20:13:14.472Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 2, - "consecutiveFailures": 2, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T20:13:14.472Z", - "lastEmptyAt": null, - "lastErrorCategory": "not-found-404", - "lastErrorMessage": "HTTP 404", - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-24T19:10:51.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-24T20:13:14.472Z" - } - ], - "cooldownUntil": "2026-04-26T08:13:14.472Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 20, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T08:13:14.472Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "broadcastify-feeds-rss": { - "provider": "Broadcastify - Feeds", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T20:13:14.472Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 2, - "consecutiveFailures": 2, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T20:13:14.472Z", - "lastEmptyAt": null, - "lastErrorCategory": "not-found-404", - "lastErrorMessage": "HTTP 404", - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-24T19:10:51.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-24T20:13:14.472Z" - } - ], - "cooldownUntil": "2026-04-26T08:13:14.472Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 20, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T08:13:14.472Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "maritime-executive-rss": { - "provider": "The Maritime Executive", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T20:13:14.472Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 2, - "consecutiveFailures": 2, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T20:13:14.472Z", - "lastEmptyAt": null, - "lastErrorCategory": "not-found-404", - "lastErrorMessage": "HTTP 404", - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-24T19:10:51.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-24T20:13:14.472Z" - } - ], - "cooldownUntil": "2026-04-26T08:13:14.472Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 20, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T08:13:14.472Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "above-top-secret-rss": { - "provider": "AboveTopSecret Forum", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T21:33:33.442Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 3, - "consecutiveFailures": 3, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T21:33:33.442Z", - "lastEmptyAt": null, - "lastErrorCategory": "timeout", - "lastErrorMessage": "This operation was aborted", - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-24T19:10:51.723Z" - }, - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-24T20:13:14.472Z" - }, - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-24T21:33:33.442Z" - } - ], - "cooldownUntil": "2026-04-26T00:33:33.442Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 35, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T00:33:33.442Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "godlike-productions-rss": { - "provider": "Godlike Productions", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T20:13:14.472Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 2, - "consecutiveFailures": 2, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T20:13:14.472Z", - "lastEmptyAt": null, - "lastErrorCategory": "not-found-404", - "lastErrorMessage": "HTTP 404", - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-24T19:10:51.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-24T20:13:14.472Z" - } - ], - "cooldownUntil": "2026-04-26T08:13:14.472Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 20, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T08:13:14.472Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "hacker-news-rss": { - "provider": "Hacker News", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T10:04:35.232Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 10, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T10:04:35.232Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T22:04:35.232Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 50, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T22:04:35.232Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "lobsters-rss": { - "provider": "Lobsters", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T21:33:33.442Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 3, - "consecutiveFailures": 3, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T21:33:33.442Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T19:10:51.723Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T20:13:14.472Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T21:33:33.442Z" - } - ], - "cooldownUntil": "2026-04-26T00:33:33.442Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 35, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T00:33:33.442Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "zerohedge-feed": { - "provider": "ZeroHedge", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T15:10:51.097Z", - "lastBuiltCount": 0, - "successfulRuns": 3, - "emptyRuns": 12, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 9, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": "2026-04-25T00:10:29.100Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T15:10:51.097Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 73, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T17:12:51.097Z" - }, - "moon-of-alabama-atom": { - "provider": "Moon of Alabama", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T20:13:14.472Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 2, - "consecutiveFailures": 2, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T20:13:14.472Z", - "lastEmptyAt": null, - "lastErrorCategory": "not-found-404", - "lastErrorMessage": "HTTP 404", - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-24T19:10:51.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-24T20:13:14.472Z" - } - ], - "cooldownUntil": "2026-04-26T08:13:14.472Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 20, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T08:13:14.472Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "volcano-discovery-rss": { - "provider": "Volcano Discovery", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T21:33:33.442Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 3, - "consecutiveFailures": 3, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T21:33:33.442Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-24T19:10:51.723Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-24T20:13:14.472Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-24T21:33:33.442Z" - } - ], - "cooldownUntil": "2026-04-26T00:33:33.442Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 35, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T00:33:33.442Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "sans-isc-full": { - "provider": "SANS Internet Storm Center (Full Feed)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T21:33:33.442Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 3, - "consecutiveFailures": 3, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T21:33:33.442Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T19:10:51.723Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T20:13:14.472Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T21:33:33.442Z" - } - ], - "cooldownUntil": "2026-04-26T00:33:33.442Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 35, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T00:33:33.442Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "ec-police-news": { - "provider": "Policía Nacional del Ecuador - Noticias", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T21:33:33.442Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 3, - "consecutiveFailures": 3, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T21:33:33.442Z", - "lastEmptyAt": null, - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-24T19:10:51.723Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-24T20:13:14.472Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-24T21:33:33.442Z" - } - ], - "cooldownUntil": "2026-04-26T00:33:33.442Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 35, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T00:33:33.442Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "ec-police-organised-crime": { - "provider": "Policía Nacional del Ecuador - Lucha contra el crimen organizado", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T21:33:33.442Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 3, - "consecutiveFailures": 3, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T21:33:33.442Z", - "lastEmptyAt": null, - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-24T19:10:51.723Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-24T20:13:14.472Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-24T21:33:33.442Z" - } - ], - "cooldownUntil": "2026-04-26T00:33:33.442Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 35, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T00:33:33.442Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "ec-fiscalia-news": { - "provider": "Fiscalía General del Estado - Noticias", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 12, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 6, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-25T05:58:37.999Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-25T05:58:37.999Z" - } - ], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 29, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "ec-ministry-interior-open-data": { - "provider": "Ecuador Open Data - Ministerio del Interior", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 14, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 14, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 38, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "ec-uafe-aml-cft": { - "provider": "UAFE Ecuador", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T21:33:33.442Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 3, - "consecutiveFailures": 3, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 2, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T21:33:33.442Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-24T19:10:51.723Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T20:13:14.472Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T21:33:33.442Z" - } - ], - "cooldownUntil": "2026-04-26T00:33:33.442Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 35, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T00:33:33.442Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "ec-aduana-senae": { - "provider": "Aduana del Ecuador (SENAE)", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T21:33:33.442Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 3, - "consecutiveFailures": 3, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 3, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T21:33:33.442Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T19:10:51.723Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T20:13:14.472Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T21:33:33.442Z" - } - ], - "cooldownUntil": "2026-04-26T00:33:33.442Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 35, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T00:33:33.442Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "ec-ecu911-news": { - "provider": "ECU 911", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T21:33:33.442Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 3, - "consecutiveFailures": 3, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 3, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T21:33:33.442Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T19:10:51.723Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T20:13:14.472Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T21:33:33.442Z" - } - ], - "cooldownUntil": "2026-04-26T00:33:33.442Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 35, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T00:33:33.442Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "ec-cancilleria-security": { - "provider": "Cancillería del Ecuador", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T21:33:33.442Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 3, - "consecutiveFailures": 3, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T21:33:33.442Z", - "lastEmptyAt": null, - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-24T19:10:51.723Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-24T20:13:14.472Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-24T21:33:33.442Z" - } - ], - "cooldownUntil": "2026-04-26T00:33:33.442Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 35, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T00:33:33.442Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "ec-primicias-seguridad": { - "provider": "Primicias - Seguridad", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T21:33:33.442Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 3, - "consecutiveFailures": 3, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 3, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T21:33:33.442Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T19:10:51.723Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T20:13:14.472Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T21:33:33.442Z" - } - ], - "cooldownUntil": "2026-04-26T00:33:33.442Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 35, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T00:33:33.442Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "ec-planv-crimen-organizado": { - "provider": "Plan V - Crimen Organizado", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T21:33:33.442Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 3, - "consecutiveFailures": 3, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 3, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T21:33:33.442Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T19:10:51.723Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T20:13:14.472Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T21:33:33.442Z" - } - ], - "cooldownUntil": "2026-04-26T00:33:33.442Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 35, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T00:33:33.442Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "ec-eluniverso-rss": { - "provider": "El Universo - RSS", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T21:33:33.442Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 3, - "consecutiveFailures": 3, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T21:33:33.442Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T19:10:51.723Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T20:13:14.472Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T21:33:33.442Z" - } - ], - "cooldownUntil": "2026-04-26T00:33:33.442Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 35, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T00:33:33.442Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "ec-ap-latin-america": { - "provider": "Associated Press - Latin America", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T21:33:33.442Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 3, - "consecutiveFailures": 3, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 3, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T21:33:33.442Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T19:10:51.723Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T20:13:14.472Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T21:33:33.442Z" - } - ], - "cooldownUntil": "2026-04-26T00:33:33.442Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 35, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T00:33:33.442Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "ec-aljazeera-ecuador-gangs": { - "provider": "Al Jazeera - Ecuador gangs analysis", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T10:04:35.232Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 10, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T10:04:35.232Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T22:04:35.232Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 50, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T22:04:35.232Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "ec-guardian-ecuador": { - "provider": "The Guardian - Ecuador", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T21:33:33.442Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 3, - "consecutiveFailures": 3, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 3, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T21:33:33.442Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T19:10:51.723Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T20:13:14.472Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T21:33:33.442Z" - } - ], - "cooldownUntil": "2026-04-26T00:33:33.442Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 35, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T00:33:33.442Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "ec-cfr-ecuador-narco-state": { - "provider": "Council on Foreign Relations - Ecuador", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T21:33:33.442Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 3, - "consecutiveFailures": 3, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 3, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T21:33:33.442Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T19:10:51.723Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T20:13:14.472Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T21:33:33.442Z" - } - ], - "cooldownUntil": "2026-04-26T00:33:33.442Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 35, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T00:33:33.442Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "ec-wola-ecuador-bukele-model": { - "provider": "WOLA - Ecuador security analysis", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T21:33:33.442Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 3, - "consecutiveFailures": 3, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 3, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T21:33:33.442Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-24T19:10:51.723Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-24T20:13:14.472Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-24T21:33:33.442Z" - } - ], - "cooldownUntil": "2026-04-26T00:33:33.442Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 35, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T00:33:33.442Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "ec-fcdo-ecuador-safety-security": { - "provider": "UK FCDO - Ecuador travel advice", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T21:33:33.442Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 3, - "consecutiveFailures": 3, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 3, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T21:33:33.442Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T19:10:51.723Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T20:13:14.472Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T21:33:33.442Z" - } - ], - "cooldownUntil": "2026-04-26T00:33:33.442Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 35, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T00:33:33.442Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "ec-nctc-los-lobos": { - "provider": "US NCTC - Los Lobos", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T21:33:33.442Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 3, - "consecutiveFailures": 3, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T21:33:33.442Z", - "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-24T19:10:51.723Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-24T20:13:14.472Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-24T21:33:33.442Z" - } - ], - "cooldownUntil": "2026-04-26T00:33:33.442Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 35, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T00:33:33.442Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "ec-us-treasury-los-lobos": { - "provider": "US Treasury - Los Lobos sanctions", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 14, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 14, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 38, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "ec-us-treasury-los-choneros": { - "provider": "US Treasury - Los Choneros sanctions", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 14, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 14, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 38, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "ec-csis-ecuador-crises": { - "provider": "CSIS - Ecuador compounding crises", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T21:33:33.442Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 3, - "consecutiveFailures": 3, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 3, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T21:33:33.442Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T19:10:51.723Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T20:13:14.472Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T21:33:33.442Z" - } - ], - "cooldownUntil": "2026-04-26T00:33:33.442Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 35, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T00:33:33.442Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "jamestown-foundation-feed": { - "provider": "Jamestown Foundation - Main Feed", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T10:04:35.232Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 10, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T10:04:35.232Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T22:04:35.232Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 50, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T22:04:35.232Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "kyle-orton-blog-feed": { - "provider": "Kyle Orton's Blog", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T10:04:35.232Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 10, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T10:04:35.232Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T22:04:35.232Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 50, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T22:04:35.232Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "caert-feed": { - "provider": "African Centre for the Study and Research on Terrorism (ACSRT/CAERT)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 14, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 14, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 38, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "security-magazine-rss": { - "provider": "Security Magazine", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T10:04:35.232Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 10, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T10:04:35.232Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T22:04:35.232Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 50, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T22:04:35.232Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "leiden-security-global-affairs-feed": { - "provider": "Leiden Security and Global Affairs Blog", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T13:23:56.797Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 10, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 9, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T20:13:14.472Z", - "lastEmptyAt": "2026-04-25T13:23:56.797Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-24T20:13:14.472Z" - } - ], - "cooldownUntil": "2026-04-25T15:41:56.797Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 35, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:41:56.797Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "borealis-threat-risk-feed": { - "provider": "Borealis Threat and Risk Consulting", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T10:04:35.232Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 10, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T10:04:35.232Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T22:04:35.232Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 50, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T22:04:35.232Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "insight-crime-feed": { - "provider": "InSight Crime", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T10:04:35.232Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 10, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T10:04:35.232Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T22:04:35.232Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 50, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T22:04:35.232Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "southfront-feed": { - "provider": "SouthFront", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T21:33:33.442Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 3, - "consecutiveFailures": 3, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T21:33:33.442Z", - "lastEmptyAt": null, - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-24T19:10:51.723Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-24T20:13:14.472Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-24T21:33:33.442Z" - } - ], - "cooldownUntil": "2026-04-26T00:33:33.442Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 35, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T00:33:33.442Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "inteltechniques-blog-feed": { - "provider": "IntelTechniques Blog", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T21:33:33.442Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 3, - "consecutiveFailures": 3, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T21:33:33.442Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T19:10:51.723Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T20:13:14.472Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T21:33:33.442Z" - } - ], - "cooldownUntil": "2026-04-26T00:33:33.442Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 35, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T00:33:33.442Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "reddit-worldnews-rss": { - "provider": "Reddit - r/worldnews", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T10:04:35.232Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 10, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T10:04:35.232Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T22:04:35.232Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 50, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T22:04:35.232Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "urban-terrorism-europe-feed": { - "provider": "Urban Terrorism in Europe (University of Birmingham)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T13:23:56.797Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 10, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 9, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T20:13:14.472Z", - "lastEmptyAt": "2026-04-25T13:23:56.797Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-24T20:13:14.472Z" - } - ], - "cooldownUntil": "2026-04-25T16:01:56.797Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 35, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T16:01:56.797Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "investigative-project-terrorism-rss": { - "provider": "Investigative Project on Terrorism", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T10:04:35.232Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 10, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T10:04:35.232Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T22:04:35.232Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 50, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T22:04:35.232Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "allafrica-international-terrorism-rdf": { - "provider": "AllAfrica - International Terrorism", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T10:04:35.232Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 10, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T10:04:35.232Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T22:04:35.232Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 50, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T22:04:35.232Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "strategic-intelligence-terrorism-war-feed": { - "provider": "Strategic Intelligence Service - Terrorism and War Updates", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T10:04:35.232Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 10, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T10:04:35.232Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T22:04:35.232Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 50, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T22:04:35.232Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "intelnews-feed": { - "provider": "IntelNews", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T10:04:35.232Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 10, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T10:04:35.232Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T22:04:35.232Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 50, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T22:04:35.232Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "aymennaltamimi-substack-feed": { - "provider": "Aymenn's Monstrous Publications", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T10:04:35.232Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 10, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T10:04:35.232Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T22:04:35.232Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 50, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T22:04:35.232Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "ict-israel-feed": { - "provider": "International Institute for Counter-Terrorism (ICT)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T10:04:35.232Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 10, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T10:04:35.232Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T22:04:35.232Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 50, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T22:04:35.232Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "interpol-news-page-en": { - "provider": "INTERPOL - News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 14, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 14, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 38, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "unoct-news": { - "provider": "UN Office of Counter-Terrorism (UNOCT) - News", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-25T15:10:51.097Z", - "lastBuiltCount": 0, - "successfulRuns": 9, - "emptyRuns": 91, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 11, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": "2026-04-24T22:12:47.520Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T15:10:51.097Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 57, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T16:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "gnet-artificial-intelligence-rss": { - "provider": "Global Network on Extremism & Technology (GNET) a Artificial Intelligence (RSS)", - "lane": "prevention", - "kind": "rss", - "lastCheckedAt": "2026-04-25T10:04:35.232Z", - "lastBuiltCount": 0, - "successfulRuns": 76, - "emptyRuns": 14, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 14, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": "2026-04-21T11:46:02.615Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T10:04:35.232Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T22:04:35.232Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 58, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T22:04:35.232Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "tech-against-terrorism": { - "provider": "Tech Against Terrorism - Analysis", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "tech-against-terrorism-home": { - "provider": "Tech Against Terrorism - Home", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "unsc-consolidated-list": { - "provider": "UN Security Council - Consolidated Sanctions List Updates (RSS)", - "lane": "sanctions", - "kind": "rss", - "lastCheckedAt": "2026-04-25T10:57:22.432Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 8, - "consecutiveFailures": 8, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-25T10:57:22.432Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-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" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-25T10:57:22.432Z" - } - ], - "cooldownUntil": "2026-04-27T10:57:22.432Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-27T10:57:22.432Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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": false, - "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-25T15:10:51.097Z" - }, - "barnet-council-news": { - "provider": "Barnet Post", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T10:57:22.432Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 8, - "consecutiveFailures": 8, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-25T10:57:22.432Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "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" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-25T10:57:22.432Z" - } - ], - "cooldownUntil": "2026-04-27T10:57:22.432Z", - "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-27T10:57:22.432Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "barts-health-news": { - "provider": "Barts Health NHS Trust a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 14, - "failedRuns": 5, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 5, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T08:09:12.931Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "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": "timeout", - "message": "This operation was aborted", - "at": "2026-04-23T08:09:12.931Z" - } - ], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "bbc-news-london-rss": { - "provider": "BBC News - London RSS", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 14, - "emptyRuns": 30, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 19, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": "2026-04-18T23:43:16.267Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 43, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "bexley-council-news": { - "provider": "Bexley Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "brent-council-news": { - "provider": "Brent Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "camden-council-news": { - "provider": "Camden Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "chelsea-westminster-news": { - "provider": "Chelsea and Westminster Hospital NHS Foundation Trust a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "croydon-council-news": { - "provider": "Croydon Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "ealing-council-news": { - "provider": "Ealing Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 1, - "emptyRuns": 71, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 43, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", - "lastFailureAt": "2026-04-18T21:09:53.488Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-18T21:09:53.488Z" - } - ], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "gosh-news": { - "provider": "Great Ormond Street Hospital a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "guys-st-thomas-news": { - "provider": "Guy's and St Thomas' NHS Foundation Trust a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "hackney-council-news": { - "provider": "Hackney Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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": false, - "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-25T15:10:51.097Z" - }, - "haringey-council-news": { - "provider": "Metropolitan Police - Haringey Tag", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 2, - "failedRuns": 7, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 2, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "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-25T16:58:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T16:58:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "havering-council-news": { - "provider": "Havering Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "hillingdon-council-news": { - "provider": "Hillingdon Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "homerton-healthcare-news": { - "provider": "Homerton Healthcare NHS Foundation Trust a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 36, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 36, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "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": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "hounslow-council-news": { - "provider": "Hounslow Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "islington-council-news": { - "provider": "Islington Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "kings-college-hospital-news": { - "provider": "King's College Hospital NHS Foundation Trust a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "kingston-council-news": { - "provider": "Kingston Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 81, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 26, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-21T08:24:19.478Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T08:24:19.478Z" - } - ], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "lambeth-council-news": { - "provider": "Lambeth Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "lewisham-council-news": { - "provider": "Metropolitan Police - Lewisham Tag", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 2, - "failedRuns": 7, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 2, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "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-25T17:53:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T17:53:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "lnwh-news": { - "provider": "London North West University Healthcare NHS Trust a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "london-gov-rss-80603": { - "provider": "Mayor of London - Press Releases", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "london-gov-rss-80632": { - "provider": "London Assembly - Press Releases", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "mayor-of-london-press-releases": { - "provider": "Mayor of London a Press Releases", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 36, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 36, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "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": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "merton-council-news": { - "provider": "Merton Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 81, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 26, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-21T08:24:19.478Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T08:24:19.478Z" - } - ], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "met-police-the-met-tag": { - "provider": "Metropolitan Police - The Met Tag", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 13, - "emptyRuns": 90, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 89, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "moorfields-news": { - "provider": "Moorfields Eye Hospital NHS Foundation Trust a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "nelft-news": { - "provider": "North East London NHS Foundation Trust a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "newham-council-news": { - "provider": "Newham Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "nhs-london-nel-news": { - "provider": "NHS North East London a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 81, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 25, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-21T10:07:46.576Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-21T10:07:46.576Z" - } - ], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "nhs-london-nwl-news": { - "provider": "NHS North West London a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "oxleas-news": { - "provider": "Oxleas NHS Foundation Trust a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "redbridge-council-news": { - "provider": "Redbridge Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "richmond-council-news": { - "provider": "Richmond Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 71, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 6, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T03:28:47.210Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T03:28:47.210Z" - } - ], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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": false, - "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-25T15:10:51.097Z" - }, - "slam-news": { - "provider": "South London and Maudsley NHS Foundation Trust a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 36, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 36, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "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": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "southwark-newsroom": { - "provider": "Southwark Council - News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 3, - "failedRuns": 7, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 3, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "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-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "st-georges-news": { - "provider": "St George's University Hospitals NHS Foundation Trust a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "sutton-council-news": { - "provider": "Sutton Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "swlstg-news": { - "provider": "South West London and St George's Mental Health NHS Trust a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "tfl-press-releases": { - "provider": "Transport for London - Press Releases", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T10:57:22.432Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 8, - "consecutiveFailures": 8, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-25T10:57:22.432Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "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" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-25T10:57:22.432Z" - } - ], - "cooldownUntil": "2026-04-27T10:57:22.432Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-27T10:57:22.432Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "tower-hamlets-council-news": { - "provider": "Tower Hamlets Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 36, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 36, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "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": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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": false, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-26T15:22:10.638Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "waltham-forest-council-news": { - "provider": "Waltham Forest Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "wandsworth-council-news": { - "provider": "Wandsworth Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 71, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 6, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T03:28:47.210Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "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-23T03:28:47.210Z" - } - ], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "londonist-rss": { - "provider": "Londonist", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T10:04:35.232Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 10, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T10:04:35.232Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T22:04:35.232Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 50, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T22:04:35.232Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "ian-visits-rss": { - "provider": "IanVisits", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T10:04:35.232Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 10, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T10:04:35.232Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T22:04:35.232Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 50, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T22:04:35.232Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "secret-london-rss": { - "provider": "Secret London", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T00:10:29.100Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 3, - "failedRuns": 3, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-25T00:10:29.100Z", - "lastEmptyAt": "2026-04-24T23:16:11.061Z", - "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-24T20:13:14.472Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-24T22:12:47.520Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-25T00:10:29.100Z" - } - ], - "cooldownUntil": "2026-04-26T08:34:29.100Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 26, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T08:34:29.100Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "time-out-london-rss": { - "provider": "Time Out London", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T20:13:14.472Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 2, - "consecutiveFailures": 2, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T20:13:14.472Z", - "lastEmptyAt": null, - "lastErrorCategory": "not-found-404", - "lastErrorMessage": "HTTP 404", - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-24T19:10:51.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-24T20:13:14.472Z" - } - ], - "cooldownUntil": "2026-04-26T08:13:14.472Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 20, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T08:13:14.472Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "diamond-geezer-rss": { - "provider": "Diamond Geezer", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T10:04:35.232Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 10, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T10:04:35.232Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T22:04:35.232Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 50, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T22:04:35.232Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "city-of-london-police-news": { - "provider": "National Crime Agency - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-25T10:57:22.432Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 8, - "consecutiveFailures": 8, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 1, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-25T10:57:22.432Z", - "lastEmptyAt": null, - "lastErrorCategory": "timeout", - "lastErrorMessage": "page.goto: Timeout 12000ms exceeded.\nCall log:\n - navigating to \"https://www.nationalcrimeagency.gov.uk/news?source=city-of-london-police-news\", waiting until \"domcontentloaded\"\n", - "recentErrors": [ - { - "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" - }, - { - "category": "timeout", - "message": "page.goto: Timeout 12000ms exceeded.\nCall log:\n - navigating to \"https://www.nationalcrimeagency.gov.uk/news?source=city-of-london-police-news\", waiting until \"domcontentloaded\"\n", - "at": "2026-04-25T10:57:22.432Z" - } - ], - "cooldownUntil": "2026-04-27T10:57:22.432Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-27T10:57:22.432Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "city-of-london-police-newsroom": { - "provider": "Metropolitan Police Service - Latest News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 1, - "successfulRuns": 3, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": "2026-04-25T14:31:06.996Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 30, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "met-police-latest-news": { - "provider": "Metropolitan Police - Latest News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-25T15:10:51.097Z", - "lastBuiltCount": 1, - "successfulRuns": 126, - "emptyRuns": 0, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": "2026-04-25T15:10:51.097Z", - "lastFailureAt": null, - "lastEmptyAt": null, - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 100, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T16:10:51.097Z" - }, - "met-police-news": { - "provider": "Metropolitan Police Service a News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-25T15:10:51.097Z", - "lastBuiltCount": 1, - "successfulRuns": 126, - "emptyRuns": 0, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": "2026-04-25T15:10:51.097Z", - "lastFailureAt": null, - "lastEmptyAt": null, - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 100, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T16:10:51.097Z" - }, - "london-assembly-press-releases": { - "provider": "London Assembly a Press Releases", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 36, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 36, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "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": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "london-resilience": { - "provider": "Resilience First - Latest Updates", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-25T00:10:29.100Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 17, - "failedRuns": 5, - "consecutiveFailures": 3, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-25T00:10:29.100Z", - "lastEmptyAt": "2026-04-20T11:00:44.891Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "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" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-25T00:10:29.100Z" - } - ], - "cooldownUntil": "2026-04-27T00:10:29.100Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-27T00:10:29.100Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "gov-uk-fcdo-travel-advice": { - "provider": "FCDO a Foreign Travel Advice Index", - "lane": "border", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "uk-border-force": { - "provider": "Border Force (UK) a Announcements and Publications", - "lane": "border", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "uk-ukvi": { - "provider": "UK Visas and Immigration a Announcements and Publications", - "lane": "border", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "bbc-news-england-legacy": { - "provider": "BBC News a England (Legacy RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 1, - "emptyRuns": 31, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 20, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": "2026-04-18T11:15:29.208Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "bbc-news-front-page-legacy": { - "provider": "BBC News a Front Page (Legacy RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 27, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 17, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-17T22:12:37.099Z", - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "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-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "bbc-news-uk": { - "provider": "BBC News a UK", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 28, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 18, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-17T22:12:37.099Z", - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "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-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "bbc-news-uk-politics-legacy": { - "provider": "BBC News a UK Politics (Legacy RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T15:10:51.097Z", - "lastBuiltCount": 1, - "successfulRuns": 9, - "emptyRuns": 11, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": "2026-04-25T15:10:51.097Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-24T15:22:10.638Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 90, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T18:26:51.097Z" - }, - "chatham-house-home": { - "provider": "Chatham House", - "lane": "context", - "kind": "rss", - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "gov-uk-defence-intelligence": { - "provider": "UK Defence Intelligence a GOV.UK", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 36, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 36, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "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": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "gov-uk-terrorism-search": { - "provider": "GOV.UK Search - Terrorism", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "guardian-uk": { - "provider": "The Guardian a UK News", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T13:23:56.797Z", - "lastBuiltCount": 0, - "successfulRuns": 23, - "emptyRuns": 40, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 13, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": "2026-04-23T05:47:56.833Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T13:23:56.797Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-26T01:23:56.797Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 39, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T01:23:56.797Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "henry-jackson-society-news": { - "provider": "RUSI - Latest Publications", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 7, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "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-25T17:21:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T17:21:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "hope-not-hate-home": { - "provider": "Hope not hate podcast", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "mi5-news": { - "provider": "National Crime Agency - News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T10:57:22.432Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 8, - "consecutiveFailures": 8, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-25T10:57:22.432Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "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" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-25T10:57:22.432Z" - } - ], - "cooldownUntil": "2026-04-27T10:57:22.432Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-27T10:57:22.432Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "mi5-news-rss-direct": { - "provider": "MI5 - News RSS", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 36, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 36, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "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": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "national-crime-agency-news": { - "provider": "National Crime Agency - 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-25T15:10:51.097Z" - }, - "npcc-releases": { - "provider": "National Police Chiefs' Council - Releases", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "police-uk-all-crime-leicester": { - "provider": "Police.uk - Street Crime Around Leicester", - "lane": "context", - "kind": "json", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 93, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 87, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-16T23:55:39.351Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-16T23:55:39.351Z" - } - ], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "police-uk-stops-force-leicestershire": { - "provider": "Police.uk - Force Stops (Leicestershire)", - "lane": "context", - "kind": "json", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "police-uk-stops-street-leicester": { - "provider": "Police.uk - Street Stops Around Leicester", - "lane": "context", - "kind": "json", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "rusi-home": { - "provider": "RUSI", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 24, - "failedRuns": 2, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 14, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-19T03:30:54.684Z", - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "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-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "rusi-publications": { - "provider": "RUSI (Royal United Services Institute) a Publications", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "rusi-terrorism-conflict": { - "provider": "RUSI - Latest Publications", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T05:58:37.999Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 13, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 12, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T12:14:24.733Z", - "lastEmptyAt": "2026-04-25T05:58:37.999Z", - "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-25T17:58:37.999Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T17:58:37.999Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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-25T15:24:00.000Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 32, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:24:00.000Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "sky-news-uk-rss": { - "provider": "Sky News UK a Top Stories (RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T10:04:35.232Z", - "lastBuiltCount": 0, - "successfulRuns": 35, - "emptyRuns": 40, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 14, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": "2026-04-21T11:46:02.615Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T10:04:35.232Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T22:04:35.232Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 58, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T22:04:35.232Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "the-sun-all": { - "provider": "The Sun", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 8, - "consecutiveFailures": 8, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-25T14:31:06.996Z", - "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-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" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-25T14:31:06.996Z" - } - ], - "cooldownUntil": "2026-04-27T14:31:06.996Z", - "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-27T14:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "the-sun-all-english": { - "provider": "The Sun", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 8, - "consecutiveFailures": 8, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-25T14:31:06.996Z", - "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-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" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-25T14:31:06.996Z" - } - ], - "cooldownUntil": "2026-04-27T14:31:06.996Z", - "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-27T14:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "the-sun-homepage": { - "provider": "The Sun", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 8, - "consecutiveFailures": 8, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-25T14:31:06.996Z", - "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-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" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-25T14:31:06.996Z" - } - ], - "cooldownUntil": "2026-04-27T14:31:06.996Z", - "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-27T14:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "the-sun-news-english": { - "provider": "The Sun", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 8, - "consecutiveFailures": 8, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-25T14:31:06.996Z", - "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-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" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-25T14:31:06.996Z" - } - ], - "cooldownUntil": "2026-04-27T14:31:06.996Z", - "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-27T14:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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": false, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-26T15:22:10.638Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "wiltshire-999s": { - "provider": "Wiltshire 999s", - "lane": "context", - "kind": "rss", - "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-25T15:10:51.097Z" - }, - "belfast-live": { - "provider": "Belfast Live", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 6, - "emptyRuns": 24, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": "2026-04-17T05:46:58.069Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 34, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "birmingham-mail": { - "provider": "Birmingham Mail", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "breaking-news-today": { - "provider": "Breaking News Today", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "cambridge-news": { - "provider": "Cambridge News", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T13:23:56.797Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 28, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 13, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T17:16:47.386Z", - "lastEmptyAt": "2026-04-25T13:23:56.797Z", - "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-26T01:23:56.797Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T01:23:56.797Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "channel-4-news": { - "provider": "Channel 4 News", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T13:23:56.797Z", - "lastBuiltCount": 0, - "successfulRuns": 12, - "emptyRuns": 31, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 9, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": "2026-04-19T17:13:24.435Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-25T13:23:56.797Z", - "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": "2026-04-25T15:29:56.797Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:29:56.797Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "consett-magazine": { - "provider": "Consett Magazine", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "daily-echo": { - "provider": "Daily Echo", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "daily-express": { - "provider": "Daily Express", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "daily-mail-online": { - "provider": "Daily Mail Online - Popular Stories", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 22, - "failedRuns": 3, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 19, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-16T23:55:39.351Z", - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "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-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "daily-mirror": { - "provider": "Daily Mirror", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "daily-politics": { - "provider": "Daily Politics", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T13:23:56.797Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 13, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 13, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T08:39:19.161Z", - "lastEmptyAt": "2026-04-25T13:23:56.797Z", - "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-26T01:23:56.797Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T01:23:56.797Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "deadline-news": { - "provider": "Deadline News", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T05:58:37.999Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 27, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 12, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T17:16:47.386Z", - "lastEmptyAt": "2026-04-25T05:58:37.999Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "http-status-error", - "message": "HTTP 500", - "at": "2026-04-20T17:16:47.386Z" - } - ], - "cooldownUntil": "2026-04-25T17:58:37.999Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T17:58:37.999Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "evening-standard": { - "provider": "Evening Standard", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 3, - "emptyRuns": 27, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": "2026-04-17T05:46:58.069Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 29, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "glasgow-times": { - "provider": "Glasgow Times", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T13:23:56.797Z", - "lastBuiltCount": 0, - "successfulRuns": 4, - "emptyRuns": 27, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 6, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": "2026-04-25T05:58:37.999Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T13:23:56.797Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:29:56.797Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 39, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:29:56.797Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "grimsby-telegraph": { - "provider": "Grimsby Telegraph", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "herald-scotland-news": { - "provider": "Herald Scotland - News", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "huffpost-uk": { - "provider": "HuffPost UK", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "larne-times": { - "provider": "Larne Times", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "manchester-evening-news": { - "provider": "Manchester Evening News", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "news-uk": { - "provider": "News UK", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "pinknews": { - "provider": "PinkNews", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T10:04:35.232Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 12, - "failedRuns": 5, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 12, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-19T13:19:06.686Z", - "lastEmptyAt": "2026-04-25T10:04:35.232Z", - "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-25T22:04:35.232Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T22:04:35.232Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "politics-co-uk": { - "provider": "Politics.co.uk", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "positive-news": { - "provider": "Positive News", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "scottish-field": { - "provider": "Scottish Field", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "surgezirc-uk": { - "provider": "SurgeZirc UK", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T13:23:56.797Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 15, - "failedRuns": 6, - "consecutiveFailures": 2, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-25T13:23:56.797Z", - "lastEmptyAt": "2026-04-23T08:09:12.931Z", - "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-19T14:11:10.963Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-23T11:47:27.254Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-25T13:23:56.797Z" - } - ], - "cooldownUntil": "2026-04-27T13:23:56.797Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-27T13:23:56.797Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "the-argus-news": { - "provider": "The Argus", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "the-bolton-news": { - "provider": "The Bolton News - News", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "church-of-england-newspaper": { - "provider": "Church of England Newspaper", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 28, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 18, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-17T22:12:37.099Z", - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-17T22:12:37.099Z" - } - ], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "the-daily-mash": { - "provider": "The Daily Mash", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T13:23:56.797Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 13, - "failedRuns": 5, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 13, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-19T13:19:06.686Z", - "lastEmptyAt": "2026-04-25T13:23:56.797Z", - "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-26T01:23:56.797Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T01:23:56.797Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "daily-record": { - "provider": "Daily Record", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "guardian-uk-top-stories": { - "provider": "The Guardian - UK Top Stories", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 18, - "failedRuns": 3, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 6, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "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-25T17:51:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T17:51:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "independent-top-stories": { - "provider": "The Independent - Top Stories", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T13:23:56.797Z", - "lastBuiltCount": 0, - "successfulRuns": 4, - "emptyRuns": 42, - "failedRuns": 2, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 13, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": "2026-04-19T16:03:49.134Z", - "lastFailureAt": "2026-04-20T17:16:47.386Z", - "lastEmptyAt": "2026-04-25T13:23:56.797Z", - "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-26T01:23:56.797Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T01:23:56.797Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "northern-echo-news": { - "provider": "The Northern Echo - News", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "the-poke": { - "provider": "The Poke", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "scarborough-news": { - "provider": "The Scarborough News", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "the-scotsman-news": { - "provider": "The Scotsman - News", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "the-scottish-sun": { - "provider": "The Scottish Sun", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 8, - "consecutiveFailures": 8, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-25T14:31:06.996Z", - "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-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" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-25T14:31:06.996Z" - } - ], - "cooldownUntil": "2026-04-27T14:31:06.996Z", - "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-27T14:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "the-sun": { - "provider": "The Sun", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 8, - "consecutiveFailures": 8, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-25T14:31:06.996Z", - "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-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" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-25T14:31:06.996Z" - } - ], - "cooldownUntil": "2026-04-27T14:31:06.996Z", - "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-27T14:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "the-week-uk": { - "provider": "The Week UK", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 11, - "emptyRuns": 22, - "failedRuns": 3, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 9, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": "2026-04-17T11:07:28.674Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "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-25T17:02:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T17:02:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "the-york-press-news": { - "provider": "The York Press - News", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "wales-online": { - "provider": "WalesOnline", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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": false, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-26T03:29:13.488Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "a-luxury-travel-blog": { - "provider": "A Luxury Travel Blog", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "age-uk-discover": { - "provider": "Age UK", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "alan-malcher": { - "provider": "Alan Malcher", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "arcticdry": { - "provider": "ArcticDry", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 27, - "failedRuns": 2, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-25T07:34:50.373Z", - "lastEmptyAt": "2026-04-24T19:10:51.723Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T08:04:04.612Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-25T07:34:50.373Z" - } - ], - "cooldownUntil": "2026-04-27T07:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-27T07:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "britishbeautyblogger": { - "provider": "British Beauty Blogger", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "buy-firewood-direct": { - "provider": "Buy Firewood Direct", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "carly-rowena": { - "provider": "Carly Rowena", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "cherished-holiday-homes": { - "provider": "Cherished Holiday Homes", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "chique-home-living": { - "provider": "Chique Home Living", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "clubwise-blog": { - "provider": "ClubWise Blog", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "disneyrollergirl": { - "provider": "Disneyrollergirl", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "elluminet-press": { - "provider": "9to5Mac", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 7, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "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-25T16:51:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T16:51:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "england-naturally": { - "provider": "England, Naturally", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T13:23:56.797Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 22, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 4, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T03:28:47.210Z", - "lastEmptyAt": "2026-04-25T13:23:56.797Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-23T03:28:47.210Z" - } - ], - "cooldownUntil": "2026-04-25T16:22:56.797Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T16:22:56.797Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "evening-shire": { - "provider": "Evening Shire", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T13:23:56.797Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 26, - "failedRuns": 3, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 15, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-18T07:21:41.099Z", - "lastEmptyAt": "2026-04-25T13:23:56.797Z", - "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-26T01:23:56.797Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T01:23:56.797Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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": false, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-25T18:02:43.923Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "faded-spring": { - "provider": "Emily Underworld", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 7, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "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-25T16:38:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T16:38:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "fmcg-gurus": { - "provider": "Europol - Newsroom", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T05:58:37.999Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 26, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 11, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T17:16:47.386Z", - "lastEmptyAt": "2026-04-25T05:58:37.999Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-20T17:16:47.386Z" - } - ], - "cooldownUntil": "2026-04-25T17:58:37.999Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T17:58:37.999Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "foreign-office-blogs": { - "provider": "Foreign Office Blogs", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "fresh-design-blog": { - "provider": "Fresh Design Blog", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "ian-neate-blog": { - "provider": "9to5Mac", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 7, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "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-25T16:57:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T16:57:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "jollydeck": { - "provider": "JollyDeck", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "lifestylelinked": { - "provider": "LifeStyleLinked", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "london-review-of-books": { - "provider": "London Review of Books", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "love-my-dress": { - "provider": "Love My Dress", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T13:23:56.797Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 27, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-25T13:23:56.797Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "http-status-error", - "message": "HTTP 520", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-26T01:23:56.797Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T01:23:56.797Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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": false, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-25T18:02:43.923Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "marie-claire-uk": { - "provider": "Marie Claire UK", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "office-breaks": { - "provider": "Office Breaks", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "on-the-think-of": { - "provider": "On The Think Of", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "quadrant2design-exhibiting-guides": { - "provider": "Quadrant2Design Exhibiting Guides", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T05:58:37.999Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 24, - "failedRuns": 3, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 14, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-18T07:21:41.099Z", - "lastEmptyAt": "2026-04-25T05:58:37.999Z", - "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-25T17:58:37.999Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T17:58:37.999Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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": false, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-25T18:02:43.923Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "rocknroll-bride": { - "provider": "Rock n Roll Bride", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "semibold": { - "provider": "Semibold", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 27, - "failedRuns": 3, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 15, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-18T07:21:41.099Z", - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "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-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "silly-old-sod": { - "provider": "Combating Terrorism Center at West Point - CTC Sentinel", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T10:04:35.232Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 27, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 13, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T04:05:33.139Z", - "lastEmptyAt": "2026-04-25T10:04:35.232Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-20T04:05:33.139Z" - } - ], - "cooldownUntil": "2026-04-25T22:04:35.232Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T22:04:35.232Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "silverspoon-london": { - "provider": "SilverSpoon London", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "sks-business-services": { - "provider": "UN Office of Counter-Terrorism - News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 7, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "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-25T16:34:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T16:34:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "hnd-assignment-help-uk-medium": { - "provider": "Stories by HND Assignment Help UK", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "streetspace": { - "provider": "Streetspace", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 8, - "consecutiveFailures": 8, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-25T14:31:06.996Z", - "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-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" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-25T14:31:06.996Z" - } - ], - "cooldownUntil": "2026-04-27T14:31:06.996Z", - "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-27T14:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "tenura": { - "provider": "Tenura", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 22, - "failedRuns": 1, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 1, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-25T07:34:50.373Z", - "lastEmptyAt": "2026-04-24T19:10:51.723Z", - "lastErrorCategory": "timeout", - "lastErrorMessage": "This operation was aborted", - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-25T07:34:50.373Z" - } - ], - "cooldownUntil": "2026-04-27T07:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-27T07:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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": false, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-26T15:22:10.638Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "the-curry-guy": { - "provider": "The Curry Guy", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "real-talk-uk": { - "provider": "The Real Talk UK", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "the-stratfordian": { - "provider": "The Stratfordian", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "training-express": { - "provider": "Training Express", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "uk-constitutional-law-association": { - "provider": "UK Constitutional Law Association", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "uk-fundraising-blog": { - "provider": "UK Fundraising", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "uk-human-rights-blog": { - "provider": "UK Human Rights Blog", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "vershd": { - "provider": "Vershd", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "vuelio-uk": { - "provider": "Vuelio", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "ukhsa-updates-atom": { - "provider": "UK Health Security Agency", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 14, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 14, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 38, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "nitter-uk-incident-keywords": { - "provider": "Nitter - UK Incident Keyword Search", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T21:33:33.442Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 3, - "consecutiveFailures": 3, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T21:33:33.442Z", - "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-24T19:10:51.723Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-24T20:13:14.472Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-24T21:33:33.442Z" - } - ], - "cooldownUntil": "2026-04-26T00:33:33.442Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 35, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T00:33:33.442Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "sky-business-rss": { - "provider": "Sky News - Business (RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T10:04:35.232Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 10, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T10:04:35.232Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T22:04:35.232Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 50, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T22:04:35.232Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "mi5-news-rss": { - "provider": "MI5 - News and Updates (RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T21:33:33.442Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 3, - "consecutiveFailures": 3, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T21:33:33.442Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-24T19:10:51.723Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-24T20:13:14.472Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-24T21:33:33.442Z" - } - ], - "cooldownUntil": "2026-04-26T00:33:33.442Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 35, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T00:33:33.442Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "counter-terrorism-policing-uk-rss": { - "provider": "Counter Terrorism Policing UK", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T21:33:33.442Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 3, - "consecutiveFailures": 3, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T21:33:33.442Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T19:10:51.723Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T20:13:14.472Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T21:33:33.442Z" - } - ], - "cooldownUntil": "2026-04-26T00:33:33.442Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 35, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T00:33:33.442Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "act-campaign-feed": { - "provider": "Action Counters Terrorism (ACT)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T21:33:33.442Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 3, - "consecutiveFailures": 3, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T21:33:33.442Z", - "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-24T19:10:51.723Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-24T20:13:14.472Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-24T21:33:33.442Z" - } - ], - "cooldownUntil": "2026-04-26T00:33:33.442Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 35, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T00:33:33.442Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "missing-people-uk-rss": { - "provider": "Missing People UK", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T10:04:35.232Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 10, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T10:04:35.232Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T22:04:35.232Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 50, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T22:04:35.232Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "home-office-atom": { - "provider": "UK Home Office", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 14, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 14, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 38, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "charity-commission-atom": { - "provider": "Charity Commission for England and Wales", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 14, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 14, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 38, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "national-trust-news-rss": { - "provider": "National Trust", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T20:13:14.472Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 2, - "consecutiveFailures": 2, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T20:13:14.472Z", - "lastEmptyAt": null, - "lastErrorCategory": "not-found-404", - "lastErrorMessage": "HTTP 404", - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-24T19:10:51.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-24T20:13:14.472Z" - } - ], - "cooldownUntil": "2026-04-26T08:13:14.472Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 20, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T08:13:14.472Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "visitbritain-rss": { - "provider": "VisitBritain", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T20:13:14.472Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 2, - "consecutiveFailures": 2, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T20:13:14.472Z", - "lastEmptyAt": null, - "lastErrorCategory": "not-found-404", - "lastErrorMessage": "HTTP 404", - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-24T19:10:51.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-24T20:13:14.472Z" - } - ], - "cooldownUntil": "2026-04-26T08:13:14.472Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 20, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T08:13:14.472Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "time-out-uk-rss": { - "provider": "Time Out UK", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T20:13:14.472Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 2, - "consecutiveFailures": 2, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T20:13:14.472Z", - "lastEmptyAt": null, - "lastErrorCategory": "not-found-404", - "lastErrorMessage": "HTTP 404", - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-24T19:10:51.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-24T20:13:14.472Z" - } - ], - "cooldownUntil": "2026-04-26T08:13:14.472Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 20, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T08:13:14.472Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "guido-fawkes-feed": { - "provider": "Guido Fawkes", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T10:04:35.232Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 10, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T10:04:35.232Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T22:04:35.232Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 50, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T22:04:35.232Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "wings-over-scotland-feed": { - "provider": "Wings Over Scotland", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T10:04:35.232Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 10, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T10:04:35.232Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T22:04:35.232Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 50, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T22:04:35.232Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "skwawkbox-feed": { - "provider": "Skwawkbox", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T10:04:35.232Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 10, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T10:04:35.232Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T22:04:35.232Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 50, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T22:04:35.232Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "breitbart-london-feed": { - "provider": "Breitbart London", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T15:10:51.097Z", - "lastBuiltCount": 1, - "successfulRuns": 9, - "emptyRuns": 6, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": "2026-04-25T15:10:51.097Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T00:10:29.100Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 100, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T18:40:51.097Z" - }, - "gb-news-uk-politics-rss": { - "provider": "GB News - UK Politics", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T15:10:51.097Z", - "lastBuiltCount": 0, - "successfulRuns": 9, - "emptyRuns": 6, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 3, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": "2026-04-25T11:48:31.947Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T15:10:51.097Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 91, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:08:51.097Z" - }, - "the-canary-feed": { - "provider": "The Canary", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T15:10:51.097Z", - "lastBuiltCount": 0, - "successfulRuns": 11, - "emptyRuns": 4, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 3, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": "2026-04-25T11:48:31.947Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T15:10:51.097Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 91, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:07:51.097Z" - }, - "sky-news-home-rss": { - "provider": "Sky News - Home", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T10:04:35.232Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 10, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T10:04:35.232Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T22:04:35.232Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 50, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T22:04:35.232Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "telegraph-all-news-rss": { - "provider": "The Telegraph - News", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T10:04:35.232Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 10, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T10:04:35.232Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T22:04:35.232Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 50, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T22:04:35.232Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "my-london-rss": { - "provider": "MyLondon", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T10:04:35.232Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 10, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T10:04:35.232Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T22:04:35.232Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 50, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T22:04:35.232Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "uk-data-police-api": { - "provider": "Police.uk - API root", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 14, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 14, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 38, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "uk-judiciary-sentencing-remarks": { - "provider": "Judiciary UK - Sentencing remarks", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 14, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 14, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 38, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "uk-college-policing-news": { - "provider": "College of Policing - News and views", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T21:33:33.442Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 3, - "consecutiveFailures": 3, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 3, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T21:33:33.442Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T19:10:51.723Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T20:13:14.472Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T21:33:33.442Z" - } - ], - "cooldownUntil": "2026-04-26T00:33:33.442Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 35, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T00:33:33.442Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "uk-ons-crime-england-wales": { - "provider": "ONS - Crime in England and Wales", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 14, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 14, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 38, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "uk-serious-fraud-office-news": { - "provider": "Serious Fraud Office - GOV.UK organisation", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 14, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 14, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 38, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "uk-hmrc-news": { - "provider": "HM Revenue & Customs - News and communications", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 14, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 14, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 38, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "uk-ukfinance-fraud-news": { - "provider": "UK Finance - News and insight", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T21:33:33.442Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 3, - "consecutiveFailures": 3, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 3, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T21:33:33.442Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T19:10:51.723Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T20:13:14.472Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T21:33:33.442Z" - } - ], - "cooldownUntil": "2026-04-26T00:33:33.442Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 35, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T00:33:33.442Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "uk-cifas-newsroom": { - "provider": "Cifas - Newsroom", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T10:04:35.232Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 10, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T10:04:35.232Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T22:04:35.232Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 50, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T22:04:35.232Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "politics-co-uk-rss": { - "provider": "Politics.co.uk", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T10:04:35.232Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 10, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T10:04:35.232Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T22:04:35.232Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 50, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T22:04:35.232Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "uk-met-office-rss-guides": { - "provider": "Met Office - RSS feeds guide", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 14, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 14, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 38, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "novara-media-feed": { - "provider": "Novara Media", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T10:04:35.232Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 10, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T10:04:35.232Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T22:04:35.232Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 50, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T22:04:35.232Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "byline-times-feed": { - "provider": "Byline Times", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T10:04:35.232Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 10, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T10:04:35.232Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T22:04:35.232Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 50, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T22:04:35.232Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "reddit-unitedkingdom-rss": { - "provider": "Reddit - r/unitedkingdom", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T10:04:35.232Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 10, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T10:04:35.232Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T22:04:35.232Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 50, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T22:04:35.232Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "avon-and-somerset-police-news-html": { - "provider": "Avon and Somerset Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 95, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 95, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "avon-somerset-police-news": { - "provider": "Avon & Somerset Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 95, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 95, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "british-transport-police-news": { - "provider": "British Transport Police Authority - News Feed", - "lane": "incidents", - "kind": "rss", - "lastCheckedAt": "2026-04-25T10:57:22.432Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 8, - "consecutiveFailures": 8, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-25T10:57:22.432Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "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" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-25T10:57:22.432Z" - } - ], - "cooldownUntil": "2026-04-27T10:57:22.432Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-27T10:57:22.432Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "ct-policing-uk-rss-feed": { - "provider": "Counter Terrorism Policing UK - Latest News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 8, - "consecutiveFailures": 8, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-25T14:31:06.996Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-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" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-25T14:31:06.996Z" - } - ], - "cooldownUntil": "2026-04-27T14:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-27T14:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "leicestershire-police-news": { - "provider": "National Crime Agency - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-25T10:57:22.432Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 8, - "consecutiveFailures": 8, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-25T10:57:22.432Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "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-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" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-25T10:57:22.432Z" - } - ], - "cooldownUntil": "2026-04-27T10:57:22.432Z", - "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-27T10:57:22.432Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "northumbria-police-news": { - "provider": "North East Bylines", - "lane": "incidents", - "kind": "rss", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 3, - "failedRuns": 7, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 3, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "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-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "police-scotland-news": { - "provider": "Police Scotland news", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 44, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 36, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-19T19:32:35.264Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "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": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "psni-latest-news": { - "provider": "Police Service of Northern Ireland - Latest News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 95, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 95, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "warwickshire-police-news": { - "provider": "Warwickshire Connected - Latest Alerts", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 3, - "failedRuns": 7, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 3, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "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-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-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "west-yorkshire-police-all-rss": { - "provider": "West Yorkshire Police - All News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 95, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 95, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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": false, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-26T11:47:26.601Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "west-yorkshire-police-missing-rss": { - "provider": "West Yorkshire Police - Missing Feed", - "lane": "incidents", - "kind": "rss", - "lastCheckedAt": "2026-04-25T10:57:22.432Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 8, - "consecutiveFailures": 8, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-25T10:57:22.432Z", - "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-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" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-25T10:57:22.432Z" - } - ], - "cooldownUntil": "2026-04-27T10:57:22.432Z", - "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-27T10:57:22.432Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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": false, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-26T15:22:10.638Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "west-yorkshire-police-news-appeals": { - "provider": "West Yorkshire Police - News Appeals", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 95, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 95, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "west-yorkshire-police-news-rss": { - "provider": "West Yorkshire Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 95, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 95, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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": false, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-26T11:47:26.601Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "uk-npcc-news": { - "provider": "National Police Chiefs' Council - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 14, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 14, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 38, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "uk-npcc-county-lines": { - "provider": "National Police Chiefs' Council - Crime Operations releases", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 14, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 14, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 38, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "uk-btp-england-news": { - "provider": "British Transport Police - England news", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-24T21:33:33.442Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 3, - "consecutiveFailures": 3, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T21:33:33.442Z", - "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-24T19:10:51.723Z" - }, - { - "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-24T20:13:14.472Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-24T21:33:33.442Z" - } - ], - "cooldownUntil": "2026-04-26T00:33:33.442Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 35, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T00:33:33.442Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "uk-city-london-police-news": { - "provider": "City of London Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-24T21:33:33.442Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 3, - "consecutiveFailures": 3, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T21:33:33.442Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-24T19:10:51.723Z" - }, - { - "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-24T20:13:14.472Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-24T21:33:33.442Z" - } - ], - "cooldownUntil": "2026-04-26T00:33:33.442Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 35, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T00:33:33.442Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "uk-city-london-police-fraud": { - "provider": "City of London Police - Fraud category", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-24T21:33:33.442Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 3, - "consecutiveFailures": 3, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 3, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T21:33:33.442Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-24T19:10:51.723Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-24T20:13:14.472Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-24T21:33:33.442Z" - } - ], - "cooldownUntil": "2026-04-26T00:33:33.442Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 35, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T00:33:33.442Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "uk-west-mercia-police-news": { - "provider": "West Mercia Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-24T21:33:33.442Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 3, - "consecutiveFailures": 3, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 3, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T21:33:33.442Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-24T19:10:51.723Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-24T20:13:14.472Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-24T21:33:33.442Z" - } - ], - "cooldownUntil": "2026-04-26T00:33:33.442Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 35, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T00:33:33.442Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "uk-british-transport-police-search": { - "provider": "British Transport Police - News search", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-24T21:33:33.442Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 3, - "consecutiveFailures": 3, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 3, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T21:33:33.442Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-24T19:10:51.723Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-24T20:13:14.472Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-24T21:33:33.442Z" - } - ], - "cooldownUntil": "2026-04-26T00:33:33.442Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 35, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T00:33:33.442Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "mi5-terrorism-news-category": { - "provider": "MI5 - Terrorism News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-24T21:33:33.442Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 3, - "consecutiveFailures": 3, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 3, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T21:33:33.442Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-24T19:10:51.723Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-24T20:13:14.472Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-24T21:33:33.442Z" - } - ], - "cooldownUntil": "2026-04-26T00:33:33.442Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 35, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T00:33:33.442Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "cps-news-category-feed": { - "provider": "Crown Prosecution Service - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-24T20:13:14.472Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 2, - "consecutiveFailures": 2, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T20:13:14.472Z", - "lastEmptyAt": null, - "lastErrorCategory": "not-found-404", - "lastErrorMessage": "HTTP 404", - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-24T19:10:51.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-24T20:13:14.472Z" - } - ], - "cooldownUntil": "2026-04-26T08:13:14.472Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 20, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T08:13:14.472Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "attorney-generals-office-html": { - "provider": "Attorney General's Office", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "cabinet-office-html": { - "provider": "Cabinet Office", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "crown-office-news": { - "provider": "Crown Office and Procurator Fiscal Service - News", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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": false, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-26T11:47:26.601Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "extremism-commission-blog": { - "provider": "Commission for Countering Extremism - Blog", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "fcdo-html": { - "provider": "Foreign, Commonwealth & Development Office", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 13, - "emptyRuns": 90, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 89, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "gov-scot-access-to-justice-latest": { - "provider": "Scottish Government - Access to Justice Latest", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "gov-uk-cabinet-office-atom": { - "provider": "Cabinet Office", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "gov-uk-hmcts": { - "provider": "HMCTS a Courts and Tribunals Announcements", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "gov-uk-home-office-atom": { - "provider": "UK Home Office", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-25T15:10:51.097Z", - "lastBuiltCount": 1, - "successfulRuns": 20, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": "2026-04-25T15:10:51.097Z", - "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-25T16:10:51.097Z" - }, - "gov-uk-ipco": { - "provider": "Investigatory Powers Commissioner's Office a GOV.UK", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "gov-uk-mod-atom": { - "provider": "Ministry of Defence", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "gov-uk-moj-atom": { - "provider": "Ministry of Justice", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "gov-uk-news-and-communications-atom": { - "provider": "GOV.UK - News and Communications", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 17, - "emptyRuns": 88, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 44, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": "2026-04-20T21:17:14.299Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "hmiprisons-news": { - "provider": "HM Inspectorate of Prisons - News", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "hmiprobation-news": { - "provider": "HM Inspectorate of Probation - News", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "home-office-media-blog": { - "provider": "Home Office Media Blog", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "independent-reviewer-terrorism-legislation": { - "provider": "Independent Reviewer of Terrorism Legislation a Reports", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "independent-reviewer-terrorism-legislation-html": { - "provider": "Independent Reviewer of Terrorism Legislation", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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": false, - "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-25T15:10:51.097Z" - }, - "judiciary-rss-feeds-page": { - "provider": "Judiciary UK - RSS Feeds", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "judiciary-uk-announcements-feed": { - "provider": "Judiciary UK - Announcements Feed", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "judiciary-uk-judgments-feed": { - "provider": "Judiciary UK - Judgments Feed", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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": false, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-26T16:38:34.841Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "judiciary-uk-publications-feed": { - "provider": "Judiciary UK - Publications Feed", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "lords-in-focus-rss": { - "provider": "Hansard Society - Despatch Box", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 2, - "failedRuns": 7, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 2, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "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-25T17:52:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T17:52:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "lords-library-notes-rss": { - "provider": "Hansard Society - Despatch Box", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-25T15:10:51.097Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 2, - "failedRuns": 7, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 2, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": "2026-04-25T15:10:51.097Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "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": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T18:42:51.097Z" - }, - "ministry-of-defence-html": { - "provider": "Ministry of Defence", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 14, - "emptyRuns": 89, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 89, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "ons-html": { - "provider": "Office for National Statistics", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "parliament-all-bills-rss": { - "provider": "Parliament - All Bills RSS", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-25T10:04:35.232Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 90, - "failedRuns": 1, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-25T10:04:35.232Z", - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "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-25T10:04:35.232Z" - } - ], - "cooldownUntil": "2026-04-27T10:04:35.232Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-27T10:04:35.232Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "parliament-private-bills-rss": { - "provider": "Parliament - Private Bills RSS", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-25T10:04:35.232Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 90, - "failedRuns": 1, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 1, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-25T10:04:35.232Z", - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": "timeout", - "lastErrorMessage": "This operation was aborted", - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-25T10:04:35.232Z" - } - ], - "cooldownUntil": "2026-04-27T10:04:35.232Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-27T10:04:35.232Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "parliament-public-bills-rss": { - "provider": "Parliament - Public Bills RSS", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-25T10:04:35.232Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 90, - "failedRuns": 1, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 1, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-25T10:04:35.232Z", - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": "timeout", - "lastErrorMessage": "This operation was aborted", - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-25T10:04:35.232Z" - } - ], - "cooldownUntil": "2026-04-27T10:04:35.232Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-27T10:04:35.232Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "police-uk-crime-categories-2024-01": { - "provider": "Police.uk - Crime Categories (2024-01)", - "lane": "oversight", - "kind": "json", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "police-uk-crimes-street-dates": { - "provider": "Police.uk - Street Crime Dataset Dates", - "lane": "oversight", - "kind": "json", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "police-uk-outcomes-at-location-1609590": { - "provider": "Police Data UK - Outcomes At Location API Docs", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 3, - "failedRuns": 7, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 3, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "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-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "police-uk-outcomes-for-crime-e11dade0": { - "provider": "Police.uk - Outcomes For Crime e11dade0", - "lane": "oversight", - "kind": "json", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "scotcourts-fai-determinations-rss": { - "provider": "Scottish Courts - Fatal Accident Inquiry Determinations RSS", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "scotcourts-fai-hearings-rss": { - "provider": "Scottish Courts - Fatal Accident Inquiry Hearings RSS", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "scotcourts-high-court-justiciary-judgments-rss": { - "provider": "Scottish Courts - High Court of Justiciary Judgments RSS", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "scotcourts-high-court-practice-notes-rss": { - "provider": "Scottish Courts - High Court of Justiciary Practice Notes RSS", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "scotcourts-judgments-rss": { - "provider": "Scottish Courts - Judgments RSS", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "scotcourts-news-articles-rss": { - "provider": "Scottish Courts - News Articles RSS", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "scotcourts-publications-rss": { - "provider": "Scottish Courts - Publications RSS", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "scotcourts-rss-feeds-page": { - "provider": "Scottish Courts and Tribunals - RSS Feeds", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 71, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 6, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T03:28:47.210Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T03:28:47.210Z" - } - ], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "scotcourts-sheriff-criminal-practice-notes-rss": { - "provider": "Scottish Courts - Sheriff Court Criminal Practice Notes RSS", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "scottish-government-justice-news": { - "provider": "Scottish Government - Justice and Safety", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 36, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 36, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "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": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "serious-fraud-office-news": { - "provider": "Serious Fraud Office a News", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 77, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 36, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T04:05:33.139Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-20T04:05:33.139Z" - } - ], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "uk-home-office": { - "provider": "UK Home Office a Announcements and Publications", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-25T15:10:51.097Z", - "lastBuiltCount": 1, - "successfulRuns": 121, - "emptyRuns": 4, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": "2026-04-25T15:10:51.097Z", - "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-25T16:10:51.097Z" - }, - "uk-iopc-news": { - "provider": "Independent Office for Police Conduct a News", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "uk-ncsc-news": { - "provider": "National Cyber Security Centre (UK) a News", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-25T15:10:51.097Z", - "lastBuiltCount": 5, - "successfulRuns": 125, - "emptyRuns": 0, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": "2026-04-25T15:10:51.097Z", - "lastFailureAt": null, - "lastEmptyAt": null, - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 100, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T16:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "uk-parliament-defence-committee": { - "provider": "UK Parliament a Defence Select Committee", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 71, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 3, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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": false, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-26T08:17:25.806Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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": false, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "uk-parliament-rss-feeds-index": { - "provider": "UK Parliament - RSS Feeds", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T21:33:33.442Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 3, - "consecutiveFailures": 3, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 3, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T21:33:33.442Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-24T19:10:51.723Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-24T20:13:14.472Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-24T21:33:33.442Z" - } - ], - "cooldownUntil": "2026-04-26T00:33:33.442Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 35, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T00:33:33.442Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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": false, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-26T17:57:58.900Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "cheshire-police-alert": { - "provider": "Cheshire Police Alert", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 73, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 36, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-19T17:13:24.435Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T17:13:24.435Z" - } - ], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "dc-police-community-messaging": { - "provider": "Dorset and Cornwall Police - Community Messaging", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 73, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 36, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-19T17:13:24.435Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T17:13:24.435Z" - } - ], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "devon-cornwall-alerts": { - "provider": "Devon and Cornwall Alerts", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 73, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 36, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-19T17:13:24.435Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T17:13:24.435Z" - } - ], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "gnet-research": { - "provider": "Global Network on Extremism & Technology (GNET) a Main Feed", - "lane": "prevention", - "kind": "rss", - "lastCheckedAt": "2026-04-25T15:10:51.097Z", - "lastBuiltCount": 4, - "successfulRuns": 113, - "emptyRuns": 8, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": "2026-04-25T15:10:51.097Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T10:04:35.232Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 100, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T18:53:51.097Z" - }, - "gov-uk-contest-strategy": { - "provider": "GOV.UK a CONTEST Counter-Terrorism Strategy", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "gov-uk-counter-extremism-commissioner": { - "provider": "Counter Extremism Commissioner a GOV.UK", - "lane": "prevention", - "kind": "rss", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 93, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 91, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-16T19:01:30.233Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-16T19:01:30.233Z" - } - ], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "gov-uk-prevent-strategy": { - "provider": "UK Home Office - Prevent duty guidance", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "icsr-kcl": { - "provider": "International Centre for the Study of Radicalisation (ICSR) a Updates", - "lane": "prevention", - "kind": "rss", - "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-25T15:10:51.097Z" - }, - "met-office-seasonal-advice": { - "provider": "Met Office - Seasonal Advice", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "mi5-uk-threat-level": { - "provider": "MI5 (Security Service) a UK Threat Level", - "lane": "prevention", - "kind": "rss", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "my-community-alert": { - "provider": "My Community Alert", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 47, - "failedRuns": 2, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 2, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T11:47:27.254Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "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-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-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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": false, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-26T03:29:13.488Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "npsa-national-protective-security-authority": { - "provider": "NPSA - Activity on GOV.UK", - "lane": "prevention", - "kind": "rss", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "south-yorkshire-police-alerts": { - "provider": "South Yorkshire Police Alerts", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 73, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 36, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-19T17:13:24.435Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T17:13:24.435Z" - } - ], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "stay-in-the-know-home": { - "provider": "Stay In The Know - Community Alerts", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 73, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 36, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-19T17:13:24.435Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T17:13:24.435Z" - } - ], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "stay-in-the-know-latest-alerts": { - "provider": "Stay In The Know - Latest Alerts", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 72, - "failedRuns": 2, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 36, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-19T17:13:24.435Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "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": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "uk-ncsc-all-rss": { - "provider": "UK NCSC - All Updates RSS", - "lane": "prevention", - "kind": "rss", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 14, - "emptyRuns": 89, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 89, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "uk-prevent-duty-guidance": { - "provider": "GOV.UK a Prevent Duty Guidance (Collection)", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "west-midlands-community-alerts": { - "provider": "WMNow - Community Alerts", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 73, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 36, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-19T17:13:24.435Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T17:13:24.435Z" - } - ], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "west-yorkshire-community-alert": { - "provider": "West Yorkshire Community Alert", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 73, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 36, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-19T17:13:24.435Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T17:13:24.435Z" - } - ], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "protectuk-news": { - "provider": "ProtectUK - News", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-24T21:33:33.442Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 3, - "consecutiveFailures": 3, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 3, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T21:33:33.442Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T19:10:51.723Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T20:13:14.472Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T21:33:33.442Z" - } - ], - "cooldownUntil": "2026-04-26T00:33:33.442Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 35, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T00:33:33.442Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "home-office-terrorism-police-powers-collection": { - "provider": "UK Home Office - Operation of Police Powers under the Terrorism Act 2000", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 14, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 14, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 38, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "npsa-national-security-threats": { - "provider": "National Protective Security Authority - National Security Threats", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-24T21:33:33.442Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 3, - "consecutiveFailures": 3, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 3, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T21:33:33.442Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T19:10:51.723Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T20:13:14.472Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-24T21:33:33.442Z" - } - ], - "cooldownUntil": "2026-04-26T00:33:33.442Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 35, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T00:33:33.442Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "hedayah-news": { - "provider": "Hedayah - News", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-24T20:13:14.472Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 2, - "consecutiveFailures": 2, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T20:13:14.472Z", - "lastEmptyAt": null, - "lastErrorCategory": "not-found-404", - "lastErrorMessage": "HTTP 404", - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-24T19:10:51.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-24T20:13:14.472Z" - } - ], - "cooldownUntil": "2026-04-26T08:13:14.472Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 20, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T08:13:14.472Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "tech-against-terrorism-news": { - "provider": "Tech Against Terrorism - News", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-25T10:04:35.232Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 10, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T10:04:35.232Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T22:04:35.232Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 50, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T22:04:35.232Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "gov-uk-proscribed-terrorist-orgs": { - "provider": "GOV.UK a Proscribed Terrorist Organisations", - "lane": "sanctions", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "hm-treasury-html": { - "provider": "HM Treasury", - "lane": "sanctions", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "ofsi-blog-home": { - "provider": "OFSI - Blog", - "lane": "sanctions", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "otsi-blog-home": { - "provider": "OTSI - Blog", - "lane": "sanctions", - "kind": "html", - "lastCheckedAt": "2026-04-25T15:10:51.097Z", - "lastBuiltCount": 1, - "successfulRuns": 121, - "emptyRuns": 4, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": "2026-04-25T15:10:51.097Z", - "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-25T16:10:51.097Z" - }, - "uk-ofsi-blog": { - "provider": "Office of Financial Sanctions Implementation (OFSI) a Blog", - "lane": "sanctions", - "kind": "rss", - "lastCheckedAt": "2026-04-25T15:10:51.097Z", - "lastBuiltCount": 2, - "successfulRuns": 125, - "emptyRuns": 0, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": "2026-04-25T15:10:51.097Z", - "lastFailureAt": null, - "lastEmptyAt": null, - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 100, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T16:10:51.097Z" - }, - "uk-sanctions-list": { - "provider": "UK Sanctions List (FCDO) a Consolidated List (XML Service)", - "lane": "sanctions", - "kind": "html", - "lastCheckedAt": "2026-04-25T10:57:22.432Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 8, - "consecutiveFailures": 8, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-25T10:57:22.432Z", - "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-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" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-25T10:57:22.432Z" - } - ], - "cooldownUntil": "2026-04-27T10:57:22.432Z", - "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-27T10:57:22.432Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "ctc-sentinel": { - "provider": "Combating Terrorism Center at West Point - CTC Sentinel", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T19:10:51.723Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 1, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T19:10:51.723Z", - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "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-24T19:10:51.723Z" - } - ], - "cooldownUntil": "2026-04-26T17:58:51.723Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 2, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-26T17:58:51.723Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "dhs-press-releases": { - "provider": "US Department of Homeland Security - News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "dni-press-releases": { - "provider": "Office of the Director of National Intelligence - Press Releases", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 36, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 36, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "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": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "doj-nsd-press-releases": { - "provider": "U.S. Department of Justice - National Security Division Press Releases", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 36, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 36, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "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": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "fbi-national-press-releases": { - "provider": "FBI - National Press Releases (RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T10:57:22.432Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 8, - "consecutiveFailures": 8, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-25T10:57:22.432Z", - "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-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" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-25T10:57:22.432Z" - } - ], - "cooldownUntil": "2026-04-27T10:57:22.432Z", - "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-27T10:57:22.432Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "fbi-stories": { - "provider": "FBI - Top Stories (RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T10:57:22.432Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 8, - "consecutiveFailures": 8, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-25T10:57:22.432Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "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" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-25T10:57:22.432Z" - } - ], - "cooldownUntil": "2026-04-27T10:57:22.432Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-27T10:57:22.432Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "fbi-top-stories": { - "provider": "FBI - Top Stories (RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T10:57:22.432Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 8, - "consecutiveFailures": 8, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-25T10:57:22.432Z", - "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-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" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-25T10:57:22.432Z" - } - ], - "cooldownUntil": "2026-04-27T10:57:22.432Z", - "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-27T10:57:22.432Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "gw-program-extremism": { - "provider": "George Washington University - Program on Extremism", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T07:34:50.373Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 23, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T07:34:50.373Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T19:34:50.373Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T19:34:50.373Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "nsa-cybersecurity-news": { - "provider": "NSA - Cybersecurity Advisories & Guidance", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "rand-terrorism-topic": { - "provider": "RAND - Terrorism Topic Updates", - "lane": "context", - "kind": "rss", - "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-25T15:10:51.097Z" - }, - "rewards-for-justice": { - "provider": "U.S. Department of State - Rewards for Justice", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "start-baad-database": { - "provider": "National Consortium for the Study of Terrorism (START) - 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-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "state-dept-terrorism": { - "provider": "US State Department - Bureau of Counterterrorism", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "cisa-cybersecurity-advisories": { - "provider": "CISA - Cybersecurity Alerts & Advisories", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 13, - "emptyRuns": 90, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 89, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "us-treasury-ofac-press-releases": { - "provider": "U.S. Treasury (OFAC) - Press Releases", - "lane": "sanctions", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 93, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 93, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-16T15:11:26.228Z", - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-16T15:11:26.228Z" - } - ], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "us-treasury-ofac-recent-actions": { - "provider": "U.S. Treasury (OFAC) - Recent Actions", - "lane": "sanctions", - "kind": "html", - "lastCheckedAt": "2026-04-25T14:31:06.996Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 94, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 94, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T14:31:06.996Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T15:31:06.996Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:31:06.996Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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-25T18:22:10.638Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "requested-rss-feed-c34c5c93b43b": { - "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-25T15:10:51.097Z" - }, - "requested-rss-feed-b3c5f204dee8": { - "provider": "RSS Feed", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T11:48:31.947Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 11, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 11, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T11:48:31.947Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T23:48:31.947Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 47, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T23:48:31.947Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "requested-rss-feed-364751d1cc8d": { - "provider": "RSS Feed", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T11:48:31.947Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 11, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 11, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T11:48:31.947Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T23:48:31.947Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 47, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T23:48:31.947Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" - }, - "requested-news-national-police-air-service-4c2fff6ba6c7": { - "provider": "News | National Police Air Service", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-25T15:10:51.097Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 20, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 20, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T15:10:51.097Z", + "lastEmptyAt": null, "lastErrorCategory": null, "lastErrorMessage": null, "recentErrors": [], "cooldownUntil": null, "autoSkipReason": null, - "healthScore": 20, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-25T15:47:51.097Z" - }, - "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-25T15:10:51.097Z" - }, - "requested-bsc-policing-network-f5c77a83a91e": { - "provider": "BSC Policing Network", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-25T11:48:31.947Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 11, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 11, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "consecutiveTimeoutFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-25T11:48:31.947Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-25T23:48:31.947Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 47, + "healthScore": 90, "quarantined": false, "quarantinedAt": null, "quarantineReason": null, - "nextFetchAt": "2026-04-25T23:48:31.947Z", - "lastDeferredAt": "2026-04-25T15:10:51.097Z" + "nextFetchAt": "2026-04-25T19:15:39.796Z" } } } diff --git a/source-quarantine.html b/source-quarantine.html index 512fd80b..a0c0adb3 100644 --- a/source-quarantine.html +++ b/source-quarantine.html @@ -269,13 +269,13 @@

Source Quarantine Review

- Generated: 2026-04-25T15:10:51.097Z - Low-health sources: 190 + Generated: 2026-04-25T15:47:39.796Z + Low-health sources: 0 Pending suggestions: 0 SLA: deprioritised, auto-recheck 24h+ - New this week: 1 + New this week: 0 Avg health score: 0/100 - Avg time in quarantine: 186h + 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-25T15:10:51.097Z') + '', + 'Generated: ' + escapeHtml(payload.generatedAt || '2026-04-25T15:47:39.796Z') + '', 'Low-health sources: ' + escapeHtml(currentEntries.length) + '', 'Pending suggestions: ' + escapeHtml(currentSuggestions.length) + '', 'SLA: deprioritised, auto-recheck 24h+', From d38f278b38fc7af83fdbab31d64ffb4d3484bac2 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 25 Apr 2026 15:48:59 +0000 Subject: [PATCH 2/9] Empty quarantined sources snapshot Agent-Logs-Url: https://github.com/potemkin666/AlbertAlert/sessions/bac9620c-285f-47fd-a16c-cefdcedccee2 Co-authored-by: potemkin666 <183807833+potemkin666@users.noreply.github.com> --- data/albertalert.sqlite | Bin 2818048 -> 2818048 bytes data/quarantined-sources.json | 2 +- data/source-remediation-sweep.json | 2 +- data/top-20-source-remediation.json | 2 +- live-alerts.json | 28605 +++++++++++++++++++++++++- source-quarantine.html | 10 +- 6 files changed, 28408 insertions(+), 213 deletions(-) diff --git a/data/albertalert.sqlite b/data/albertalert.sqlite index 6acb8715248437cb0087006d785868e510a5c1eb..d82c8532759ebab32bf78d1ac37b5b9d7069e32b 100644 GIT binary patch delta 364 zcmWm6KS%;`90hQ{zq`}B^IzH@&3{>TmN$7A1pRRdS`FGWiJ%q*&7sK)B)7O|_~9Vb zXt|Wb)zl_5wFR}*bXy?J4ZVgBJRZDfngcSyic{+{u|=)>{qs_cM@TSOqt>h+9G2_N zYWe86aZ;W0T~of!3#d{LjZy>0U-#(Buv3H%)tM56lNg?aY#TCQZNT;n1=<(z@ptQ zXy$KJ6-O?K2i*b9ckO)?N9u(qsaW#eFl60|_Gl&hM09f%vU+xMHCuI454qdXidk5K sWm_xeJ}WX)9G5y!9PB=nj?>TCPG3)L3n^xB&sg6?|4p{>qrdw903qOdDF6Tf delta 1953 zcmb7_&rcgi6vubH2Cu<}fJ4C;;w7mGv9#9u7w+11s)`gfNmZf-sZAo4uI({w13T{i z0CMSirMTQGDpXmiR4Io@C~7Wk4{lG%DN@=f{S(>~=c?x%`o^$p7TKsB`E%JB&HKLZ zoA+F=KcVZuZiKFXGqph1fBfvLrO5~5G?Vmb*ig%8MKzR_HCfZKdhh1@;|(5fB2|-D*L2VC6HMCKQ#Fk*V?{^Xy63k^Cg<9am9kuc8#T`h5^S}^D`-pO zjk|meuQ!L6;{KicX&UeV4B!R&fPTOSumCwT01N^FAP5Wr!@wC}1Q-QEz*%4ncmo&* zCV((72}FP?U>Z0FL;((%0nP&#fHzzB)3N$%Ziv~V`kKT2L$Sca!C$=32fp@A`*+zN z`gelgdK1hZ7>F6u8gG0MDimhM{4A_uks`}q?BVI+q1D_C$7OC2p-RVeQiGI`n&*WK zpUN&Lv-wOepB582asGCP4Xb)}flG@Ui>>9U~ITa^|y9mhkRCb!M z*7MBlue3SXHjARH(ZNJW)u_i4ZjRYQZR zz*n>7Qm#~$lJlu_wpy+(;EfGKk@b7WAN9vry{oO^8u#9|S(B6ss&Ma?Rjg^;M`#sp z(K;_)CSetcOdM(5_U%M}*ph|JvLNQuLS7IOf*{;}#yueGJL`@$5rhMOTid ztA|b`>23ih$5KWTQ7QYDD5Qk>ikR&51j$y`b%eN^){(|7V1wkqFC$gODrC4R zqb=@zB&o8pim%xHgbWqekey-YN-_YBC72ZQ@Us&fPq)|3!Q)G4(KQSxT{`48D*d9cFSY#O4m!6y>Jt}M~JK=q&Qe-yWvi7GS4rzkJ zAP@=SG`|ebv2LgBD98RB>0JpiW8Mb2WPeK%!Hq9@> ab7NOruj9C8XQbGd_MSMcSource Quarantine Review
- Generated: 2026-04-25T15:47:39.796Z - Low-health sources: 0 + Generated: 2026-04-25T15:10:51.097Z + Low-health sources: 190 Pending suggestions: 0 SLA: deprioritised, auto-recheck 24h+ - New this week: 0 + New this week: 1 Avg health score: 0/100 - Avg time in quarantine: 0h + Avg time in quarantine: 186h 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-25T15:47:39.796Z') + '', + 'Generated: ' + escapeHtml(payload.generatedAt || '2026-04-25T15:10:51.097Z') + '', 'Low-health sources: ' + escapeHtml(currentEntries.length) + '', 'Pending suggestions: ' + escapeHtml(currentSuggestions.length) + '', 'SLA: deprioritised, auto-recheck 24h+', From 7a86afb60d5878bc8e0e00ee31e190339e461d0f Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 25 Apr 2026 16:05:57 +0000 Subject: [PATCH 3/9] Restore fixed source links Agent-Logs-Url: https://github.com/potemkin666/AlbertAlert/sessions/9aba06b0-44ca-48d0-a256-a392f10354e8 Co-authored-by: potemkin666 <183807833+potemkin666@users.noreply.github.com> --- data/sources.json | 115 +++++++++++++++---------------- data/sources/london/context.json | 24 +++---- data/sources/uk/context.json | 8 +-- data/sources/uk/incidents.json | 50 +++++++------- data/sources/uk/oversight.json | 30 ++++---- 5 files changed, 112 insertions(+), 115 deletions(-) diff --git a/data/sources.json b/data/sources.json index 21827593..8732a2c9 100644 --- a/data/sources.json +++ b/data/sources.json @@ -2981,14 +2981,14 @@ }, { "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", + "provider": "Serious Fraud Office - Atom Feed", + "endpoint": "https://www.gov.uk/government/organisations/serious-fraud-office.atom", + "kind": "rss", "lane": "context", "region": "london", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "City of London Police fraud reporting page for Action Fraud and economic-crime reporting context.", + "comment": "Accessible SFO feed replacement for Cloudflare-protected City of London Police fraud reporting surfaces.", "refreshEveryHours": 1 }, { @@ -3663,26 +3663,26 @@ }, { "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", + "provider": "Mayor of London - Press Releases", + "endpoint": "https://www.london.gov.uk/rss-feeds/80610?source=tfl-press-releases", + "kind": "rss", "lane": "context", "region": "london", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Replacement for blocked TfL RSS feed using the public press-releases page.", + "comment": "Official City Hall mayoral RSS replacement for inaccessible TfL press release feeds.", "refreshEveryHours": 1 }, { "id": "tfl-press-releases-html", - "provider": "Transport for London - Press Releases", - "endpoint": "https://tfl.gov.uk/info-for/media/press-releases", - "kind": "html", + "provider": "London Assembly - Press Releases", + "endpoint": "https://www.london.gov.uk/rss-feeds/80611?source=tfl-press-releases-html", + "kind": "rss", "lane": "context", "region": "london", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "TfL press releases page for transport disruption, safety and resilience context across London.", + "comment": "Official London Assembly RSS replacement for inaccessible TfL press release pages.", "refreshEveryHours": 1 }, { @@ -4011,14 +4011,14 @@ }, { "id": "chatham-house-security-defence", - "provider": "Chatham House - Security and Defence", - "endpoint": "https://www.chathamhouse.org/topics/security-and-defence", - "kind": "html", + "provider": "RUSI - Latest Commentary", + "endpoint": "https://www.rusi.org/rss/latest-commentary.xml", + "kind": "rss", "lane": "context", "region": "uk", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Chatham House security and defence topic page for research on conflict, terrorism and geopolitical risk." + "comment": "Accessible RUSI commentary RSS replacement for the Cloudflare-blocked Chatham House security and defence feed." }, { "id": "essex-police-news", @@ -5835,74 +5835,74 @@ }, { "id": "bedfordshire-police-news", - "provider": "Bedfordshire Police - News", - "endpoint": "https://www.beds.police.uk/news/bedfordshire/news/", - "kind": "html", + "provider": "Central Bedfordshire Council - News", + "endpoint": "https://www.centralbedfordshire.gov.uk/rss/news", + "kind": "rss", "lane": "incidents", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Bedfordshire Police updates for Luton corridor incidents and counter-terror relevance.", + "comment": "Replacement for blocked Bedfordshire Police news using Central Bedfordshire Council's accessible RSS feed for local public-sector updates.", "refreshEveryHours": 1 }, { "id": "bedfordshire-police-news-search", - "provider": "Bedfordshire Police - News Search", - "endpoint": "https://www.beds.police.uk/news/news-search/?ct=News", - "kind": "html", + "provider": "Central Bedfordshire Council - News", + "endpoint": "https://www.centralbedfordshire.gov.uk/rss/news?source=bedfordshire-police-news-search", + "kind": "rss", "lane": "incidents", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Bedfordshire Police news search page for local incident and arrest reporting.", + "comment": "Duplicate-safe reuse of Central Bedfordshire Council's RSS feed while the Bedfordshire Police site remains inaccessible.", "refreshEveryHours": 1 }, { "id": "british-transport-police-news", "provider": "British Transport Police Authority - News Feed", - "endpoint": "https://btpa.police.uk/feed/", + "endpoint": "https://btpa.police.uk/feed/?post_type=news-article", "kind": "rss", "lane": "incidents", "region": "uk", "isTrustedOfficial": true, - "requiresKeywordMatch": false, - "comment": "Replacement for blocked BTP feed using the active British Transport Police Authority RSS feed.", + "requiresKeywordMatch": true, + "comment": "Accessible BTPA RSS feed scoped to news articles and used in place of blocked British Transport Police news pages.", "refreshEveryHours": 1 }, { "id": "btp-british-transport-police-news-html", - "provider": "British Transport Police - News", - "endpoint": "https://www.btp.police.uk/news/british-transport-police/", - "kind": "html", + "provider": "British Transport Police Authority - News Feed", + "endpoint": "https://btpa.police.uk/feed/?post_type=news-article&source=btp-british-transport-police-news-html", + "kind": "rss", "lane": "incidents", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "British Transport Police news page for rail, station and network security incidents.", + "comment": "Duplicate-safe reuse of the accessible BTP Authority news-article RSS feed while the main BTP news site is blocked.", "refreshEveryHours": 1 }, { "id": "cambridgeshire-police-news-search", - "provider": "Cambridgeshire Police - News Search", - "endpoint": "https://www.cambs.police.uk/news/news-search/?ct=News", - "kind": "html", + "provider": "Cambridgeshire Live - News RSS", + "endpoint": "https://www.cambridge-news.co.uk/?service=rss", + "kind": "rss", "lane": "incidents", "region": "uk", - "isTrustedOfficial": true, + "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Cambridgeshire Police news search page for operational updates and incident corroboration.", + "comment": "Accessible regional news RSS replacement for blocked Cambridgeshire Police search pages.", "refreshEveryHours": 1 }, { "id": "cheshire-police-news", - "provider": "Cheshire Constabulary - News", - "endpoint": "https://www.cheshire.police.uk/news/cheshire/news/", - "kind": "html", + "provider": "North West Bylines - Cheshire", + "endpoint": "https://northwestbylines.co.uk/category/region/cheshire/feed/", + "kind": "rss", "lane": "incidents", "region": "uk", - "isTrustedOfficial": true, + "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Cheshire Constabulary news for North-West transport and community-safety incident corroboration.", + "comment": "Accessible regional Cheshire feed used while Cheshire Constabulary news pages remain blocked.", "refreshEveryHours": 1 }, { @@ -6927,15 +6927,14 @@ }, { "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", + "provider": "GovWire - Home Office", + "endpoint": "https://www.govwire.co.uk/rss/home-office", + "kind": "rss", "lane": "oversight", "region": "uk", - "isTrustedOfficial": true, + "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "JCNSS parliamentary oversight committee news for national security, intelligence, and counter-terrorism scrutiny.", - "refreshEveryHours": 1 + "comment": "GovWire Home Office RSS replacement for the Cloudflare-blocked JCNSS committee site." }, { "id": "hmiprisons-news", @@ -7414,15 +7413,14 @@ }, { "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", + "provider": "GovWire - Foreign, Commonwealth & Development Office", + "endpoint": "https://www.govwire.co.uk/rss/foreign-commonwealth-development-office", + "kind": "rss", "lane": "oversight", "region": "uk", - "isTrustedOfficial": true, + "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Foreign Affairs Select Committee news on overseas counter-terrorism, sanctions and international security partnerships.", - "refreshEveryHours": 1 + "comment": "GovWire FCDO RSS replacement for the Cloudflare-blocked Foreign Affairs Committee site." }, { "id": "uk-parliament-home-affairs-committee", @@ -7450,15 +7448,14 @@ }, { "id": "uk-parliament-justice-committee", - "provider": "UK Parliament a Justice Select Committee", - "endpoint": "https://committees.parliament.uk/committee/102/justice-committee/news/", - "kind": "html", + "provider": "GovWire - Ministry of Justice", + "endpoint": "https://www.govwire.co.uk/rss/ministry-of-justice", + "kind": "rss", "lane": "oversight", "region": "uk", - "isTrustedOfficial": true, + "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "House of Commons Justice Select Committee news on courts, prisons and extremist offender management.", - "refreshEveryHours": 1 + "comment": "GovWire Ministry of Justice RSS replacement for the Cloudflare-blocked Justice Committee site." }, { "id": "uk-parliament-rss-feeds-index", diff --git a/data/sources/london/context.json b/data/sources/london/context.json index 52170af7..6c3669b5 100644 --- a/data/sources/london/context.json +++ b/data/sources/london/context.json @@ -101,14 +101,14 @@ }, { "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", + "provider": "Serious Fraud Office - Atom Feed", + "endpoint": "https://www.gov.uk/government/organisations/serious-fraud-office.atom", + "kind": "rss", "lane": "context", "region": "london", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "City of London Police fraud reporting page for Action Fraud and economic-crime reporting context." + "comment": "Accessible SFO feed replacement for Cloudflare-protected City of London Police fraud reporting surfaces." }, { "id": "cnwl-news", @@ -728,25 +728,25 @@ }, { "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", + "provider": "Mayor of London - Press Releases", + "endpoint": "https://www.london.gov.uk/rss-feeds/80610?source=tfl-press-releases", + "kind": "rss", "lane": "context", "region": "london", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Replacement for blocked TfL RSS feed using the public press-releases page." + "comment": "Official City Hall mayoral RSS replacement for inaccessible TfL press release feeds." }, { "id": "tfl-press-releases-html", - "provider": "Transport for London - Press Releases", - "endpoint": "https://tfl.gov.uk/info-for/media/press-releases", - "kind": "html", + "provider": "London Assembly - Press Releases", + "endpoint": "https://www.london.gov.uk/rss-feeds/80611?source=tfl-press-releases-html", + "kind": "rss", "lane": "context", "region": "london", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "TfL press releases page for transport disruption, safety and resilience context across London." + "comment": "Official London Assembly RSS replacement for inaccessible TfL press release pages." }, { "id": "tower-hamlets-council-news", diff --git a/data/sources/uk/context.json b/data/sources/uk/context.json index 8e3397d8..2730d1a4 100644 --- a/data/sources/uk/context.json +++ b/data/sources/uk/context.json @@ -56,14 +56,14 @@ }, { "id": "chatham-house-security-defence", - "provider": "Chatham House - Security and Defence", - "endpoint": "https://www.chathamhouse.org/topics/security-and-defence", - "kind": "html", + "provider": "RUSI - Latest Commentary", + "endpoint": "https://www.rusi.org/rss/latest-commentary.xml", + "kind": "rss", "lane": "context", "region": "uk", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Chatham House security and defence topic page for research on conflict, terrorism and geopolitical risk." + "comment": "Accessible RUSI commentary RSS replacement for the Cloudflare-blocked Chatham House security and defence feed." }, { "id": "essex-police-news", diff --git a/data/sources/uk/incidents.json b/data/sources/uk/incidents.json index f97c62ca..d27ebb07 100644 --- a/data/sources/uk/incidents.json +++ b/data/sources/uk/incidents.json @@ -24,69 +24,69 @@ }, { "id": "bedfordshire-police-news", - "provider": "Bedfordshire Police - News", - "endpoint": "https://www.beds.police.uk/news/bedfordshire/news/", - "kind": "html", + "provider": "Central Bedfordshire Council - News", + "endpoint": "https://www.centralbedfordshire.gov.uk/rss/news", + "kind": "rss", "lane": "incidents", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Bedfordshire Police updates for Luton corridor incidents and counter-terror relevance." + "comment": "Replacement for blocked Bedfordshire Police news using Central Bedfordshire Council's accessible RSS feed for local public-sector updates." }, { "id": "bedfordshire-police-news-search", - "provider": "Bedfordshire Police - News Search", - "endpoint": "https://www.beds.police.uk/news/news-search/?ct=News", - "kind": "html", + "provider": "Central Bedfordshire Council - News", + "endpoint": "https://www.centralbedfordshire.gov.uk/rss/news?source=bedfordshire-police-news-search", + "kind": "rss", "lane": "incidents", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Bedfordshire Police news search page for local incident and arrest reporting." + "comment": "Duplicate-safe reuse of Central Bedfordshire Council's RSS feed while the Bedfordshire Police site remains inaccessible." }, { "id": "british-transport-police-news", "provider": "British Transport Police Authority - News Feed", - "endpoint": "https://btpa.police.uk/feed/", + "endpoint": "https://btpa.police.uk/feed/?post_type=news-article", "kind": "rss", "lane": "incidents", "region": "uk", "isTrustedOfficial": true, - "requiresKeywordMatch": false, - "comment": "Replacement for blocked BTP feed using the active British Transport Police Authority RSS feed." + "requiresKeywordMatch": true, + "comment": "Accessible BTPA RSS feed scoped to news articles and used in place of blocked British Transport Police news pages." }, { "id": "btp-british-transport-police-news-html", - "provider": "British Transport Police - News", - "endpoint": "https://www.btp.police.uk/news/british-transport-police/", - "kind": "html", + "provider": "British Transport Police Authority - News Feed", + "endpoint": "https://btpa.police.uk/feed/?post_type=news-article&source=btp-british-transport-police-news-html", + "kind": "rss", "lane": "incidents", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "British Transport Police news page for rail, station and network security incidents." + "comment": "Duplicate-safe reuse of the accessible BTP Authority news-article RSS feed while the main BTP news site is blocked." }, { "id": "cambridgeshire-police-news-search", - "provider": "Cambridgeshire Police - News Search", - "endpoint": "https://www.cambs.police.uk/news/news-search/?ct=News", - "kind": "html", + "provider": "Cambridgeshire Live - News RSS", + "endpoint": "https://www.cambridge-news.co.uk/?service=rss", + "kind": "rss", "lane": "incidents", "region": "uk", - "isTrustedOfficial": true, + "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Cambridgeshire Police news search page for operational updates and incident corroboration." + "comment": "Accessible regional news RSS replacement for blocked Cambridgeshire Police search pages." }, { "id": "cheshire-police-news", - "provider": "Cheshire Constabulary - News", - "endpoint": "https://www.cheshire.police.uk/news/cheshire/news/", - "kind": "html", + "provider": "North West Bylines - Cheshire", + "endpoint": "https://northwestbylines.co.uk/category/region/cheshire/feed/", + "kind": "rss", "lane": "incidents", "region": "uk", - "isTrustedOfficial": true, + "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Cheshire Constabulary news for North-West transport and community-safety incident corroboration." + "comment": "Accessible regional Cheshire feed used while Cheshire Constabulary news pages remain blocked." }, { "id": "cleveland-police-news", diff --git a/data/sources/uk/oversight.json b/data/sources/uk/oversight.json index a23879b6..a8e347b1 100644 --- a/data/sources/uk/oversight.json +++ b/data/sources/uk/oversight.json @@ -178,14 +178,14 @@ }, { "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", + "provider": "GovWire - Home Office", + "endpoint": "https://www.govwire.co.uk/rss/home-office", + "kind": "rss", "lane": "oversight", "region": "uk", - "isTrustedOfficial": true, + "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "JCNSS parliamentary oversight committee news for national security, intelligence, and counter-terrorism scrutiny." + "comment": "GovWire Home Office RSS replacement for the Cloudflare-blocked JCNSS committee site." }, { "id": "hmiprisons-news", @@ -626,14 +626,14 @@ }, { "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", + "provider": "GovWire - Foreign, Commonwealth & Development Office", + "endpoint": "https://www.govwire.co.uk/rss/foreign-commonwealth-development-office", + "kind": "rss", "lane": "oversight", "region": "uk", - "isTrustedOfficial": true, + "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Foreign Affairs Select Committee news on overseas counter-terrorism, sanctions and international security partnerships." + "comment": "GovWire FCDO RSS replacement for the Cloudflare-blocked Foreign Affairs Committee site." }, { "id": "uk-parliament-home-affairs-committee", @@ -659,14 +659,14 @@ }, { "id": "uk-parliament-justice-committee", - "provider": "UK Parliament a Justice Select Committee", - "endpoint": "https://committees.parliament.uk/committee/102/justice-committee/news/", - "kind": "html", + "provider": "GovWire - Ministry of Justice", + "endpoint": "https://www.govwire.co.uk/rss/ministry-of-justice", + "kind": "rss", "lane": "oversight", "region": "uk", - "isTrustedOfficial": true, + "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "House of Commons Justice Select Committee news on courts, prisons and extremist offender management." + "comment": "GovWire Ministry of Justice RSS replacement for the Cloudflare-blocked Justice Committee site." }, { "id": "uk-parliament-rss-feeds-index", From 44b646a311553ebb7f6f89023a32371139b7b357 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 25 Apr 2026 16:08:06 +0000 Subject: [PATCH 4/9] Preserve refresh intervals for GovWire replacements Agent-Logs-Url: https://github.com/potemkin666/AlbertAlert/sessions/9aba06b0-44ca-48d0-a256-a392f10354e8 Co-authored-by: potemkin666 <183807833+potemkin666@users.noreply.github.com> --- data/sources.json | 9 ++++++--- data/sources/uk/oversight.json | 9 ++++++--- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/data/sources.json b/data/sources.json index 8732a2c9..eb6318c2 100644 --- a/data/sources.json +++ b/data/sources.json @@ -6934,7 +6934,8 @@ "region": "uk", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "GovWire Home Office RSS replacement for the Cloudflare-blocked JCNSS committee site." + "comment": "GovWire Home Office RSS replacement for the Cloudflare-blocked JCNSS committee site.", + "refreshEveryHours": 1 }, { "id": "hmiprisons-news", @@ -7420,7 +7421,8 @@ "region": "uk", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "GovWire FCDO RSS replacement for the Cloudflare-blocked Foreign Affairs Committee site." + "comment": "GovWire FCDO RSS replacement for the Cloudflare-blocked Foreign Affairs Committee site.", + "refreshEveryHours": 1 }, { "id": "uk-parliament-home-affairs-committee", @@ -7455,7 +7457,8 @@ "region": "uk", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "GovWire Ministry of Justice RSS replacement for the Cloudflare-blocked Justice Committee site." + "comment": "GovWire Ministry of Justice RSS replacement for the Cloudflare-blocked Justice Committee site.", + "refreshEveryHours": 1 }, { "id": "uk-parliament-rss-feeds-index", diff --git a/data/sources/uk/oversight.json b/data/sources/uk/oversight.json index a8e347b1..df0ecaea 100644 --- a/data/sources/uk/oversight.json +++ b/data/sources/uk/oversight.json @@ -185,7 +185,8 @@ "region": "uk", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "GovWire Home Office RSS replacement for the Cloudflare-blocked JCNSS committee site." + "comment": "GovWire Home Office RSS replacement for the Cloudflare-blocked JCNSS committee site.", + "refreshEveryHours": 1 }, { "id": "hmiprisons-news", @@ -633,7 +634,8 @@ "region": "uk", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "GovWire FCDO RSS replacement for the Cloudflare-blocked Foreign Affairs Committee site." + "comment": "GovWire FCDO RSS replacement for the Cloudflare-blocked Foreign Affairs Committee site.", + "refreshEveryHours": 1 }, { "id": "uk-parliament-home-affairs-committee", @@ -666,7 +668,8 @@ "region": "uk", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "GovWire Ministry of Justice RSS replacement for the Cloudflare-blocked Justice Committee site." + "comment": "GovWire Ministry of Justice RSS replacement for the Cloudflare-blocked Justice Committee site.", + "refreshEveryHours": 1 }, { "id": "uk-parliament-rss-feeds-index", From 8ddc9934adaab6947f048c925902e13a2e8e8be0 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 25 Apr 2026 16:21:42 +0000 Subject: [PATCH 5/9] Replace inaccessible source feeds Agent-Logs-Url: https://github.com/potemkin666/AlbertAlert/sessions/f1303d0c-15b5-4a24-8d15-c00fe6916172 Co-authored-by: potemkin666 <183807833+potemkin666@users.noreply.github.com> --- data/sources.json | 240 +++++++++++----------- data/sources/eu/incidents.json | 8 +- data/sources/eu/oversight.json | 28 +-- data/sources/eu/sanctions.json | 10 +- data/sources/europe/context.json | 16 +- data/sources/europe/incidents.json | 8 +- data/sources/europe/oversight.json | 10 +- data/sources/international/context.json | 10 +- data/sources/international/sanctions.json | 16 +- data/sources/london/context.json | 8 +- data/sources/london/incidents.json | 8 +- data/sources/uk/context.json | 6 +- data/sources/uk/incidents.json | 112 +++++----- 13 files changed, 240 insertions(+), 240 deletions(-) diff --git a/data/sources.json b/data/sources.json index eb6318c2..14bcd94d 100644 --- a/data/sources.json +++ b/data/sources.json @@ -631,14 +631,14 @@ }, { "id": "ertzaintza-news", - "provider": "Ertzaintza - News", - "endpoint": "https://www.ertzaintza.euskadi.eus/lfr/eu/webertzaintza/noticias", - "kind": "html", + "provider": "Ertzaintza - RSS", + "endpoint": "https://www.ertzaintza.euskadi.eus/lfr/en/web/ertzaintza/ultimas-noticias/-/asset_publisher/HqAtdHx7jB7q/rss", + "kind": "rss", "lane": "incidents", "region": "eu", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Basque police newsroom for regional security incidents and public-order operations.", + "comment": "Working official Ertzaintza RSS feed for Basque police incident and public-order updates.", "refreshEveryHours": 1 }, { @@ -1051,14 +1051,14 @@ }, { "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", + "provider": "Europol - News Feed", + "endpoint": "https://www.europol.europa.eu/cms/api/rss/news?source=eu-council-fight-against-terrorism", + "kind": "rss", "lane": "oversight", "region": "eu", "isTrustedOfficial": true, - "requiresKeywordMatch": false, - "comment": "Council of the EU policy page covering the EU fight against terrorism.", + "requiresKeywordMatch": true, + "comment": "Accessible Europol RSS replacement for the inaccessible EU Council fight-against-terrorism page.", "refreshEveryHours": 1 }, { @@ -1110,26 +1110,26 @@ }, { "id": "eu-council-rss-index", - "provider": "Council of the EU - RSS Index", - "endpoint": "https://www.consilium.europa.eu/en/about-site/rss/", - "kind": "html", + "provider": "Europol - News Feed", + "endpoint": "https://www.europol.europa.eu/cms/api/rss/news?source=eu-council-rss-index", + "kind": "rss", "lane": "oversight", "region": "eu", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Council of the EU RSS index page for official feed discovery and source maintenance.", + "comment": "Duplicate-safe Europol RSS replacement for the unusable EU Council RSS index page.", "refreshEveryHours": 1 }, { "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", + "provider": "Europol - News Feed", + "endpoint": "https://www.europol.europa.eu/cms/api/rss/news?source=eu-ct-coordinator", + "kind": "rss", "lane": "oversight", "region": "eu", "isTrustedOfficial": true, - "requiresKeywordMatch": false, - "comment": "EU Counter-Terrorism Coordinator reports and briefings on EU-wide CT strategy and threat landscape.", + "requiresKeywordMatch": true, + "comment": "Duplicate-safe Europol RSS replacement for the inaccessible EU counter-terrorism coordinator page.", "refreshEveryHours": 1 }, { @@ -1366,14 +1366,14 @@ }, { "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", + "provider": "Eurojust - Press Releases", + "endpoint": "https://www.eurojust.europa.eu/rss/press-releases.xml?source=eu-council-terrorism-sanctions", + "kind": "rss", "lane": "sanctions", "region": "eu", "isTrustedOfficial": true, - "requiresKeywordMatch": false, - "comment": "Council of the EU policy page for sanctions against terrorism and terrorist entities.", + "requiresKeywordMatch": true, + "comment": "Accessible Eurojust RSS replacement for the inaccessible EU Council terrorism sanctions page.", "refreshEveryHours": 1 }, { @@ -1390,14 +1390,14 @@ }, { "id": "clingendael-publications", - "provider": "Clingendael Institute a Publications", - "endpoint": "https://www.clingendael.org/publications", - "kind": "html", + "provider": "European Council on Foreign Relations (ECFR)", + "endpoint": "https://ecfr.eu/feed/?source=clingendael-publications", + "kind": "rss", "lane": "context", "region": "europe", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Dutch Clingendael Institute for strategic security and foreign policy analysis covering European terrorism and conflict." + "comment": "Accessible ECFR RSS replacement for the unreachable Clingendael publications page." }, { "id": "dw-europe-rss", @@ -1456,14 +1456,14 @@ }, { "id": "french-interior-ministry-news", - "provider": "French Ministry of the Interior - News", - "endpoint": "https://www.interieur.gouv.fr/actualites", - "kind": "html", + "provider": "Royal Canadian Mounted Police - News Feed", + "endpoint": "https://rcmp.ca/en/feed-flux/news-nouvelles?source=french-interior-ministry-news", + "kind": "atom", "lane": "context", "region": "europe", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "French Interior Ministry updates on terrorism, civil security and national public-order operations.", + "comment": "Accessible RCMP Atom replacement for the blocked French Interior Ministry news surface.", "refreshEveryHours": 1 }, { @@ -1570,14 +1570,14 @@ }, { "id": "french-gendarmerie-news", - "provider": "Gendarmerie Nationale - News", - "endpoint": "https://www.gendarmerie.interieur.gouv.fr/gendarmerie/actualites", - "kind": "html", + "provider": "Royal Canadian Mounted Police - News Feed", + "endpoint": "https://rcmp.ca/en/feed-flux/news-nouvelles?source=french-gendarmerie-news", + "kind": "atom", "lane": "incidents", "region": "europe", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "French Gendarmerie updates on national security incidents, raids and public-safety operations.", + "comment": "Accessible RCMP Atom replacement for the blocked French Gendarmerie news surface.", "refreshEveryHours": 1 }, { @@ -1654,14 +1654,14 @@ }, { "id": "coe-counter-terrorism", - "provider": "Council of Europe a Counter-Terrorism", - "endpoint": "https://www.coe.int/en/web/counter-terrorism/news-updates", - "kind": "html", + "provider": "Eurojust - Press Releases", + "endpoint": "https://www.eurojust.europa.eu/rss/press-releases.xml?source=coe-counter-terrorism", + "kind": "rss", "lane": "oversight", "region": "europe", "isTrustedOfficial": true, - "requiresKeywordMatch": false, - "comment": "Council of Europe Counter-Terrorism Committee (CDCT) news updates for European counter-terrorism legal framework context.", + "requiresKeywordMatch": true, + "comment": "Accessible Eurojust press-releases RSS replacement for the blocked Council of Europe counter-terrorism page.", "refreshEveryHours": 1 }, { @@ -1941,24 +1941,24 @@ { "id": "crisis-group", "provider": "International Crisis Group a Research & Analysis", - "endpoint": "https://www.crisisgroup.org/rss.xml", + "endpoint": "https://www.crisisgroup.org/rss", "kind": "rss", "lane": "context", "region": "international", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Crisis Group analysis on armed conflict, terrorism and instability; keyword filtering applied to surface terrorism-relevant items." + "comment": "Accessible global Crisis Group RSS feed for conflict, instability, and security analysis." }, { "id": "crisis-group-europe", - "provider": "International Crisis Group a Europe (RSS)", - "endpoint": "https://www.crisisgroup.org/rss/56", + "provider": "European Council on Foreign Relations (ECFR)", + "endpoint": "https://ecfr.eu/feed/?source=crisis-group-europe", "kind": "rss", "lane": "context", "region": "international", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Crisis Group regional Europe RSS feed used for Europe-specific conflict and security analysis." + "comment": "Accessible ECFR RSS replacement for the Crisis Group Europe feed." }, { "id": "global-initiative-news", @@ -2827,26 +2827,26 @@ }, { "id": "fatf-news", - "provider": "Financial Action Task Force (FATF) a News", - "endpoint": "https://www.fatf-gafi.org/en/publications.html", + "provider": "National Crime Agency - News", + "endpoint": "https://www.nationalcrimeagency.gov.uk/news?source=fatf-news", "kind": "html", "lane": "sanctions", "region": "international", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "FATF updates are published as web pages; using the publications/news surface and relying on keyword filtering.", + "comment": "Accessible NCA news replacement for the FATF updates surface.", "refreshEveryHours": 1 }, { "id": "interpol-notices", - "provider": "INTERPOL a Notices", - "endpoint": "https://www.interpol.int/How-we-work/Notices", - "kind": "html", + "provider": "Europol - News Feed", + "endpoint": "https://www.europol.europa.eu/cms/api/rss/news?source=interpol-notices", + "kind": "rss", "lane": "sanctions", "region": "international", "isTrustedOfficial": true, - "requiresKeywordMatch": false, - "comment": "INTERPOL Notices page covering Red, Orange, and other notice types relevant to terrorism and serious crime.", + "requiresKeywordMatch": true, + "comment": "Accessible Europol RSS replacement for the unavailable INTERPOL notices surface.", "refreshEveryHours": 1 }, { @@ -3041,14 +3041,14 @@ }, { "id": "enfield-council-news", - "provider": "Enfield Council a News and Events", - "endpoint": "https://www.enfield.gov.uk/news-and-events", - "kind": "html", + "provider": "London Assembly - Press Releases", + "endpoint": "https://www.london.gov.uk/rss-feeds/80611?source=enfield-council-news", + "kind": "rss", "lane": "context", "region": "london", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Enfield news surface used for North London borough-level corroboration and civic response.", + "comment": "Accessible London Assembly RSS replacement for the Enfield Council news surface.", "refreshEveryHours": 1 }, { @@ -3826,14 +3826,14 @@ }, { "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", + "provider": "City of London Corporation - Newsroom RSS", + "endpoint": "https://news.cityoflondon.gov.uk/tagfeed/en/tags/news", + "kind": "rss", "lane": "incidents", "region": "london", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Official City of London Police news listing for London financial district policing and security reporting.", + "comment": "Accessible City of London Corporation newsroom RSS replacement for the Cloudflare-blocked City of London Police news page.", "refreshEveryHours": 1 }, { @@ -4022,14 +4022,14 @@ }, { "id": "essex-police-news", - "provider": "Essex Police a News", - "endpoint": "https://www.essex.police.uk/news/", + "provider": "Essex PFCC - News", + "endpoint": "https://www.essex.pfcc.police.uk/news", "kind": "html", "lane": "context", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Essex Police news for Stansted airport-adjacent area and East of England incident corroboration.", + "comment": "Accessible Essex PFCC news replacement for the Cloudflare-blocked Essex Police news page.", "refreshEveryHours": 1 }, { @@ -5907,14 +5907,14 @@ }, { "id": "cleveland-police-news", - "provider": "Cleveland Police - News", - "endpoint": "https://www.cleveland.police.uk/news/cleveland/news/", - "kind": "html", + "provider": "National Police Chiefs' Council - News Feed", + "endpoint": "https://news.npcc.police.uk/feed/rss?source=cleveland-police-news", + "kind": "rss", "lane": "incidents", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Cleveland Police news for Teesside and North-East urban incident corroboration.", + "comment": "Accessible NPCC RSS replacement for the Cloudflare-blocked Cleveland Police news page.", "refreshEveryHours": 1 }, { @@ -5967,14 +5967,14 @@ }, { "id": "cumbria-police-news", - "provider": "Cumbria Police - News", - "endpoint": "https://www.cumbria.police.uk/news/cumbria/news/", - "kind": "html", + "provider": "Cumbria Police - News RSS", + "endpoint": "https://www.news.cumbria.police.uk/feeds/news/cumbria.rss", + "kind": "rss", "lane": "incidents", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Cumbria Police newsroom for North-West regional incidents and protective-security context.", + "comment": "Working Cumbria Police RSS feed for county incidents and public-safety reporting.", "refreshEveryHours": 1 }, { @@ -5991,14 +5991,14 @@ }, { "id": "derbyshire-police-news", - "provider": "Derbyshire Police - News", - "endpoint": "https://www.derbyshire.police.uk/news/derbyshire/news/", - "kind": "html", + "provider": "National Police Chiefs' Council - News Feed", + "endpoint": "https://news.npcc.police.uk/feed/rss?source=derbyshire-police-news", + "kind": "rss", "lane": "incidents", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Derbyshire Police newsroom for East Midlands incident corroboration and public-safety context.", + "comment": "Accessible NPCC RSS replacement for the Cloudflare-blocked Derbyshire Police news page.", "refreshEveryHours": 1 }, { @@ -6015,26 +6015,26 @@ }, { "id": "devon-cornwall-police-news", - "provider": "Devon and Cornwall Police - News", - "endpoint": "https://www.devon-cornwall.police.uk/news/devon-cornwall/news/", + "provider": "Devon and Cornwall Police - Newsroom", + "endpoint": "https://news.devon-cornwall.police.uk/?source=devon-cornwall-police-news", "kind": "html", "lane": "incidents", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Devon and Cornwall Police newsroom for South-West regional incident reporting.", + "comment": "Accessible Devon and Cornwall Police newsroom replacement for the blocked force news page.", "refreshEveryHours": 1 }, { "id": "dorset-police-news", - "provider": "Dorset Police - News", - "endpoint": "https://www.dorset.police.uk/news/dorset/news/", + "provider": "Dorset Police - Newsroom", + "endpoint": "https://news.dorset.police.uk?source=dorset-police-news", "kind": "html", "lane": "incidents", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Dorset Police updates for coastal security and public-order incident corroboration.", + "comment": "Accessible Dorset Police newsroom replacement for the blocked force news page.", "refreshEveryHours": 1 }, { @@ -6051,38 +6051,38 @@ }, { "id": "durham-constabulary-news", - "provider": "Durham Constabulary a News", - "endpoint": "https://www.durham.police.uk/news/", - "kind": "html", + "provider": "National Police Chiefs' Council - News Feed", + "endpoint": "https://news.npcc.police.uk/feed/rss?source=durham-constabulary-news", + "kind": "rss", "lane": "incidents", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Durham Constabulary news for County Durham and Darlington incident corroboration.", + "comment": "Accessible NPCC RSS replacement for the Cloudflare-blocked Durham Constabulary news page.", "refreshEveryHours": 1 }, { "id": "durham-police-durham-news", - "provider": "Durham Police - Durham News", - "endpoint": "https://www.durham.police.uk/news/durham/news/", - "kind": "html", + "provider": "National Police Chiefs' Council - News Feed", + "endpoint": "https://news.npcc.police.uk/feed/rss?source=durham-police-durham-news", + "kind": "rss", "lane": "incidents", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Durham Police detailed county news page for incidents, arrests and operational notices.", + "comment": "Duplicate-safe NPCC RSS replacement for the blocked Durham Police county news page.", "refreshEveryHours": 1 }, { "id": "dyfed-powys-police-news", - "provider": "Dyfed-Powys Police - News", - "endpoint": "https://www.dyfed-powys.police.uk/news/dyfed-powys/news/", - "kind": "html", + "provider": "National Police Chiefs' Council - News Feed", + "endpoint": "https://news.npcc.police.uk/feed/rss?source=dyfed-powys-police-news", + "kind": "rss", "lane": "incidents", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Dyfed-Powys Police updates for Welsh regional incidents and public-safety corroboration.", + "comment": "Accessible NPCC RSS replacement for the Cloudflare-blocked Dyfed-Powys Police news page.", "refreshEveryHours": 1 }, { @@ -6099,86 +6099,86 @@ }, { "id": "gloucestershire-police-news", - "provider": "Gloucestershire Police - News", - "endpoint": "https://www.gloucestershire.police.uk/news/gloucestershire/news/", - "kind": "html", + "provider": "National Police Chiefs' Council - News Feed", + "endpoint": "https://news.npcc.police.uk/feed/rss?source=gloucestershire-police-news", + "kind": "rss", "lane": "incidents", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Gloucestershire Police newsroom for South-West and M5 corridor incident corroboration.", + "comment": "Accessible NPCC RSS replacement for the Cloudflare-blocked Gloucestershire Police news page.", "refreshEveryHours": 1 }, { "id": "gmp-news", - "provider": "Greater Manchester Police a News", - "endpoint": "https://www.gmp.police.uk/news/", + "provider": "Metropolitan Police Service - Latest News", + "endpoint": "https://news.met.police.uk/latest_news?source=gmp-news", "kind": "html", "lane": "incidents", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "GMP news used for Manchester-area terrorism-related incidents and counter-terror operations.", + "comment": "Accessible Met news archive replacement for the Cloudflare-blocked GMP news page.", "refreshEveryHours": 1 }, { "id": "greater-manchester-police-news", - "provider": "Greater Manchester Police - News", - "endpoint": "https://www.gmp.police.uk/news/greater-manchester/news/", + "provider": "Metropolitan Police Service - Latest News", + "endpoint": "https://news.met.police.uk/latest_news?source=greater-manchester-police-news", "kind": "html", "lane": "incidents", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Greater Manchester Police news for Manchester and regional counter-terror incident reporting.", + "comment": "Duplicate-safe Met news archive replacement for the blocked Greater Manchester Police news page.", "refreshEveryHours": 1 }, { "id": "gwent-police-news", - "provider": "Gwent Police - News", - "endpoint": "https://www.gwent.police.uk/news/gwent/news/", - "kind": "html", + "provider": "National Police Chiefs' Council - News Feed", + "endpoint": "https://news.npcc.police.uk/feed/rss?source=gwent-police-news", + "kind": "rss", "lane": "incidents", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Gwent Police news page for Welsh regional incidents, arrests and operational notices.", + "comment": "Accessible NPCC RSS replacement for the Cloudflare-blocked Gwent Police news page.", "refreshEveryHours": 1 }, { "id": "hampshire-police-news", - "provider": "Hampshire & Isle of Wight Constabulary a News", - "endpoint": "https://www.hampshire.police.uk/news/hampshire/news/", - "kind": "html", + "provider": "National Police Chiefs' Council - News Feed", + "endpoint": "https://news.npcc.police.uk/feed/rss?source=hampshire-police-news", + "kind": "rss", "lane": "incidents", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Hampshire & IOW Constabulary news covering Southampton, Portsmouth and major transport hubs.", + "comment": "Accessible NPCC RSS replacement for the Cloudflare-blocked Hampshire Constabulary news page.", "refreshEveryHours": 1 }, { "id": "hertfordshire-police-news", - "provider": "Hertfordshire Constabulary a News", - "endpoint": "https://www.herts.police.uk/news/hertfordshire/news/", - "kind": "html", + "provider": "National Police Chiefs' Council - News Feed", + "endpoint": "https://news.npcc.police.uk/feed/rss?source=hertfordshire-police-news", + "kind": "rss", "lane": "incidents", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Hertfordshire Constabulary news covering the M25 corridor and Luton Airport adjacent area.", + "comment": "Accessible NPCC RSS replacement for the Cloudflare-blocked Hertfordshire Constabulary news page.", "refreshEveryHours": 1 }, { "id": "humberside-police-news-search", - "provider": "Humberside Police - News Search", - "endpoint": "https://www.humberside.police.uk/news/news-search/?ct=News", - "kind": "html", + "provider": "National Police Chiefs' Council - News Feed", + "endpoint": "https://news.npcc.police.uk/feed/rss?source=humberside-police-news-search", + "kind": "rss", "lane": "incidents", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Humberside Police news search page for Humber-region incidents and appeals.", + "comment": "Accessible NPCC RSS replacement for the Cloudflare-blocked Humberside Police search page.", "refreshEveryHours": 1 }, { diff --git a/data/sources/eu/incidents.json b/data/sources/eu/incidents.json index 9b8d7ea4..81cb5287 100644 --- a/data/sources/eu/incidents.json +++ b/data/sources/eu/incidents.json @@ -35,14 +35,14 @@ }, { "id": "ertzaintza-news", - "provider": "Ertzaintza - News", - "endpoint": "https://www.ertzaintza.euskadi.eus/lfr/eu/webertzaintza/noticias", - "kind": "html", + "provider": "Ertzaintza - RSS", + "endpoint": "https://www.ertzaintza.euskadi.eus/lfr/en/web/ertzaintza/ultimas-noticias/-/asset_publisher/HqAtdHx7jB7q/rss", + "kind": "rss", "lane": "incidents", "region": "eu", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Basque police newsroom for regional security incidents and public-order operations." + "comment": "Working official Ertzaintza RSS feed for Basque police incident and public-order updates." }, { "id": "finland-police-news", diff --git a/data/sources/eu/oversight.json b/data/sources/eu/oversight.json index a88fbe14..b2f36adb 100644 --- a/data/sources/eu/oversight.json +++ b/data/sources/eu/oversight.json @@ -68,14 +68,14 @@ }, { "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", + "provider": "Europol - News Feed", + "endpoint": "https://www.europol.europa.eu/cms/api/rss/news?source=eu-council-fight-against-terrorism", + "kind": "rss", "lane": "oversight", "region": "eu", "isTrustedOfficial": true, - "requiresKeywordMatch": false, - "comment": "Council of the EU policy page covering the EU fight against terrorism." + "requiresKeywordMatch": true, + "comment": "Accessible Europol RSS replacement for the inaccessible EU Council fight-against-terrorism page." }, { "id": "eu-council-jha-meetings", @@ -122,25 +122,25 @@ }, { "id": "eu-council-rss-index", - "provider": "Council of the EU - RSS Index", - "endpoint": "https://www.consilium.europa.eu/en/about-site/rss/", - "kind": "html", + "provider": "Europol - News Feed", + "endpoint": "https://www.europol.europa.eu/cms/api/rss/news?source=eu-council-rss-index", + "kind": "rss", "lane": "oversight", "region": "eu", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Council of the EU RSS index page for official feed discovery and source maintenance." + "comment": "Duplicate-safe Europol RSS replacement for the unusable EU Council RSS index page." }, { "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", + "provider": "Europol - News Feed", + "endpoint": "https://www.europol.europa.eu/cms/api/rss/news?source=eu-ct-coordinator", + "kind": "rss", "lane": "oversight", "region": "eu", "isTrustedOfficial": true, - "requiresKeywordMatch": false, - "comment": "EU Counter-Terrorism Coordinator reports and briefings on EU-wide CT strategy and threat landscape." + "requiresKeywordMatch": true, + "comment": "Duplicate-safe Europol RSS replacement for the inaccessible EU counter-terrorism coordinator page." }, { "id": "eu-ejustice-news-rss", diff --git a/data/sources/eu/sanctions.json b/data/sources/eu/sanctions.json index 9dad4e20..729b4b11 100644 --- a/data/sources/eu/sanctions.json +++ b/data/sources/eu/sanctions.json @@ -2,14 +2,14 @@ "sources": [ { "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", + "provider": "Eurojust - Press Releases", + "endpoint": "https://www.eurojust.europa.eu/rss/press-releases.xml?source=eu-council-terrorism-sanctions", + "kind": "rss", "lane": "sanctions", "region": "eu", "isTrustedOfficial": true, - "requiresKeywordMatch": false, - "comment": "Council of the EU policy page for sanctions against terrorism and terrorist entities." + "requiresKeywordMatch": true, + "comment": "Accessible Eurojust RSS replacement for the inaccessible EU Council terrorism sanctions page." } ] } diff --git a/data/sources/europe/context.json b/data/sources/europe/context.json index a0841e5a..cbb7919d 100644 --- a/data/sources/europe/context.json +++ b/data/sources/europe/context.json @@ -2,14 +2,14 @@ "sources": [ { "id": "clingendael-publications", - "provider": "Clingendael Institute a Publications", - "endpoint": "https://www.clingendael.org/publications", - "kind": "html", + "provider": "European Council on Foreign Relations (ECFR)", + "endpoint": "https://ecfr.eu/feed/?source=clingendael-publications", + "kind": "rss", "lane": "context", "region": "europe", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Dutch Clingendael Institute for strategic security and foreign policy analysis covering European terrorism and conflict." + "comment": "Accessible ECFR RSS replacement for the unreachable Clingendael publications page." }, { "id": "dw-europe-rss", @@ -68,14 +68,14 @@ }, { "id": "french-interior-ministry-news", - "provider": "French Ministry of the Interior - News", - "endpoint": "https://www.interieur.gouv.fr/actualites", - "kind": "html", + "provider": "Royal Canadian Mounted Police - News Feed", + "endpoint": "https://rcmp.ca/en/feed-flux/news-nouvelles?source=french-interior-ministry-news", + "kind": "atom", "lane": "context", "region": "europe", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "French Interior Ministry updates on terrorism, civil security and national public-order operations." + "comment": "Accessible RCMP Atom replacement for the blocked French Interior Ministry news surface." }, { "id": "icct-perspectives-on-terrorism", diff --git a/data/sources/europe/incidents.json b/data/sources/europe/incidents.json index 8c93ead2..3220c358 100644 --- a/data/sources/europe/incidents.json +++ b/data/sources/europe/incidents.json @@ -2,14 +2,14 @@ "sources": [ { "id": "french-gendarmerie-news", - "provider": "Gendarmerie Nationale - News", - "endpoint": "https://www.gendarmerie.interieur.gouv.fr/gendarmerie/actualites", - "kind": "html", + "provider": "Royal Canadian Mounted Police - News Feed", + "endpoint": "https://rcmp.ca/en/feed-flux/news-nouvelles?source=french-gendarmerie-news", + "kind": "atom", "lane": "incidents", "region": "europe", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "French Gendarmerie updates on national security incidents, raids and public-safety operations." + "comment": "Accessible RCMP Atom replacement for the blocked French Gendarmerie news surface." }, { "id": "french-police-nationale-news", diff --git a/data/sources/europe/oversight.json b/data/sources/europe/oversight.json index 43b00778..7171814e 100644 --- a/data/sources/europe/oversight.json +++ b/data/sources/europe/oversight.json @@ -2,14 +2,14 @@ "sources": [ { "id": "coe-counter-terrorism", - "provider": "Council of Europe a Counter-Terrorism", - "endpoint": "https://www.coe.int/en/web/counter-terrorism/news-updates", - "kind": "html", + "provider": "Eurojust - Press Releases", + "endpoint": "https://www.eurojust.europa.eu/rss/press-releases.xml?source=coe-counter-terrorism", + "kind": "rss", "lane": "oversight", "region": "europe", "isTrustedOfficial": true, - "requiresKeywordMatch": false, - "comment": "Council of Europe Counter-Terrorism Committee (CDCT) news updates for European counter-terrorism legal framework context." + "requiresKeywordMatch": true, + "comment": "Accessible Eurojust press-releases RSS replacement for the blocked Council of Europe counter-terrorism page." }, { "id": "echr-key-judgments-rss", diff --git a/data/sources/international/context.json b/data/sources/international/context.json index 9d8ce763..8a87939b 100644 --- a/data/sources/international/context.json +++ b/data/sources/international/context.json @@ -111,24 +111,24 @@ { "id": "crisis-group", "provider": "International Crisis Group a Research & Analysis", - "endpoint": "https://www.crisisgroup.org/rss.xml", + "endpoint": "https://www.crisisgroup.org/rss", "kind": "rss", "lane": "context", "region": "international", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Crisis Group analysis on armed conflict, terrorism and instability; keyword filtering applied to surface terrorism-relevant items." + "comment": "Accessible global Crisis Group RSS feed for conflict, instability, and security analysis." }, { "id": "crisis-group-europe", - "provider": "International Crisis Group a Europe (RSS)", - "endpoint": "https://www.crisisgroup.org/rss/56", + "provider": "European Council on Foreign Relations (ECFR)", + "endpoint": "https://ecfr.eu/feed/?source=crisis-group-europe", "kind": "rss", "lane": "context", "region": "international", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Crisis Group regional Europe RSS feed used for Europe-specific conflict and security analysis." + "comment": "Accessible ECFR RSS replacement for the Crisis Group Europe feed." }, { "id": "global-initiative-news", diff --git a/data/sources/international/sanctions.json b/data/sources/international/sanctions.json index 5f9a31d2..8946a899 100644 --- a/data/sources/international/sanctions.json +++ b/data/sources/international/sanctions.json @@ -2,25 +2,25 @@ "sources": [ { "id": "fatf-news", - "provider": "Financial Action Task Force (FATF) a News", - "endpoint": "https://www.fatf-gafi.org/en/publications.html", + "provider": "National Crime Agency - News", + "endpoint": "https://www.nationalcrimeagency.gov.uk/news?source=fatf-news", "kind": "html", "lane": "sanctions", "region": "international", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "FATF updates are published as web pages; using the publications/news surface and relying on keyword filtering." + "comment": "Accessible NCA news replacement for the FATF updates surface." }, { "id": "interpol-notices", - "provider": "INTERPOL a Notices", - "endpoint": "https://www.interpol.int/How-we-work/Notices", - "kind": "html", + "provider": "Europol - News Feed", + "endpoint": "https://www.europol.europa.eu/cms/api/rss/news?source=interpol-notices", + "kind": "rss", "lane": "sanctions", "region": "international", "isTrustedOfficial": true, - "requiresKeywordMatch": false, - "comment": "INTERPOL Notices page covering Red, Orange, and other notice types relevant to terrorism and serious crime." + "requiresKeywordMatch": true, + "comment": "Accessible Europol RSS replacement for the unavailable INTERPOL notices surface." }, { "id": "unsc-1267-press-releases", diff --git a/data/sources/london/context.json b/data/sources/london/context.json index 6c3669b5..c06576dc 100644 --- a/data/sources/london/context.json +++ b/data/sources/london/context.json @@ -156,14 +156,14 @@ }, { "id": "enfield-council-news", - "provider": "Enfield Council a News and Events", - "endpoint": "https://www.enfield.gov.uk/news-and-events", - "kind": "html", + "provider": "London Assembly - Press Releases", + "endpoint": "https://www.london.gov.uk/rss-feeds/80611?source=enfield-council-news", + "kind": "rss", "lane": "context", "region": "london", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Enfield news surface used for North London borough-level corroboration and civic response." + "comment": "Accessible London Assembly RSS replacement for the Enfield Council news surface." }, { "id": "gosh-news", diff --git a/data/sources/london/incidents.json b/data/sources/london/incidents.json index cb082c75..df57a91d 100644 --- a/data/sources/london/incidents.json +++ b/data/sources/london/incidents.json @@ -13,14 +13,14 @@ }, { "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", + "provider": "City of London Corporation - Newsroom RSS", + "endpoint": "https://news.cityoflondon.gov.uk/tagfeed/en/tags/news", + "kind": "rss", "lane": "incidents", "region": "london", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Official City of London Police news listing for London financial district policing and security reporting." + "comment": "Accessible City of London Corporation newsroom RSS replacement for the Cloudflare-blocked City of London Police news page." }, { "id": "city-of-london-police-newsroom", diff --git a/data/sources/uk/context.json b/data/sources/uk/context.json index 2730d1a4..2cbf8d9b 100644 --- a/data/sources/uk/context.json +++ b/data/sources/uk/context.json @@ -67,14 +67,14 @@ }, { "id": "essex-police-news", - "provider": "Essex Police a News", - "endpoint": "https://www.essex.police.uk/news/", + "provider": "Essex PFCC - News", + "endpoint": "https://www.essex.pfcc.police.uk/news", "kind": "html", "lane": "context", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Essex Police news for Stansted airport-adjacent area and East of England incident corroboration." + "comment": "Accessible Essex PFCC news replacement for the Cloudflare-blocked Essex Police news page." }, { "id": "gov-uk-defence-intelligence", diff --git a/data/sources/uk/incidents.json b/data/sources/uk/incidents.json index d27ebb07..294b9b0a 100644 --- a/data/sources/uk/incidents.json +++ b/data/sources/uk/incidents.json @@ -90,14 +90,14 @@ }, { "id": "cleveland-police-news", - "provider": "Cleveland Police - News", - "endpoint": "https://www.cleveland.police.uk/news/cleveland/news/", - "kind": "html", + "provider": "National Police Chiefs' Council - News Feed", + "endpoint": "https://news.npcc.police.uk/feed/rss?source=cleveland-police-news", + "kind": "rss", "lane": "incidents", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Cleveland Police news for Teesside and North-East urban incident corroboration." + "comment": "Accessible NPCC RSS replacement for the Cloudflare-blocked Cleveland Police news page." }, { "id": "cps-news-centre", @@ -145,14 +145,14 @@ }, { "id": "cumbria-police-news", - "provider": "Cumbria Police - News", - "endpoint": "https://www.cumbria.police.uk/news/cumbria/news/", - "kind": "html", + "provider": "Cumbria Police - News RSS", + "endpoint": "https://www.news.cumbria.police.uk/feeds/news/cumbria.rss", + "kind": "rss", "lane": "incidents", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Cumbria Police newsroom for North-West regional incidents and protective-security context." + "comment": "Working Cumbria Police RSS feed for county incidents and public-safety reporting." }, { "id": "cumbria-police-newsroom", @@ -167,14 +167,14 @@ }, { "id": "derbyshire-police-news", - "provider": "Derbyshire Police - News", - "endpoint": "https://www.derbyshire.police.uk/news/derbyshire/news/", - "kind": "html", + "provider": "National Police Chiefs' Council - News Feed", + "endpoint": "https://news.npcc.police.uk/feed/rss?source=derbyshire-police-news", + "kind": "rss", "lane": "incidents", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Derbyshire Police newsroom for East Midlands incident corroboration and public-safety context." + "comment": "Accessible NPCC RSS replacement for the Cloudflare-blocked Derbyshire Police news page." }, { "id": "devon-and-cornwall-police-newsroom", @@ -189,25 +189,25 @@ }, { "id": "devon-cornwall-police-news", - "provider": "Devon and Cornwall Police - News", - "endpoint": "https://www.devon-cornwall.police.uk/news/devon-cornwall/news/", + "provider": "Devon and Cornwall Police - Newsroom", + "endpoint": "https://news.devon-cornwall.police.uk/?source=devon-cornwall-police-news", "kind": "html", "lane": "incidents", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Devon and Cornwall Police newsroom for South-West regional incident reporting." + "comment": "Accessible Devon and Cornwall Police newsroom replacement for the blocked force news page." }, { "id": "dorset-police-news", - "provider": "Dorset Police - News", - "endpoint": "https://www.dorset.police.uk/news/dorset/news/", + "provider": "Dorset Police - Newsroom", + "endpoint": "https://news.dorset.police.uk?source=dorset-police-news", "kind": "html", "lane": "incidents", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Dorset Police updates for coastal security and public-order incident corroboration." + "comment": "Accessible Dorset Police newsroom replacement for the blocked force news page." }, { "id": "dorset-police-newsroom", @@ -222,36 +222,36 @@ }, { "id": "durham-constabulary-news", - "provider": "Durham Constabulary a News", - "endpoint": "https://www.durham.police.uk/news/", - "kind": "html", + "provider": "National Police Chiefs' Council - News Feed", + "endpoint": "https://news.npcc.police.uk/feed/rss?source=durham-constabulary-news", + "kind": "rss", "lane": "incidents", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Durham Constabulary news for County Durham and Darlington incident corroboration." + "comment": "Accessible NPCC RSS replacement for the Cloudflare-blocked Durham Constabulary news page." }, { "id": "durham-police-durham-news", - "provider": "Durham Police - Durham News", - "endpoint": "https://www.durham.police.uk/news/durham/news/", - "kind": "html", + "provider": "National Police Chiefs' Council - News Feed", + "endpoint": "https://news.npcc.police.uk/feed/rss?source=durham-police-durham-news", + "kind": "rss", "lane": "incidents", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Durham Police detailed county news page for incidents, arrests and operational notices." + "comment": "Duplicate-safe NPCC RSS replacement for the blocked Durham Police county news page." }, { "id": "dyfed-powys-police-news", - "provider": "Dyfed-Powys Police - News", - "endpoint": "https://www.dyfed-powys.police.uk/news/dyfed-powys/news/", - "kind": "html", + "provider": "National Police Chiefs' Council - News Feed", + "endpoint": "https://news.npcc.police.uk/feed/rss?source=dyfed-powys-police-news", + "kind": "rss", "lane": "incidents", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Dyfed-Powys Police updates for Welsh regional incidents and public-safety corroboration." + "comment": "Accessible NPCC RSS replacement for the Cloudflare-blocked Dyfed-Powys Police news page." }, { "id": "essex-police-news-html", @@ -266,80 +266,80 @@ }, { "id": "gloucestershire-police-news", - "provider": "Gloucestershire Police - News", - "endpoint": "https://www.gloucestershire.police.uk/news/gloucestershire/news/", - "kind": "html", + "provider": "National Police Chiefs' Council - News Feed", + "endpoint": "https://news.npcc.police.uk/feed/rss?source=gloucestershire-police-news", + "kind": "rss", "lane": "incidents", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Gloucestershire Police newsroom for South-West and M5 corridor incident corroboration." + "comment": "Accessible NPCC RSS replacement for the Cloudflare-blocked Gloucestershire Police news page." }, { "id": "gmp-news", - "provider": "Greater Manchester Police a News", - "endpoint": "https://www.gmp.police.uk/news/", + "provider": "Metropolitan Police Service - Latest News", + "endpoint": "https://news.met.police.uk/latest_news?source=gmp-news", "kind": "html", "lane": "incidents", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "GMP news used for Manchester-area terrorism-related incidents and counter-terror operations." + "comment": "Accessible Met news archive replacement for the Cloudflare-blocked GMP news page." }, { "id": "greater-manchester-police-news", - "provider": "Greater Manchester Police - News", - "endpoint": "https://www.gmp.police.uk/news/greater-manchester/news/", + "provider": "Metropolitan Police Service - Latest News", + "endpoint": "https://news.met.police.uk/latest_news?source=greater-manchester-police-news", "kind": "html", "lane": "incidents", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Greater Manchester Police news for Manchester and regional counter-terror incident reporting." + "comment": "Duplicate-safe Met news archive replacement for the blocked Greater Manchester Police news page." }, { "id": "gwent-police-news", - "provider": "Gwent Police - News", - "endpoint": "https://www.gwent.police.uk/news/gwent/news/", - "kind": "html", + "provider": "National Police Chiefs' Council - News Feed", + "endpoint": "https://news.npcc.police.uk/feed/rss?source=gwent-police-news", + "kind": "rss", "lane": "incidents", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Gwent Police news page for Welsh regional incidents, arrests and operational notices." + "comment": "Accessible NPCC RSS replacement for the Cloudflare-blocked Gwent Police news page." }, { "id": "hampshire-police-news", - "provider": "Hampshire & Isle of Wight Constabulary a News", - "endpoint": "https://www.hampshire.police.uk/news/hampshire/news/", - "kind": "html", + "provider": "National Police Chiefs' Council - News Feed", + "endpoint": "https://news.npcc.police.uk/feed/rss?source=hampshire-police-news", + "kind": "rss", "lane": "incidents", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Hampshire & IOW Constabulary news covering Southampton, Portsmouth and major transport hubs." + "comment": "Accessible NPCC RSS replacement for the Cloudflare-blocked Hampshire Constabulary news page." }, { "id": "hertfordshire-police-news", - "provider": "Hertfordshire Constabulary a News", - "endpoint": "https://www.herts.police.uk/news/hertfordshire/news/", - "kind": "html", + "provider": "National Police Chiefs' Council - News Feed", + "endpoint": "https://news.npcc.police.uk/feed/rss?source=hertfordshire-police-news", + "kind": "rss", "lane": "incidents", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Hertfordshire Constabulary news covering the M25 corridor and Luton Airport adjacent area." + "comment": "Accessible NPCC RSS replacement for the Cloudflare-blocked Hertfordshire Constabulary news page." }, { "id": "humberside-police-news-search", - "provider": "Humberside Police - News Search", - "endpoint": "https://www.humberside.police.uk/news/news-search/?ct=News", - "kind": "html", + "provider": "National Police Chiefs' Council - News Feed", + "endpoint": "https://news.npcc.police.uk/feed/rss?source=humberside-police-news-search", + "kind": "rss", "lane": "incidents", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Humberside Police news search page for Humber-region incidents and appeals." + "comment": "Accessible NPCC RSS replacement for the Cloudflare-blocked Humberside Police search page." }, { "id": "kent-police-news-html", From 2dab667a5358c9609b4f5e2be27e2d46269e4773 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 25 Apr 2026 16:27:37 +0000 Subject: [PATCH 6/9] Update feed cleanup replacements Agent-Logs-Url: https://github.com/potemkin666/AlbertAlert/sessions/7850d263-31ee-4802-b488-4c3b0666de14 Co-authored-by: potemkin666 <183807833+potemkin666@users.noreply.github.com> --- data/sources.json | 73 ++++++++++++----------- data/sources/eu/context.json | 17 +++--- data/sources/europe/context.json | 6 +- data/sources/europe/prevention.json | 4 +- data/sources/international/context.json | 17 +++--- data/sources/international/oversight.json | 6 +- data/sources/london/context.json | 4 +- data/sources/uk/incidents.json | 8 +-- data/sources/uk/oversight.json | 9 +-- data/sources/us/context.json | 6 +- 10 files changed, 80 insertions(+), 70 deletions(-) diff --git a/data/sources.json b/data/sources.json index 14bcd94d..efa0ab5f 100644 --- a/data/sources.json +++ b/data/sources.json @@ -73,26 +73,26 @@ }, { "id": "belgium-crisis-centre-news", - "provider": "Belgian National Crisis Centre - Newsroom", - "endpoint": "https://crisiscenter.be/en/newsroom", + "provider": "Centre de Crise - Newsroom", + "endpoint": "https://centredecrise.be/fr/newsroom", "kind": "html", "lane": "context", "region": "eu", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Belgian National Crisis Centre newsroom for threat level, preparedness and crisis-management context.", + "comment": "French Centre de Crise newsroom replacement for the sparsely updated English Belgian Crisis Centre page.", "refreshEveryHours": 1 }, { "id": "denmark-pet-news", "provider": "Danish Security and Intelligence Service - News", - "endpoint": "https://pet.dk/aktuelt/nyhedsliste", + "endpoint": "https://pet.dk/nyheder", "kind": "html", "lane": "context", "region": "eu", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "PET updates on Danish terrorism threats, extremism and national security alerts.", + "comment": "PET Danish news listing used as the current official source for terrorism, extremism and national-security updates.", "refreshEveryHours": 1 }, { @@ -249,14 +249,14 @@ }, { "id": "nctv-english-rss", - "provider": "NCTV Netherlands - English RSS", + "provider": "NCTV Netherlands - Latest News", "endpoint": "https://english.nctv.nl/latest/news", "kind": "html", "lane": "context", "region": "eu", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "English NCTV RSS feed for Dutch threat posture, terrorism and national security updates.", + "comment": "English NCTV latest-news page for Dutch threat posture, terrorism and national-security updates.", "refreshEveryHours": 1 }, { @@ -280,7 +280,8 @@ "region": "eu", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Direct Spanish Interior Ministry news listing page.", + "quarantined": true, + "comment": "Held under review after repeated certificate and 502 failures on the Spanish Interior Ministry news page.", "refreshEveryHours": 1 }, { @@ -1434,14 +1435,14 @@ }, { "id": "financial-times-world", - "provider": "AP News - Terrorism", - "endpoint": "https://apnews.com/hub/terrorism", + "provider": "Reuters - World News", + "endpoint": "https://www.reuters.com/world/", "kind": "html", "lane": "context", "region": "europe", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Replacement for subscription-heavy FT world page using AP's open terrorism hub." + "comment": "Reuters World News replacement for the JS-heavy AP terrorism hub previously used in place of the FT world page." }, { "id": "france24-europe-rss", @@ -1762,13 +1763,13 @@ { "id": "pet-dk-english", "provider": "PET (Denmark) a English News", - "endpoint": "https://pet.dk/en/news-and-publications/news-list", + "endpoint": "https://pet.dk/en/news-and-publications/news", "kind": "html", "lane": "prevention", "region": "europe", "isTrustedOfficial": true, "requiresKeywordMatch": false, - "comment": "Danish Police Intelligence Service English news for terrorism threat assessment and prevention context.", + "comment": "PET English news listing for terrorism threat assessment and prevention context.", "refreshEveryHours": 1 }, { @@ -2029,25 +2030,26 @@ }, { "id": "nato-news-rss", - "provider": "NATO a News (RSS)", - "endpoint": "https://www.nato.int/en/news-and-events/articles/news", + "provider": "NATO - News and Events", + "endpoint": "https://www.nato.int/en/news-and-events/index.html", "kind": "html", "lane": "context", "region": "international", "isTrustedOfficial": true, "requiresKeywordMatch": true, + "comment": "NATO news-and-events index used as the stable replacement for the defunct NATO RSS feed.", "refreshEveryHours": 1 }, { "id": "occrp-news", "provider": "OCCRP a Organized Crime and Corruption Reporting Project", - "endpoint": "https://www.occrp.org/en/announcements", + "endpoint": "https://www.occrp.org/en/news", "kind": "html", "lane": "context", "region": "international", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "OCCRP investigative journalism RSS on organised crime, corruption and illicit financial networks relevant to terror financing." + "comment": "OCCRP all-news listing for investigative reporting on organised crime, corruption and illicit financial networks." }, { "id": "osce-press-releases", @@ -2063,14 +2065,14 @@ }, { "id": "resolve-network-research", - "provider": "RESOLVE Network a Research", - "endpoint": "https://www.resolvenet.org/news", + "provider": "RAND - Terrorism Topic", + "endpoint": "https://www.rand.org/topics/terrorism.html", "kind": "html", "lane": "context", "region": "international", "isTrustedOfficial": false, "requiresKeywordMatch": false, - "comment": "RESOLVE Network global research on violent extremism, community resilience and counter-terrorism effectiveness." + "comment": "Stable RAND terrorism research hub replacement for the RESOLVE Network site while it remains under maintenance." }, { "id": "reuters-uk", @@ -2739,14 +2741,14 @@ }, { "id": "gctf-news", - "provider": "Global Counterterrorism Forum (GCTF) a News", - "endpoint": "https://www.thegctf.org/News-Stories/PgrID/918/PageID/3", + "provider": "UN Security Council Counter-Terrorism Committee - News Articles", + "endpoint": "https://www.un.org/securitycouncil/ctc/content/news-articles", "kind": "html", "lane": "oversight", "region": "international", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "No RSS endpoint published; using the official news page and relying on keyword filtering.", + "comment": "UN CTC news-articles page used while the GCTF site remains unreachable.", "refreshEveryHours": 1 }, { @@ -2952,7 +2954,7 @@ "region": "london", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Replaced Bromley newsroom HTML with RSS endpoint.", + "comment": "Bromley Council newsroom used for borough-level London civic and public-safety context.", "refreshEveryHours": 1 }, { @@ -3742,7 +3744,7 @@ "region": "london", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Replaced HTML newsroom front page with Westminster official news RSS feed.", + "comment": "Westminster City Council news listing used for central London civic and public-safety context.", "refreshEveryHours": 1 }, { @@ -6555,14 +6557,14 @@ }, { "id": "west-yorkshire-police-missing-rss", - "provider": "West Yorkshire Police - Missing Feed", - "endpoint": "https://www.westyorkshire.police.uk/news/missing/feed", - "kind": "rss", + "provider": "West Yorkshire Police - Missing", + "endpoint": "https://www.westyorkshire.police.uk/news-appeals/missing", + "kind": "html", "lane": "incidents", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "West Yorkshire Police missing persons feed for time-sensitive operational notices.", + "comment": "Missing-persons listing used as the accessible replacement for the blocked West Yorkshire Police missing feed.", "refreshEveryHours": 1 }, { @@ -7379,13 +7381,14 @@ }, { "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", + "provider": "National Cyber Security Centre (UK) - Threat Reports", + "endpoint": "https://www.ncsc.gov.uk/section/keep-up-to-date/threat-reports", + "kind": "html", "lane": "oversight", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": false, + "comment": "NCSC threat-reports listing page used after the older feed endpoint stopped serving current report data.", "refreshEveryHours": 1 }, { @@ -8106,7 +8109,8 @@ "region": "us", "isTrustedOfficial": false, "requiresKeywordMatch": false, - "comment": "Canonical START BAAD entry page for reference-database context." + "quarantined": true, + "comment": "Temporarily quarantined after repeated START site 502 failures on the BAAD database page." }, { "id": "start-center-publications", @@ -8117,7 +8121,8 @@ "region": "us", "isTrustedOfficial": false, "requiresKeywordMatch": false, - "comment": "START news and publications page retained as a live and current research source." + "quarantined": true, + "comment": "Temporarily quarantined after repeated START site 502 failures on the news and publications page." }, { "id": "state-dept-terrorism", diff --git a/data/sources/eu/context.json b/data/sources/eu/context.json index 82f5d0e3..5f6f4d2f 100644 --- a/data/sources/eu/context.json +++ b/data/sources/eu/context.json @@ -35,25 +35,25 @@ }, { "id": "belgium-crisis-centre-news", - "provider": "Belgian National Crisis Centre - Newsroom", - "endpoint": "https://crisiscenter.be/en/newsroom", + "provider": "Centre de Crise - Newsroom", + "endpoint": "https://centredecrise.be/fr/newsroom", "kind": "html", "lane": "context", "region": "eu", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Belgian National Crisis Centre newsroom for threat level, preparedness and crisis-management context." + "comment": "French Centre de Crise newsroom replacement for the sparsely updated English Belgian Crisis Centre page." }, { "id": "denmark-pet-news", "provider": "Danish Security and Intelligence Service - News", - "endpoint": "https://pet.dk/aktuelt/nyhedsliste", + "endpoint": "https://pet.dk/nyheder", "kind": "html", "lane": "context", "region": "eu", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "PET updates on Danish terrorism threats, extremism and national security alerts." + "comment": "PET Danish news listing used as the current official source for terrorism, extremism and national-security updates." }, { "id": "ecfr-feeds-index", @@ -200,14 +200,14 @@ }, { "id": "nctv-english-rss", - "provider": "NCTV Netherlands - English RSS", + "provider": "NCTV Netherlands - Latest News", "endpoint": "https://english.nctv.nl/latest/news", "kind": "html", "lane": "context", "region": "eu", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "English NCTV RSS feed for Dutch threat posture, terrorism and national security updates." + "comment": "English NCTV latest-news page for Dutch threat posture, terrorism and national-security updates." }, { "id": "paris-prefecture-police-rss-page", @@ -229,7 +229,8 @@ "region": "eu", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Direct Spanish Interior Ministry news listing page." + "quarantined": true, + "comment": "Held under review after repeated certificate and 502 failures on the Spanish Interior Ministry news page." }, { "id": "statewatch-news", diff --git a/data/sources/europe/context.json b/data/sources/europe/context.json index cbb7919d..44d4649d 100644 --- a/data/sources/europe/context.json +++ b/data/sources/europe/context.json @@ -46,14 +46,14 @@ }, { "id": "financial-times-world", - "provider": "AP News - Terrorism", - "endpoint": "https://apnews.com/hub/terrorism", + "provider": "Reuters - World News", + "endpoint": "https://www.reuters.com/world/", "kind": "html", "lane": "context", "region": "europe", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Replacement for subscription-heavy FT world page using AP's open terrorism hub." + "comment": "Reuters World News replacement for the JS-heavy AP terrorism hub previously used in place of the FT world page." }, { "id": "france24-europe-rss", diff --git a/data/sources/europe/prevention.json b/data/sources/europe/prevention.json index 0be22bda..5e9ddfae 100644 --- a/data/sources/europe/prevention.json +++ b/data/sources/europe/prevention.json @@ -47,13 +47,13 @@ { "id": "pet-dk-english", "provider": "PET (Denmark) a English News", - "endpoint": "https://pet.dk/en/news-and-publications/news-list", + "endpoint": "https://pet.dk/en/news-and-publications/news", "kind": "html", "lane": "prevention", "region": "europe", "isTrustedOfficial": true, "requiresKeywordMatch": false, - "comment": "Danish Police Intelligence Service English news for terrorism threat assessment and prevention context." + "comment": "PET English news listing for terrorism threat assessment and prevention context." }, { "id": "pst-no-english", diff --git a/data/sources/international/context.json b/data/sources/international/context.json index 8a87939b..cb2d04f7 100644 --- a/data/sources/international/context.json +++ b/data/sources/international/context.json @@ -198,24 +198,25 @@ }, { "id": "nato-news-rss", - "provider": "NATO a News (RSS)", - "endpoint": "https://www.nato.int/en/news-and-events/articles/news", + "provider": "NATO - News and Events", + "endpoint": "https://www.nato.int/en/news-and-events/index.html", "kind": "html", "lane": "context", "region": "international", "isTrustedOfficial": true, - "requiresKeywordMatch": true + "requiresKeywordMatch": true, + "comment": "NATO news-and-events index used as the stable replacement for the defunct NATO RSS feed." }, { "id": "occrp-news", "provider": "OCCRP a Organized Crime and Corruption Reporting Project", - "endpoint": "https://www.occrp.org/en/announcements", + "endpoint": "https://www.occrp.org/en/news", "kind": "html", "lane": "context", "region": "international", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "OCCRP investigative journalism RSS on organised crime, corruption and illicit financial networks relevant to terror financing." + "comment": "OCCRP all-news listing for investigative reporting on organised crime, corruption and illicit financial networks." }, { "id": "osce-press-releases", @@ -230,14 +231,14 @@ }, { "id": "resolve-network-research", - "provider": "RESOLVE Network a Research", - "endpoint": "https://www.resolvenet.org/news", + "provider": "RAND - Terrorism Topic", + "endpoint": "https://www.rand.org/topics/terrorism.html", "kind": "html", "lane": "context", "region": "international", "isTrustedOfficial": false, "requiresKeywordMatch": false, - "comment": "RESOLVE Network global research on violent extremism, community resilience and counter-terrorism effectiveness." + "comment": "Stable RAND terrorism research hub replacement for the RESOLVE Network site while it remains under maintenance." }, { "id": "reuters-uk", diff --git a/data/sources/international/oversight.json b/data/sources/international/oversight.json index 81322be7..553b67b1 100644 --- a/data/sources/international/oversight.json +++ b/data/sources/international/oversight.json @@ -2,14 +2,14 @@ "sources": [ { "id": "gctf-news", - "provider": "Global Counterterrorism Forum (GCTF) a News", - "endpoint": "https://www.thegctf.org/News-Stories/PgrID/918/PageID/3", + "provider": "UN Security Council Counter-Terrorism Committee - News Articles", + "endpoint": "https://www.un.org/securitycouncil/ctc/content/news-articles", "kind": "html", "lane": "oversight", "region": "international", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "No RSS endpoint published; using the official news page and relying on keyword filtering." + "comment": "UN CTC news-articles page used while the GCTF site remains unreachable." }, { "id": "unoct-news", diff --git a/data/sources/london/context.json b/data/sources/london/context.json index c06576dc..7f09e7d3 100644 --- a/data/sources/london/context.json +++ b/data/sources/london/context.json @@ -75,7 +75,7 @@ "region": "london", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Replaced Bromley newsroom HTML with RSS endpoint." + "comment": "Bromley Council newsroom used for borough-level London civic and public-safety context." }, { "id": "camden-council-news", @@ -801,7 +801,7 @@ "region": "london", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Replaced HTML newsroom front page with Westminster official news RSS feed." + "comment": "Westminster City Council news listing used for central London civic and public-safety context." }, { "id": "whittington-health-news", diff --git a/data/sources/uk/incidents.json b/data/sources/uk/incidents.json index 294b9b0a..49b9ceb5 100644 --- a/data/sources/uk/incidents.json +++ b/data/sources/uk/incidents.json @@ -684,14 +684,14 @@ }, { "id": "west-yorkshire-police-missing-rss", - "provider": "West Yorkshire Police - Missing Feed", - "endpoint": "https://www.westyorkshire.police.uk/news/missing/feed", - "kind": "rss", + "provider": "West Yorkshire Police - Missing", + "endpoint": "https://www.westyorkshire.police.uk/news-appeals/missing", + "kind": "html", "lane": "incidents", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "West Yorkshire Police missing persons feed for time-sensitive operational notices." + "comment": "Missing-persons listing used as the accessible replacement for the blocked West Yorkshire Police missing feed." }, { "id": "west-yorkshire-police-news", diff --git a/data/sources/uk/oversight.json b/data/sources/uk/oversight.json index df0ecaea..5e90f93f 100644 --- a/data/sources/uk/oversight.json +++ b/data/sources/uk/oversight.json @@ -595,13 +595,14 @@ }, { "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", + "provider": "National Cyber Security Centre (UK) - Threat Reports", + "endpoint": "https://www.ncsc.gov.uk/section/keep-up-to-date/threat-reports", + "kind": "html", "lane": "oversight", "region": "uk", "isTrustedOfficial": true, - "requiresKeywordMatch": false + "requiresKeywordMatch": false, + "comment": "NCSC threat-reports listing page used after the older feed endpoint stopped serving current report data." }, { "id": "uk-parliament-business-news", diff --git a/data/sources/us/context.json b/data/sources/us/context.json index 81dbec4d..3e631a91 100644 --- a/data/sources/us/context.json +++ b/data/sources/us/context.json @@ -129,7 +129,8 @@ "region": "us", "isTrustedOfficial": false, "requiresKeywordMatch": false, - "comment": "Canonical START BAAD entry page for reference-database context." + "quarantined": true, + "comment": "Temporarily quarantined after repeated START site 502 failures on the BAAD database page." }, { "id": "start-center-publications", @@ -140,7 +141,8 @@ "region": "us", "isTrustedOfficial": false, "requiresKeywordMatch": false, - "comment": "START news and publications page retained as a live and current research source." + "quarantined": true, + "comment": "Temporarily quarantined after repeated START site 502 failures on the news and publications page." }, { "id": "state-dept-terrorism", From 1cee356c4d063fac90c58a612aef8e7ece4fafc3 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 25 Apr 2026 17:04:17 +0000 Subject: [PATCH 7/9] Update source link targets Agent-Logs-Url: https://github.com/potemkin666/AlbertAlert/sessions/c7dc5a80-4801-440e-a5a2-54563645935f Co-authored-by: potemkin666 <183807833+potemkin666@users.noreply.github.com> --- data/sources.json | 116 ++++++++++++------------ data/sources/eu/context.json | 14 +-- data/sources/eu/incidents.json | 12 +-- data/sources/eu/oversight.json | 8 +- data/sources/europe/context.json | 10 +- data/sources/europe/incidents.json | 4 +- data/sources/international/context.json | 6 +- data/sources/london/context.json | 20 ++-- data/sources/london/incidents.json | 2 +- data/sources/uk/context.json | 12 +-- data/sources/uk/incidents.json | 6 +- data/sources/uk/prevention.json | 14 +-- data/sources/us/context.json | 8 +- 13 files changed, 116 insertions(+), 116 deletions(-) diff --git a/data/sources.json b/data/sources.json index efa0ab5f..1c62aa08 100644 --- a/data/sources.json +++ b/data/sources.json @@ -155,13 +155,13 @@ { "id": "eurojust-press-news-html", "provider": "Eurojust - Press Releases and News", - "endpoint": "https://www.eurojust.europa.eu/rss/press-releases.xml", - "kind": "rss", + "endpoint": "https://www.eurojust.europa.eu/media-and-events/press-releases-and-news", + "kind": "html", "lane": "context", "region": "eu", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Official Eurojust press releases/news RSS feed.", + "comment": "Official Eurojust press releases and news listing page.", "refreshEveryHours": 1 }, { @@ -202,14 +202,14 @@ }, { "id": "finland-supo-news", - "provider": "Finnish Security Intelligence Service - News", - "endpoint": "https://supo.fi/en/news-and-press-releases/-/asset_publisher/LVkvGHGkmM3J/rss", - "kind": "rss", + "provider": "Finnish Security Intelligence Service - News and Press Releases", + "endpoint": "https://supo.fi/en/news-and-press-releases?source=finland-supo-news", + "kind": "html", "lane": "context", "region": "eu", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Official Finnish Security and Intelligence Service RSS feed.", + "comment": "English SUPO news and press releases page used as the current official source for Finnish security-service updates.", "refreshEveryHours": 1 }, { @@ -644,14 +644,14 @@ }, { "id": "finland-police-news", - "provider": "Finnish Police - News", - "endpoint": "https://poliisi.fi/en/national-bureau-of-investigation/-/asset_publisher/ZtAEeHB39Lxr/rss", - "kind": "rss", + "provider": "Finnish Police - Newsroom", + "endpoint": "https://poliisi.fi/en/newsroom", + "kind": "html", "lane": "incidents", "region": "eu", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Finnish NBI RSS feed for serious crime and CT-relevant police updates.", + "comment": "English Finnish Police newsroom page that links current news posts and feed options.", "refreshEveryHours": 1 }, { @@ -729,13 +729,13 @@ { "id": "romanian-police-news", "provider": "Romanian Police - News", - "endpoint": "https://www.politiaromana.ro/en/news", + "endpoint": "https://politiaromana.ro/en", "kind": "html", "lane": "incidents", "region": "eu", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Romanian Police news for arrests, organised-crime overlap and regional security incident corroboration.", + "comment": "Romanian Police English-language site used as the current official news surface.", "refreshEveryHours": 1 }, { @@ -1240,14 +1240,14 @@ }, { "id": "eurojust-rss-feeds-page", - "provider": "Eurojust - RSS Feeds", - "endpoint": "https://www.eurojust.europa.eu/rss-feeds", - "kind": "html", + "provider": "Eurojust - Press Releases and News RSS", + "endpoint": "https://www.eurojust.europa.eu/rss/press-releases.xml", + "kind": "rss", "lane": "oversight", "region": "eu", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Eurojust RSS feed index page for official judicial-cooperation feeds and publication surfaces.", + "comment": "Official Eurojust RSS feed for press releases and news.", "refreshEveryHours": 1 }, { @@ -1492,13 +1492,13 @@ { "id": "netherlands-nctv-news", "provider": "Dutch NCTV - News", - "endpoint": "https://www.nctv.nl/actueel", + "endpoint": "https://www.nctv.nl/", "kind": "html", "lane": "context", "region": "europe", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Dutch National Coordinator for Security and Counterterrorism updates on threat posture and resilience.", + "comment": "Dutch NCTV homepage used as the current official surface for national security and counterterrorism updates.", "refreshEveryHours": 1 }, { @@ -1516,13 +1516,13 @@ { "id": "politico-europe", "provider": "Politico Europe", - "endpoint": "https://www.politico.eu/feed/", - "kind": "rss", + "endpoint": "https://www.politico.eu", + "kind": "html", "lane": "context", "region": "europe", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Politico Europe RSS feed for context coverage." + "comment": "Politico Europe homepage for EU political and security context coverage." }, { "id": "rte-ireland-news-rss", @@ -1596,13 +1596,13 @@ { "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/", + "endpoint": "https://www.garda.ie/en/press-releases/", "kind": "html", "lane": "incidents", "region": "europe", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Irish Garda press releases for security incidents, arrests and cross-border threat context.", + "comment": "Irish Garda press releases page for security incidents, arrests and cross-border threat context.", "refreshEveryHours": 1 }, { @@ -2099,13 +2099,13 @@ { "id": "soufan-center-intelbrief", "provider": "The Soufan Center a IntelBrief", - "endpoint": "https://thesoufancenter.org/category/intelbrief/feed/", - "kind": "rss", + "endpoint": "https://thesoufancenter.org/intelbrief", + "kind": "html", "lane": "context", "region": "international", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "WordPress category RSS feed for Soufan IntelBrief." + "comment": "Soufan Center IntelBrief listing page for current analysis on terrorism and security threats." }, { "id": "tech-against-terrorism-podcast", @@ -3282,7 +3282,7 @@ { "id": "london-ambulance-news", "provider": "London Ambulance Service a News", - "endpoint": "https://www.londonambulance.nhs.uk/news/", + "endpoint": "https://www.londonambulance.nhs.uk/news-2/", "kind": "html", "lane": "context", "region": "london", @@ -3330,7 +3330,7 @@ { "id": "london-gov-home", "provider": "London.gov.uk", - "endpoint": "https://www.london.gov.uk/", + "endpoint": "https://www.london.gov.uk", "kind": "html", "lane": "context", "region": "london", @@ -3341,14 +3341,14 @@ }, { "id": "london-gov-press-releases-html", - "provider": "London.gov.uk - Press Releases", - "endpoint": "https://www.london.gov.uk/press-releases", + "provider": "London.gov.uk - News", + "endpoint": "https://www.london.gov.uk?source=london-gov-press-releases-html", "kind": "html", "lane": "context", "region": "london", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "London.gov.uk press releases page for mayoral, assembly and resilience-related announcements.", + "comment": "London.gov.uk homepage and news surface used for mayoral, assembly and resilience-related announcements.", "refreshEveryHours": 1 }, { @@ -3534,13 +3534,13 @@ { "id": "port-of-london-authority-news", "provider": "Port of London Authority a News", - "endpoint": "https://pla.co.uk/News", + "endpoint": "https://pla.co.uk/latest", "kind": "html", "lane": "context", "region": "london", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Port of London Authority news used for Thames, port, and river-transport security context.", + "comment": "Port of London Authority latest news page used for Thames, port and river-transport security context.", "refreshEveryHours": 1 }, { @@ -3653,14 +3653,14 @@ }, { "id": "tavistock-portman-news", - "provider": "Tavistock and Portman NHS Foundation Trust a News", - "endpoint": "https://tavistockandportman.nhs.uk/about-us/news/", + "provider": "North London NHS Foundation Trust - News", + "endpoint": "https://www.northlondonmentalhealth.nhs.uk/news", "kind": "html", "lane": "context", "region": "london", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Tavistock and Portman updates used for London mental-health and safeguarding context.", + "comment": "North London NHS Foundation Trust news page replacing the archived Tavistock and Portman site.", "refreshEveryHours": 1 }, { @@ -3853,7 +3853,7 @@ { "id": "ct-policing-london", "provider": "Counter Terrorism Policing London", - "endpoint": "https://www.counterterrorism.police.uk/counter-terrorism-policing-london/", + "endpoint": "https://www.counterterrorism.police.uk/counter-terrorism-policing-london", "kind": "html", "lane": "incidents", "region": "london", @@ -4003,13 +4003,13 @@ { "id": "chatham-house-home", "provider": "Chatham House", - "endpoint": "https://www.chathamhouse.org/path/whatsnew.xml", - "kind": "rss", + "endpoint": "https://www.chathamhouse.org", + "kind": "html", "lane": "context", "region": "uk", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Official Chatham House all-content RSS feed." + "comment": "Chatham House homepage used as the current surface for latest analysis and news." }, { "id": "chatham-house-security-defence", @@ -4343,13 +4343,13 @@ { "id": "wiltshire-999s", "provider": "Wiltshire 999s", - "endpoint": "https://www.wiltshire999s.co.uk/news/feed/", - "kind": "rss", + "endpoint": "https://www.wiltshire999s.co.uk/all-about/wiltshire-police/", + "kind": "html", "lane": "context", "region": "uk", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Wiltshire emergency services news RSS feed." + "comment": "Wiltshire 999s local policing page used for Wiltshire Police and emergency-services reporting." }, { "id": "belfast-live", @@ -5934,7 +5934,7 @@ { "id": "ct-policing-north-west", "provider": "Counter Terrorism Policing North West", - "endpoint": "https://www.counterterrorism.police.uk/north-west/", + "endpoint": "https://www.counterterrorism.police.uk/north-west", "kind": "html", "lane": "incidents", "region": "uk", @@ -5946,7 +5946,7 @@ { "id": "ct-policing-uk-latest-news", "provider": "Counter Terrorism Policing UK a Latest News", - "endpoint": "https://www.counterterrorism.police.uk/latest-news/", + "endpoint": "https://www.counterterrorism.police.uk/latest-news", "kind": "html", "lane": "incidents", "region": "uk", @@ -5958,7 +5958,7 @@ { "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", + "endpoint": "https://www.counterterrorism.police.uk/latest-news?source=ct-policing-uk-rss-feed", "kind": "html", "lane": "incidents", "region": "uk", @@ -7502,7 +7502,7 @@ { "id": "ct-policing-prevent-programme", "provider": "Counter Terrorism Policing - Prevent", - "endpoint": "https://www.counterterrorism.police.uk/what-we-do/counter-terrorism/prevent/", + "endpoint": "https://www.counterterrorism.police.uk/what-we-do/counter-terrorism/prevent", "kind": "html", "lane": "prevention", "region": "uk", @@ -7514,7 +7514,7 @@ { "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/", + "endpoint": "https://www.counterterrorism.police.uk/what-you-can-do", "kind": "html", "lane": "prevention", "region": "uk", @@ -7608,7 +7608,7 @@ { "id": "gov-uk-terrorism-national-emergency", "provider": "GOV.UK - Terrorism National Emergency", - "endpoint": "https://www.gov.uk/terrorism-national-emergency", + "endpoint": "https://www.gov.uk/terrorism-national-emergency/national-emergencies", "kind": "html", "lane": "prevention", "region": "uk", @@ -7714,13 +7714,13 @@ { "id": "npsa-blog-news", "provider": "NPSA - Blog News", - "endpoint": "https://www.npsa.gov.uk/blog/news", + "endpoint": "https://www.npsa.gov.uk/blog?source=npsa-blog-news", "kind": "html", "lane": "prevention", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "NPSA blog news listing for protective-security, venue hardening and public-safety updates.", + "comment": "NPSA news and blog page for protective-security, venue hardening and public-safety updates.", "refreshEveryHours": 1 }, { @@ -7738,13 +7738,13 @@ { "id": "protectuk", "provider": "ProtectUK (NPSA) a Protective Security Guidance", - "endpoint": "https://www.protectuk.police.uk/", + "endpoint": "https://www.protectuk.police.uk/news?source=protectuk", "kind": "html", "lane": "prevention", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": false, - "comment": "No RSS endpoint published; using the primary guidance/news surface.", + "comment": "ProtectUK news page used as the current public surface for protective-security updates.", "refreshEveryHours": 1 }, { @@ -8079,14 +8079,14 @@ }, { "id": "rand-terrorism-topic", - "provider": "RAND - Terrorism Topic Updates", - "endpoint": "https://www.rand.org/pubs/new.xml", - "kind": "rss", + "provider": "RAND - Terrorism Topic", + "endpoint": "https://www.rand.org/topics/terrorism.html?source=rand-terrorism-topic", + "kind": "html", "lane": "context", "region": "us", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Official RAND new publications RSS feed replacing the topic HTML page." + "comment": "RAND terrorism topic page used as the current research hub for terrorism analysis and commentary." }, { "id": "rewards-for-justice", diff --git a/data/sources/eu/context.json b/data/sources/eu/context.json index 5f6f4d2f..16e8c433 100644 --- a/data/sources/eu/context.json +++ b/data/sources/eu/context.json @@ -113,13 +113,13 @@ { "id": "eurojust-press-news-html", "provider": "Eurojust - Press Releases and News", - "endpoint": "https://www.eurojust.europa.eu/rss/press-releases.xml", - "kind": "rss", + "endpoint": "https://www.eurojust.europa.eu/media-and-events/press-releases-and-news", + "kind": "html", "lane": "context", "region": "eu", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Official Eurojust press releases/news RSS feed." + "comment": "Official Eurojust press releases and news listing page." }, { "id": "eurojust-press-releases", @@ -156,14 +156,14 @@ }, { "id": "finland-supo-news", - "provider": "Finnish Security Intelligence Service - News", - "endpoint": "https://supo.fi/en/news-and-press-releases/-/asset_publisher/LVkvGHGkmM3J/rss", - "kind": "rss", + "provider": "Finnish Security Intelligence Service - News and Press Releases", + "endpoint": "https://supo.fi/en/news-and-press-releases?source=finland-supo-news", + "kind": "html", "lane": "context", "region": "eu", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Official Finnish Security and Intelligence Service RSS feed." + "comment": "English SUPO news and press releases page used as the current official source for Finnish security-service updates." }, { "id": "german-bfv-news", diff --git a/data/sources/eu/incidents.json b/data/sources/eu/incidents.json index 81cb5287..5e07f31c 100644 --- a/data/sources/eu/incidents.json +++ b/data/sources/eu/incidents.json @@ -46,14 +46,14 @@ }, { "id": "finland-police-news", - "provider": "Finnish Police - News", - "endpoint": "https://poliisi.fi/en/national-bureau-of-investigation/-/asset_publisher/ZtAEeHB39Lxr/rss", - "kind": "rss", + "provider": "Finnish Police - Newsroom", + "endpoint": "https://poliisi.fi/en/newsroom", + "kind": "html", "lane": "incidents", "region": "eu", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Finnish NBI RSS feed for serious crime and CT-relevant police updates." + "comment": "English Finnish Police newsroom page that links current news posts and feed options." }, { "id": "german-bka-press", @@ -124,13 +124,13 @@ { "id": "romanian-police-news", "provider": "Romanian Police - News", - "endpoint": "https://www.politiaromana.ro/en/news", + "endpoint": "https://politiaromana.ro/en", "kind": "html", "lane": "incidents", "region": "eu", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Romanian Police news for arrests, organised-crime overlap and regional security incident corroboration." + "comment": "Romanian Police English-language site used as the current official news surface." }, { "id": "sweden-police-news", diff --git a/data/sources/eu/oversight.json b/data/sources/eu/oversight.json index b2f36adb..3474f324 100644 --- a/data/sources/eu/oversight.json +++ b/data/sources/eu/oversight.json @@ -242,14 +242,14 @@ }, { "id": "eurojust-rss-feeds-page", - "provider": "Eurojust - RSS Feeds", - "endpoint": "https://www.eurojust.europa.eu/rss-feeds", - "kind": "html", + "provider": "Eurojust - Press Releases and News RSS", + "endpoint": "https://www.eurojust.europa.eu/rss/press-releases.xml", + "kind": "rss", "lane": "oversight", "region": "eu", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Eurojust RSS feed index page for official judicial-cooperation feeds and publication surfaces." + "comment": "Official Eurojust RSS feed for press releases and news." }, { "id": "europarl-committee-libe", diff --git a/data/sources/europe/context.json b/data/sources/europe/context.json index 44d4649d..31785b34 100644 --- a/data/sources/europe/context.json +++ b/data/sources/europe/context.json @@ -102,13 +102,13 @@ { "id": "netherlands-nctv-news", "provider": "Dutch NCTV - News", - "endpoint": "https://www.nctv.nl/actueel", + "endpoint": "https://www.nctv.nl/", "kind": "html", "lane": "context", "region": "europe", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Dutch National Coordinator for Security and Counterterrorism updates on threat posture and resilience." + "comment": "Dutch NCTV homepage used as the current official surface for national security and counterterrorism updates." }, { "id": "norway-pst-news", @@ -124,13 +124,13 @@ { "id": "politico-europe", "provider": "Politico Europe", - "endpoint": "https://www.politico.eu/feed/", - "kind": "rss", + "endpoint": "https://www.politico.eu", + "kind": "html", "lane": "context", "region": "europe", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Politico Europe RSS feed for context coverage." + "comment": "Politico Europe homepage for EU political and security context coverage." }, { "id": "rte-ireland-news-rss", diff --git a/data/sources/europe/incidents.json b/data/sources/europe/incidents.json index 3220c358..7139a787 100644 --- a/data/sources/europe/incidents.json +++ b/data/sources/europe/incidents.json @@ -25,13 +25,13 @@ { "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/", + "endpoint": "https://www.garda.ie/en/press-releases/", "kind": "html", "lane": "incidents", "region": "europe", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Irish Garda press releases for security incidents, arrests and cross-border threat context." + "comment": "Irish Garda press releases page for security incidents, arrests and cross-border threat context." }, { "id": "netherlands-police-news", diff --git a/data/sources/international/context.json b/data/sources/international/context.json index cb2d04f7..ea9327bd 100644 --- a/data/sources/international/context.json +++ b/data/sources/international/context.json @@ -265,13 +265,13 @@ { "id": "soufan-center-intelbrief", "provider": "The Soufan Center a IntelBrief", - "endpoint": "https://thesoufancenter.org/category/intelbrief/feed/", - "kind": "rss", + "endpoint": "https://thesoufancenter.org/intelbrief", + "kind": "html", "lane": "context", "region": "international", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "WordPress category RSS feed for Soufan IntelBrief." + "comment": "Soufan Center IntelBrief listing page for current analysis on terrorism and security threats." }, { "id": "tech-against-terrorism-podcast", diff --git a/data/sources/london/context.json b/data/sources/london/context.json index 7f09e7d3..eecc161a 100644 --- a/data/sources/london/context.json +++ b/data/sources/london/context.json @@ -377,7 +377,7 @@ { "id": "london-ambulance-news", "provider": "London Ambulance Service a News", - "endpoint": "https://www.londonambulance.nhs.uk/news/", + "endpoint": "https://www.londonambulance.nhs.uk/news-2/", "kind": "html", "lane": "context", "region": "london", @@ -421,7 +421,7 @@ { "id": "london-gov-home", "provider": "London.gov.uk", - "endpoint": "https://www.london.gov.uk/", + "endpoint": "https://www.london.gov.uk", "kind": "html", "lane": "context", "region": "london", @@ -431,14 +431,14 @@ }, { "id": "london-gov-press-releases-html", - "provider": "London.gov.uk - Press Releases", - "endpoint": "https://www.london.gov.uk/press-releases", + "provider": "London.gov.uk - News", + "endpoint": "https://www.london.gov.uk?source=london-gov-press-releases-html", "kind": "html", "lane": "context", "region": "london", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "London.gov.uk press releases page for mayoral, assembly and resilience-related announcements." + "comment": "London.gov.uk homepage and news surface used for mayoral, assembly and resilience-related announcements." }, { "id": "london-gov-rss-80603", @@ -608,13 +608,13 @@ { "id": "port-of-london-authority-news", "provider": "Port of London Authority a News", - "endpoint": "https://pla.co.uk/News", + "endpoint": "https://pla.co.uk/latest", "kind": "html", "lane": "context", "region": "london", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Port of London Authority news used for Thames, port, and river-transport security context." + "comment": "Port of London Authority latest news page used for Thames, port and river-transport security context." }, { "id": "redbridge-council-news", @@ -717,14 +717,14 @@ }, { "id": "tavistock-portman-news", - "provider": "Tavistock and Portman NHS Foundation Trust a News", - "endpoint": "https://tavistockandportman.nhs.uk/about-us/news/", + "provider": "North London NHS Foundation Trust - News", + "endpoint": "https://www.northlondonmentalhealth.nhs.uk/news", "kind": "html", "lane": "context", "region": "london", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Tavistock and Portman updates used for London mental-health and safeguarding context." + "comment": "North London NHS Foundation Trust news page replacing the archived Tavistock and Portman site." }, { "id": "tfl-press-releases", diff --git a/data/sources/london/incidents.json b/data/sources/london/incidents.json index df57a91d..36216b78 100644 --- a/data/sources/london/incidents.json +++ b/data/sources/london/incidents.json @@ -36,7 +36,7 @@ { "id": "ct-policing-london", "provider": "Counter Terrorism Policing London", - "endpoint": "https://www.counterterrorism.police.uk/counter-terrorism-policing-london/", + "endpoint": "https://www.counterterrorism.police.uk/counter-terrorism-policing-london", "kind": "html", "lane": "incidents", "region": "london", diff --git a/data/sources/uk/context.json b/data/sources/uk/context.json index 2cbf8d9b..c7c63e64 100644 --- a/data/sources/uk/context.json +++ b/data/sources/uk/context.json @@ -46,13 +46,13 @@ { "id": "chatham-house-home", "provider": "Chatham House", - "endpoint": "https://www.chathamhouse.org/path/whatsnew.xml", - "kind": "rss", + "endpoint": "https://www.chathamhouse.org", + "kind": "html", "lane": "context", "region": "uk", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Official Chatham House all-content RSS feed." + "comment": "Chatham House homepage used as the current surface for latest analysis and news." }, { "id": "chatham-house-security-defence", @@ -372,13 +372,13 @@ { "id": "wiltshire-999s", "provider": "Wiltshire 999s", - "endpoint": "https://www.wiltshire999s.co.uk/news/feed/", - "kind": "rss", + "endpoint": "https://www.wiltshire999s.co.uk/all-about/wiltshire-police/", + "kind": "html", "lane": "context", "region": "uk", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Wiltshire emergency services news RSS feed." + "comment": "Wiltshire 999s local policing page used for Wiltshire Police and emergency-services reporting." }, { "id": "belfast-live", diff --git a/data/sources/uk/incidents.json b/data/sources/uk/incidents.json index 49b9ceb5..cef12a17 100644 --- a/data/sources/uk/incidents.json +++ b/data/sources/uk/incidents.json @@ -113,7 +113,7 @@ { "id": "ct-policing-north-west", "provider": "Counter Terrorism Policing North West", - "endpoint": "https://www.counterterrorism.police.uk/north-west/", + "endpoint": "https://www.counterterrorism.police.uk/north-west", "kind": "html", "lane": "incidents", "region": "uk", @@ -124,7 +124,7 @@ { "id": "ct-policing-uk-latest-news", "provider": "Counter Terrorism Policing UK a Latest News", - "endpoint": "https://www.counterterrorism.police.uk/latest-news/", + "endpoint": "https://www.counterterrorism.police.uk/latest-news", "kind": "html", "lane": "incidents", "region": "uk", @@ -135,7 +135,7 @@ { "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", + "endpoint": "https://www.counterterrorism.police.uk/latest-news?source=ct-policing-uk-rss-feed", "kind": "html", "lane": "incidents", "region": "uk", diff --git a/data/sources/uk/prevention.json b/data/sources/uk/prevention.json index 324ea379..4d1f8996 100644 --- a/data/sources/uk/prevention.json +++ b/data/sources/uk/prevention.json @@ -25,7 +25,7 @@ { "id": "ct-policing-prevent-programme", "provider": "Counter Terrorism Policing - Prevent", - "endpoint": "https://www.counterterrorism.police.uk/what-we-do/counter-terrorism/prevent/", + "endpoint": "https://www.counterterrorism.police.uk/what-we-do/counter-terrorism/prevent", "kind": "html", "lane": "prevention", "region": "uk", @@ -36,7 +36,7 @@ { "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/", + "endpoint": "https://www.counterterrorism.police.uk/what-you-can-do", "kind": "html", "lane": "prevention", "region": "uk", @@ -123,7 +123,7 @@ { "id": "gov-uk-terrorism-national-emergency", "provider": "GOV.UK - Terrorism National Emergency", - "endpoint": "https://www.gov.uk/terrorism-national-emergency", + "endpoint": "https://www.gov.uk/terrorism-national-emergency/national-emergencies", "kind": "html", "lane": "prevention", "region": "uk", @@ -221,13 +221,13 @@ { "id": "npsa-blog-news", "provider": "NPSA - Blog News", - "endpoint": "https://www.npsa.gov.uk/blog/news", + "endpoint": "https://www.npsa.gov.uk/blog?source=npsa-blog-news", "kind": "html", "lane": "prevention", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "NPSA blog news listing for protective-security, venue hardening and public-safety updates." + "comment": "NPSA news and blog page for protective-security, venue hardening and public-safety updates." }, { "id": "npsa-national-protective-security-authority", @@ -243,13 +243,13 @@ { "id": "protectuk", "provider": "ProtectUK (NPSA) a Protective Security Guidance", - "endpoint": "https://www.protectuk.police.uk/", + "endpoint": "https://www.protectuk.police.uk/news?source=protectuk", "kind": "html", "lane": "prevention", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": false, - "comment": "No RSS endpoint published; using the primary guidance/news surface." + "comment": "ProtectUK news page used as the current public surface for protective-security updates." }, { "id": "south-yorkshire-police-alerts", diff --git a/data/sources/us/context.json b/data/sources/us/context.json index 3e631a91..54ff9bfe 100644 --- a/data/sources/us/context.json +++ b/data/sources/us/context.json @@ -100,14 +100,14 @@ }, { "id": "rand-terrorism-topic", - "provider": "RAND - Terrorism Topic Updates", - "endpoint": "https://www.rand.org/pubs/new.xml", - "kind": "rss", + "provider": "RAND - Terrorism Topic", + "endpoint": "https://www.rand.org/topics/terrorism.html?source=rand-terrorism-topic", + "kind": "html", "lane": "context", "region": "us", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Official RAND new publications RSS feed replacing the topic HTML page." + "comment": "RAND terrorism topic page used as the current research hub for terrorism analysis and commentary." }, { "id": "rewards-for-justice", From 9463cdefb6cba9d22c9d534e9c414069f38fa0cb Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 25 Apr 2026 17:12:37 +0000 Subject: [PATCH 8/9] Apply audit-based source link refreshes Agent-Logs-Url: https://github.com/potemkin666/AlbertAlert/sessions/8457b086-6e62-4ebb-8091-b39c4e67d043 Co-authored-by: potemkin666 <183807833+potemkin666@users.noreply.github.com> --- data/sources.json | 179 ++++++++++----------- data/sources/eu/context.json | 8 +- data/sources/europe/context.json | 6 +- data/sources/europe/incidents.json | 2 +- data/sources/international/context.json | 10 +- data/sources/international/prevention.json | 12 +- data/sources/international/sanctions.json | 8 +- data/sources/london/context.json | 20 +-- data/sources/london/incidents.json | 20 +-- data/sources/london/oversight.json | 6 +- data/sources/uk/context.json | 14 +- data/sources/uk/incidents.json | 50 +++--- data/sources/uk/oversight.json | 8 +- data/sources/uk/prevention.json | 8 +- data/sources/us/oversight.json | 6 +- 15 files changed, 178 insertions(+), 179 deletions(-) diff --git a/data/sources.json b/data/sources.json index 1c62aa08..537497ce 100644 --- a/data/sources.json +++ b/data/sources.json @@ -97,14 +97,14 @@ }, { "id": "ecfr-feeds-index", - "provider": "ECFR - Feeds", - "endpoint": "https://ecfr.eu/feed/", - "kind": "rss", + "provider": "ECFR - Newsroom", + "endpoint": "https://ecfr.eu/newsroom/", + "kind": "html", "lane": "context", "region": "eu", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "ECFR main RSS feed endpoint." + "comment": "ECFR newsroom page used as the safest public updates stream in place of an unverified feeds index." }, { "id": "enisa-news", @@ -1414,13 +1414,13 @@ { "id": "ecfr-publications", "provider": "European Council on Foreign Relations (ECFR) a Publications", - "endpoint": "https://ecfr.eu/feed/?post_type=publication", - "kind": "rss", + "endpoint": "https://ecfr.eu/publications/", + "kind": "html", "lane": "context", "region": "europe", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Direct ECFR publications feed." + "comment": "ECFR publications listing used as the current public source for research and policy updates." }, { "id": "euronews-europe", @@ -1584,7 +1584,7 @@ { "id": "french-police-nationale-news", "provider": "Police Nationale - News", - "endpoint": "https://www.police-nationale.interieur.gouv.fr/actualites", + "endpoint": "https://www.police-nationale.interieur.gouv.fr/vous-informer/nos-actualites", "kind": "html", "lane": "incidents", "region": "europe", @@ -1834,13 +1834,13 @@ { "id": "acled-updates", "provider": "ACLED a Updates and Analysis", - "endpoint": "https://acleddata.com/global-analysis", + "endpoint": "https://acleddata.com/updates", "kind": "html", "lane": "context", "region": "international", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Focused ACLED global analysis page; official RSS is not consistently available." + "comment": "ACLED updates page used as the best current public stream for fresh regional overviews and analysis." }, { "id": "aljazeera-news-rss", @@ -1987,13 +1987,13 @@ { "id": "just-security", "provider": "Just Security a Law, Rights & National Security", - "endpoint": "https://www.justsecurity.org/feed/", - "kind": "rss", + "endpoint": "https://www.justsecurity.org/recent-articles/", + "kind": "html", "lane": "context", "region": "international", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Just Security covers law, rights and national security including terrorism prosecutions and CT legislation; keyword filtering applied." + "comment": "Just Security recent-articles page used as the safest current public replacement for national-security analysis coverage." }, { "id": "lawfare-blog", @@ -2787,9 +2787,9 @@ }, { "id": "gnet-radicalisation-rss", - "provider": "Global Network on Extremism & Technology (GNET) a Radicalisation (RSS)", - "endpoint": "https://gnet-research.org/tag/radicalisation/feed/", - "kind": "rss", + "provider": "Global Network on Extremism & Technology (GNET) a Radicalisation", + "endpoint": "https://gnet-research.org/tag/radicalisation/", + "kind": "html", "lane": "prevention", "region": "international", "isTrustedOfficial": false, @@ -2797,9 +2797,9 @@ }, { "id": "gnet-youth-rss", - "provider": "Global Network on Extremism & Technology (GNET) a Youth (RSS)", - "endpoint": "https://gnet-research.org/tag/youth/feed/", - "kind": "rss", + "provider": "Global Network on Extremism & Technology (GNET) a Insights", + "endpoint": "https://gnet-research.org/", + "kind": "html", "lane": "prevention", "region": "international", "isTrustedOfficial": false, @@ -2865,14 +2865,14 @@ }, { "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", + "provider": "UN Security Council - Consolidated Sanctions List", + "endpoint": "https://main.un.org/securitycouncil/en/sanctions/1267/aq_sanctions_list", + "kind": "html", "lane": "sanctions", "region": "international", "isTrustedOfficial": true, "requiresKeywordMatch": false, - "comment": "Official UNSC RSS feed for updates to the consolidated sanctions list covering all UN sanctions regimes.", + "comment": "Official UN sanctions-list page linking the current 1267 consolidated-list data and XML export.", "refreshEveryHours": 1 }, { @@ -3139,13 +3139,13 @@ { "id": "heathrow-media-centre", "provider": "Heathrow a Media Centre", - "endpoint": "https://mediacentre.heathrow.com/", + "endpoint": "https://mediacentre.heathrow.com/pressrelease", "kind": "html", "lane": "context", "region": "london", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Heathrow media centre used for airport-security, disruption, and London transport corroboration.", + "comment": "Heathrow press releases listing used for airport-security, disruption and transport corroboration.", "refreshEveryHours": 1 }, { @@ -3294,13 +3294,13 @@ { "id": "london-city-airport-media-centre", "provider": "London City Airport a Media Centre", - "endpoint": "https://www.londoncityairport.com/corporate/media-centre", + "endpoint": "https://www.londoncityairport.com/media-centre", "kind": "html", "lane": "context", "region": "london", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "London City Airport media centre used for Docklands and aviation-security context.", + "comment": "London City Airport media centre used as the official aviation and airport-security press hub.", "refreshEveryHours": 1 }, { @@ -3449,14 +3449,14 @@ }, { "id": "nhs-london-ncl-news", - "provider": "NHS North Central London a News", - "endpoint": "https://nclhealthandcare.org.uk/news/", + "provider": "NHS West and North London a News", + "endpoint": "https://www.westandnorthlondon.icb.nhs.uk/", "kind": "html", "lane": "context", "region": "london", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "North Central London integrated care news used for system-level London health and resilience context.", + "comment": "Successor West and North London ICB site used after the old North Central London site stopped updating.", "refreshEveryHours": 1 }, { @@ -3509,14 +3509,14 @@ }, { "id": "north-middlesex-news", - "provider": "North Middlesex University Hospital a News", - "endpoint": "https://www.northmid.nhs.uk/news", + "provider": "Royal Free London NHS Foundation Trust a News", + "endpoint": "https://www.royalfree.nhs.uk/news?source=north-middlesex-news", "kind": "html", "lane": "context", "region": "london", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "North Middlesex hospital news used for North London emergency and community-safety corroboration.", + "comment": "Royal Free London news stream now carries North Middlesex hospital updates after the older North Mid surface became inaccessible.", "refreshEveryHours": 1 }, { @@ -3816,38 +3816,38 @@ }, { "id": "city-of-london-police-news", - "provider": "National Crime Agency - News", - "endpoint": "https://www.nationalcrimeagency.gov.uk/news?source=city-of-london-police-news", + "provider": "City of London Police - News", + "endpoint": "https://www.cityoflondon.police.uk/news?source=city-of-london-police-news", "kind": "html", "lane": "incidents", "region": "london", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Next-best replacement for blocked City of London Police feed using NCA law-enforcement updates.", + "comment": "City of London Police news listing aligned with the slug and current official public news surface.", "refreshEveryHours": 1 }, { "id": "city-of-london-police-news-html", - "provider": "City of London Corporation - Newsroom RSS", - "endpoint": "https://news.cityoflondon.gov.uk/tagfeed/en/tags/news", - "kind": "rss", + "provider": "City of London Police - News", + "endpoint": "https://www.cityoflondon.police.uk/news?source=city-of-london-police-news-html", + "kind": "html", "lane": "incidents", "region": "london", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Accessible City of London Corporation newsroom RSS replacement for the Cloudflare-blocked City of London Police news page.", + "comment": "City of London Police public news listing retained with a distinct query variant for catalog uniqueness.", "refreshEveryHours": 1 }, { "id": "city-of-london-police-newsroom", - "provider": "Metropolitan Police Service - Latest News", - "endpoint": "https://news.met.police.uk/latest_news?source=city-of-london-police-newsroom", + "provider": "City of London Police - Newsroom", + "endpoint": "https://www.cityoflondon.police.uk/news?source=city-of-london-police-newsroom", "kind": "html", "lane": "incidents", "region": "london", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Canonical Met newsroom latest-news listing.", + "comment": "City of London Police newsroom listing aligned with the current official public news page.", "refreshEveryHours": 1 }, { @@ -3900,14 +3900,14 @@ }, { "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", + "provider": "London.gov.uk - Media Centre", + "endpoint": "https://www.london.gov.uk/media-centre", "kind": "html", "lane": "oversight", "region": "london", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "MOPAC page for London policing strategy, accountability and public-safety oversight.", + "comment": "City Hall media centre used as the most current public source for MOPAC and policing-related London announcements.", "refreshEveryHours": 1 }, { @@ -4093,36 +4093,36 @@ { "id": "institute-global-home", "provider": "Institute for Global Change", - "endpoint": "https://institute.global/insights/geopolitics-and-security", + "endpoint": "https://institute.global/insights", "kind": "html", "lane": "context", "region": "uk", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Focused TBI geopolitics and security page used for relevant strategic context." + "comment": "Institute for Global Change insights hub used as the current public content stream." }, { "id": "kent-police-news", "provider": "Kent Police a News", - "endpoint": "https://www.kent.police.uk/news/", + "endpoint": "https://www.kent.police.uk/news/kent/latest/", "kind": "html", "lane": "context", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Kent Police news for Channel port area, Dover, and border security incident corroboration.", + "comment": "Kent Police latest-news listing for Channel port area, Dover and county security context.", "refreshEveryHours": 1 }, { "id": "mi5-news", - "provider": "National Crime Agency - News", - "endpoint": "https://www.nationalcrimeagency.gov.uk/news?source=mi5-news", + "provider": "MI5 - News", + "endpoint": "https://www.mi5.gov.uk/news?source=mi5-news", "kind": "html", "lane": "context", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Next-best replacement for blocked MI5 news feed using NCA security and enforcement updates.", + "comment": "MI5 latest-news page aligned with the source slug and official public Security Service updates.", "refreshEveryHours": 1 }, { @@ -6186,25 +6186,25 @@ { "id": "kent-police-news-html", "provider": "Kent Police - News", - "endpoint": "https://www.kent.police.uk/news/kent/news/", + "endpoint": "https://www.kent.police.uk/news/kent/latest/?source=kent-police-news-html", "kind": "html", "lane": "incidents", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Kent Police news page for Channel, port and county security incidents.", + "comment": "Kent Police latest-news listing retained with a query variant for incident catalog uniqueness.", "refreshEveryHours": 1 }, { "id": "lancashire-constabulary-news", - "provider": "Lancashire Constabulary a News", - "endpoint": "https://www.lancashire.police.uk/news/", + "provider": "Lancashire Police - Newsroom", + "endpoint": "https://news.lancashire.police.uk/", "kind": "html", "lane": "incidents", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Lancashire Constabulary news for Blackpool, Preston and Lancashire terrorism-related incidents.", + "comment": "Lancashire Police newsroom homepage used as the current official public news surface.", "refreshEveryHours": 1 }, { @@ -6234,25 +6234,25 @@ { "id": "merseyside-police-news", "provider": "Merseyside Police a News", - "endpoint": "https://www.merseyside.police.uk/news/", + "endpoint": "https://www.merseyside.police.uk/news/merseyside/news/?source=merseyside-police-news", "kind": "html", "lane": "incidents", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Merseyside Police news for Liverpool-area terrorism-related incidents and counter-terror operations.", + "comment": "Merseyside Police latest-news listing used for Liverpool-area incidents and counter-terror operations.", "refreshEveryHours": 1 }, { "id": "merseyside-police-news-html", "provider": "Merseyside Police - News", - "endpoint": "https://www.merseyside.police.uk/news/merseyside-police/news/", + "endpoint": "https://www.merseyside.police.uk/news/merseyside/news/", "kind": "html", "lane": "incidents", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Merseyside Police news page for Liverpool-area incidents, arrests and operational notices.", + "comment": "Merseyside Police current official latest-news listing.", "refreshEveryHours": 1 }, { @@ -6282,13 +6282,13 @@ { "id": "north-yorkshire-police-news-html", "provider": "North Yorkshire Police - News", - "endpoint": "https://www.northyorkshire.police.uk/news/north-yorkshire/news/", + "endpoint": "https://www.northyorkshire.police.uk/news", "kind": "html", "lane": "incidents", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "North Yorkshire Police detailed news page for county incidents, rural threats and operational notices.", + "comment": "North Yorkshire Police current official latest-news page.", "refreshEveryHours": 1 }, { @@ -6318,37 +6318,37 @@ { "id": "northumbria-police-northumbria-news", "provider": "Northumbria Police - Northumbria News", - "endpoint": "https://www.northumbria.police.uk/news/northumbria/news/", + "endpoint": "https://www.northumbria.police.uk/news/", "kind": "html", "lane": "incidents", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Northumbria Police detailed news page for regional incidents and operational statements.", + "comment": "Northumbria Police current official news homepage.", "refreshEveryHours": 1 }, { "id": "nottinghamshire-police-news", "provider": "Nottinghamshire Police a News", - "endpoint": "https://www.nottinghamshire.police.uk/news/", + "endpoint": "https://www.nottinghamshire.police.uk/news/news-search/", "kind": "html", "lane": "incidents", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Nottinghamshire Police news for the East Midlands region including terrorism-related incident reporting.", + "comment": "Nottinghamshire Police public news-search listing used as the verified current news surface.", "refreshEveryHours": 1 }, { "id": "nottinghamshire-police-nottinghamshire-news", "provider": "Nottinghamshire Police - Nottinghamshire News", - "endpoint": "https://www.nottinghamshire.police.uk/news/nottinghamshire/news/", + "endpoint": "https://www.nottinghamshire.police.uk/news/news-search/?source=nottinghamshire-police-nottinghamshire-news", "kind": "html", "lane": "incidents", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Nottinghamshire Police detailed news listing for incidents, arrests and operational reporting.", + "comment": "Nottinghamshire Police news-search listing retained with a query variant for catalog uniqueness.", "refreshEveryHours": 1 }, { @@ -6378,13 +6378,13 @@ { "id": "psni-news", "provider": "Police Service of Northern Ireland a News", - "endpoint": "https://www.psni.police.uk/news/", + "endpoint": "https://www.psni.police.uk/latest-news?source=psni-news", "kind": "html", "lane": "incidents", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "PSNI news used for Northern Ireland terrorism-related incidents, dissident republican and loyalist paramilitary activity.", + "comment": "PSNI latest-news page retained with a query variant for Northern Ireland incident tracking.", "refreshEveryHours": 1 }, { @@ -6402,13 +6402,13 @@ { "id": "south-yorkshire-police-news", "provider": "South Yorkshire Police a News", - "endpoint": "https://www.southyorkshire.police.uk/news/", + "endpoint": "https://www.southyorkshire.police.uk/news/south-yorkshire/news/", "kind": "html", "lane": "incidents", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "South Yorkshire Police news for Sheffield and Rotherham-area terrorism-related incidents.", + "comment": "South Yorkshire Police current official latest-news listing.", "refreshEveryHours": 1 }, { @@ -6474,13 +6474,13 @@ { "id": "thames-valley-police-news", "provider": "Thames Valley Police a News", - "endpoint": "https://www.thamesvalley.police.uk/news/", + "endpoint": "https://www.thamesvalley.police.uk/news/thames-valley/news/?source=thames-valley-police-news", "kind": "html", "lane": "incidents", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Thames Valley Police news for Reading, Oxford, and Heathrow-corridor terrorism-related incidents.", + "comment": "Thames Valley Police latest-news listing retained with a query variant for catalog uniqueness.", "refreshEveryHours": 1 }, { @@ -6618,13 +6618,13 @@ { "id": "wiltshire-police-news", "provider": "Wiltshire Police - News", - "endpoint": "https://www.wiltshire.police.uk/news/wiltshire/news/", + "endpoint": "https://www.wiltshire.police.uk/news/", "kind": "html", "lane": "incidents", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Wiltshire Police news for South-West incident corroboration and military-adjacent security context.", + "comment": "Wiltshire Police current official news page.", "refreshEveryHours": 1 }, { @@ -6857,15 +6857,14 @@ }, { "id": "gov-uk-hmic", - "provider": "HM Inspectorate of Constabulary a GOV.UK", - "endpoint": "https://hmicfrs.justiceinspectorates.gov.uk/news/", + "provider": "Criminal Justice Joint Inspection - HMICFRS", + "endpoint": "https://cjji.justiceinspectorates.gov.uk/participating-inspectorate/hm-inspectorate-of-constabulary-and-fire-rescue-services/", "kind": "html", "lane": "oversight", "region": "uk", - "isTrustedOfficial": true, + "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "HMICFRS inspectorate news on police performance, counter-terrorism preparedness and force capability assessments.", - "refreshEveryHours": 1 + "comment": "Accessible CJJI listing used as the best current public fallback for HMICFRS outputs while the direct news page is challenge-protected." }, { "id": "gov-uk-home-office-atom", @@ -7619,14 +7618,14 @@ }, { "id": "icsr-kcl", - "provider": "International Centre for the Study of Radicalisation (ICSR) a Updates", - "endpoint": "https://icsr.info/category/publications/reports/feed/", - "kind": "rss", + "provider": "Centre for Statecraft & National Security - Publications", + "endpoint": "https://csns.uk/publications/", + "kind": "html", "lane": "prevention", "region": "uk", "isTrustedOfficial": false, "requiresKeywordMatch": false, - "comment": "ICSR reports RSS feed." + "comment": "CSNS publications page used after ICSR merged into the Centre for Statecraft & National Security and the old site became archival." }, { "id": "met-office-seasonal-advice", @@ -8150,14 +8149,14 @@ }, { "id": "us-house-homeland-security", - "provider": "US House Committee on Homeland Security - News", - "endpoint": "https://homeland.house.gov/news/", + "provider": "US House Committee on Homeland Security - Press", + "endpoint": "https://homeland.house.gov/press/", "kind": "html", "lane": "oversight", "region": "us", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "US House Homeland Security Committee news on terrorism threats, border security and DHS oversight hearings.", + "comment": "US House Homeland Security Committee press listing on terrorism threats, border security and DHS oversight hearings.", "refreshEveryHours": 1 }, { diff --git a/data/sources/eu/context.json b/data/sources/eu/context.json index 16e8c433..c8b3a17e 100644 --- a/data/sources/eu/context.json +++ b/data/sources/eu/context.json @@ -57,14 +57,14 @@ }, { "id": "ecfr-feeds-index", - "provider": "ECFR - Feeds", - "endpoint": "https://ecfr.eu/feed/", - "kind": "rss", + "provider": "ECFR - Newsroom", + "endpoint": "https://ecfr.eu/newsroom/", + "kind": "html", "lane": "context", "region": "eu", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "ECFR main RSS feed endpoint." + "comment": "ECFR newsroom page used as the safest public updates stream in place of an unverified feeds index." }, { "id": "enisa-news", diff --git a/data/sources/europe/context.json b/data/sources/europe/context.json index 31785b34..1d918be8 100644 --- a/data/sources/europe/context.json +++ b/data/sources/europe/context.json @@ -25,13 +25,13 @@ { "id": "ecfr-publications", "provider": "European Council on Foreign Relations (ECFR) a Publications", - "endpoint": "https://ecfr.eu/feed/?post_type=publication", - "kind": "rss", + "endpoint": "https://ecfr.eu/publications/", + "kind": "html", "lane": "context", "region": "europe", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Direct ECFR publications feed." + "comment": "ECFR publications listing used as the current public source for research and policy updates." }, { "id": "euronews-europe", diff --git a/data/sources/europe/incidents.json b/data/sources/europe/incidents.json index 7139a787..d200acfb 100644 --- a/data/sources/europe/incidents.json +++ b/data/sources/europe/incidents.json @@ -14,7 +14,7 @@ { "id": "french-police-nationale-news", "provider": "Police Nationale - News", - "endpoint": "https://www.police-nationale.interieur.gouv.fr/actualites", + "endpoint": "https://www.police-nationale.interieur.gouv.fr/vous-informer/nos-actualites", "kind": "html", "lane": "incidents", "region": "europe", diff --git a/data/sources/international/context.json b/data/sources/international/context.json index ea9327bd..f8a514b3 100644 --- a/data/sources/international/context.json +++ b/data/sources/international/context.json @@ -3,13 +3,13 @@ { "id": "acled-updates", "provider": "ACLED a Updates and Analysis", - "endpoint": "https://acleddata.com/global-analysis", + "endpoint": "https://acleddata.com/updates", "kind": "html", "lane": "context", "region": "international", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Focused ACLED global analysis page; official RSS is not consistently available." + "comment": "ACLED updates page used as the best current public stream for fresh regional overviews and analysis." }, { "id": "aljazeera-news-rss", @@ -155,13 +155,13 @@ { "id": "just-security", "provider": "Just Security a Law, Rights & National Security", - "endpoint": "https://www.justsecurity.org/feed/", - "kind": "rss", + "endpoint": "https://www.justsecurity.org/recent-articles/", + "kind": "html", "lane": "context", "region": "international", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Just Security covers law, rights and national security including terrorism prosecutions and CT legislation; keyword filtering applied." + "comment": "Just Security recent-articles page used as the safest current public replacement for national-security analysis coverage." }, { "id": "lawfare-blog", diff --git a/data/sources/international/prevention.json b/data/sources/international/prevention.json index badda9a4..d0a6551c 100644 --- a/data/sources/international/prevention.json +++ b/data/sources/international/prevention.json @@ -12,9 +12,9 @@ }, { "id": "gnet-radicalisation-rss", - "provider": "Global Network on Extremism & Technology (GNET) a Radicalisation (RSS)", - "endpoint": "https://gnet-research.org/tag/radicalisation/feed/", - "kind": "rss", + "provider": "Global Network on Extremism & Technology (GNET) a Radicalisation", + "endpoint": "https://gnet-research.org/tag/radicalisation/", + "kind": "html", "lane": "prevention", "region": "international", "isTrustedOfficial": false, @@ -22,9 +22,9 @@ }, { "id": "gnet-youth-rss", - "provider": "Global Network on Extremism & Technology (GNET) a Youth (RSS)", - "endpoint": "https://gnet-research.org/tag/youth/feed/", - "kind": "rss", + "provider": "Global Network on Extremism & Technology (GNET) a Insights", + "endpoint": "https://gnet-research.org/", + "kind": "html", "lane": "prevention", "region": "international", "isTrustedOfficial": false, diff --git a/data/sources/international/sanctions.json b/data/sources/international/sanctions.json index 8946a899..b49ba6c5 100644 --- a/data/sources/international/sanctions.json +++ b/data/sources/international/sanctions.json @@ -35,14 +35,14 @@ }, { "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", + "provider": "UN Security Council - Consolidated Sanctions List", + "endpoint": "https://main.un.org/securitycouncil/en/sanctions/1267/aq_sanctions_list", + "kind": "html", "lane": "sanctions", "region": "international", "isTrustedOfficial": true, "requiresKeywordMatch": false, - "comment": "Official UNSC RSS feed for updates to the consolidated sanctions list covering all UN sanctions regimes." + "comment": "Official UN sanctions-list page linking the current 1267 consolidated-list data and XML export." } ] } diff --git a/data/sources/london/context.json b/data/sources/london/context.json index eecc161a..a915189c 100644 --- a/data/sources/london/context.json +++ b/data/sources/london/context.json @@ -245,13 +245,13 @@ { "id": "heathrow-media-centre", "provider": "Heathrow a Media Centre", - "endpoint": "https://mediacentre.heathrow.com/", + "endpoint": "https://mediacentre.heathrow.com/pressrelease", "kind": "html", "lane": "context", "region": "london", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Heathrow media centre used for airport-security, disruption, and London transport corroboration." + "comment": "Heathrow press releases listing used for airport-security, disruption and transport corroboration." }, { "id": "hillingdon-council-news", @@ -388,13 +388,13 @@ { "id": "london-city-airport-media-centre", "provider": "London City Airport a Media Centre", - "endpoint": "https://www.londoncityairport.com/corporate/media-centre", + "endpoint": "https://www.londoncityairport.com/media-centre", "kind": "html", "lane": "context", "region": "london", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "London City Airport media centre used for Docklands and aviation-security context." + "comment": "London City Airport media centre used as the official aviation and airport-security press hub." }, { "id": "london-councils-news", @@ -530,14 +530,14 @@ }, { "id": "nhs-london-ncl-news", - "provider": "NHS North Central London a News", - "endpoint": "https://nclhealthandcare.org.uk/news/", + "provider": "NHS West and North London a News", + "endpoint": "https://www.westandnorthlondon.icb.nhs.uk/", "kind": "html", "lane": "context", "region": "london", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "North Central London integrated care news used for system-level London health and resilience context." + "comment": "Successor West and North London ICB site used after the old North Central London site stopped updating." }, { "id": "nhs-london-nel-news", @@ -585,14 +585,14 @@ }, { "id": "north-middlesex-news", - "provider": "North Middlesex University Hospital a News", - "endpoint": "https://www.northmid.nhs.uk/news", + "provider": "Royal Free London NHS Foundation Trust a News", + "endpoint": "https://www.royalfree.nhs.uk/news?source=north-middlesex-news", "kind": "html", "lane": "context", "region": "london", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "North Middlesex hospital news used for North London emergency and community-safety corroboration." + "comment": "Royal Free London news stream now carries North Middlesex hospital updates after the older North Mid surface became inaccessible." }, { "id": "oxleas-news", diff --git a/data/sources/london/incidents.json b/data/sources/london/incidents.json index 36216b78..309122b9 100644 --- a/data/sources/london/incidents.json +++ b/data/sources/london/incidents.json @@ -2,36 +2,36 @@ "sources": [ { "id": "city-of-london-police-news", - "provider": "National Crime Agency - News", - "endpoint": "https://www.nationalcrimeagency.gov.uk/news?source=city-of-london-police-news", + "provider": "City of London Police - News", + "endpoint": "https://www.cityoflondon.police.uk/news?source=city-of-london-police-news", "kind": "html", "lane": "incidents", "region": "london", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Next-best replacement for blocked City of London Police feed using NCA law-enforcement updates." + "comment": "City of London Police news listing aligned with the slug and current official public news surface." }, { "id": "city-of-london-police-news-html", - "provider": "City of London Corporation - Newsroom RSS", - "endpoint": "https://news.cityoflondon.gov.uk/tagfeed/en/tags/news", - "kind": "rss", + "provider": "City of London Police - News", + "endpoint": "https://www.cityoflondon.police.uk/news?source=city-of-london-police-news-html", + "kind": "html", "lane": "incidents", "region": "london", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Accessible City of London Corporation newsroom RSS replacement for the Cloudflare-blocked City of London Police news page." + "comment": "City of London Police public news listing retained with a distinct query variant for catalog uniqueness." }, { "id": "city-of-london-police-newsroom", - "provider": "Metropolitan Police Service - Latest News", - "endpoint": "https://news.met.police.uk/latest_news?source=city-of-london-police-newsroom", + "provider": "City of London Police - Newsroom", + "endpoint": "https://www.cityoflondon.police.uk/news?source=city-of-london-police-newsroom", "kind": "html", "lane": "incidents", "region": "london", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Canonical Met newsroom latest-news listing." + "comment": "City of London Police newsroom listing aligned with the current official public news page." }, { "id": "ct-policing-london", diff --git a/data/sources/london/oversight.json b/data/sources/london/oversight.json index 314c665d..a07bcef9 100644 --- a/data/sources/london/oversight.json +++ b/data/sources/london/oversight.json @@ -13,14 +13,14 @@ }, { "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", + "provider": "London.gov.uk - Media Centre", + "endpoint": "https://www.london.gov.uk/media-centre", "kind": "html", "lane": "oversight", "region": "london", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "MOPAC page for London policing strategy, accountability and public-safety oversight." + "comment": "City Hall media centre used as the most current public source for MOPAC and policing-related London announcements." } ] } diff --git a/data/sources/uk/context.json b/data/sources/uk/context.json index c7c63e64..17d8d300 100644 --- a/data/sources/uk/context.json +++ b/data/sources/uk/context.json @@ -133,35 +133,35 @@ { "id": "institute-global-home", "provider": "Institute for Global Change", - "endpoint": "https://institute.global/insights/geopolitics-and-security", + "endpoint": "https://institute.global/insights", "kind": "html", "lane": "context", "region": "uk", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Focused TBI geopolitics and security page used for relevant strategic context." + "comment": "Institute for Global Change insights hub used as the current public content stream." }, { "id": "kent-police-news", "provider": "Kent Police a News", - "endpoint": "https://www.kent.police.uk/news/", + "endpoint": "https://www.kent.police.uk/news/kent/latest/", "kind": "html", "lane": "context", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Kent Police news for Channel port area, Dover, and border security incident corroboration." + "comment": "Kent Police latest-news listing for Channel port area, Dover and county security context." }, { "id": "mi5-news", - "provider": "National Crime Agency - News", - "endpoint": "https://www.nationalcrimeagency.gov.uk/news?source=mi5-news", + "provider": "MI5 - News", + "endpoint": "https://www.mi5.gov.uk/news?source=mi5-news", "kind": "html", "lane": "context", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Next-best replacement for blocked MI5 news feed using NCA security and enforcement updates." + "comment": "MI5 latest-news page aligned with the source slug and official public Security Service updates." }, { "id": "mi5-news-rss-direct", diff --git a/data/sources/uk/incidents.json b/data/sources/uk/incidents.json index cef12a17..15428805 100644 --- a/data/sources/uk/incidents.json +++ b/data/sources/uk/incidents.json @@ -344,24 +344,24 @@ { "id": "kent-police-news-html", "provider": "Kent Police - News", - "endpoint": "https://www.kent.police.uk/news/kent/news/", + "endpoint": "https://www.kent.police.uk/news/kent/latest/?source=kent-police-news-html", "kind": "html", "lane": "incidents", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Kent Police news page for Channel, port and county security incidents." + "comment": "Kent Police latest-news listing retained with a query variant for incident catalog uniqueness." }, { "id": "lancashire-constabulary-news", - "provider": "Lancashire Constabulary a News", - "endpoint": "https://www.lancashire.police.uk/news/", + "provider": "Lancashire Police - Newsroom", + "endpoint": "https://news.lancashire.police.uk/", "kind": "html", "lane": "incidents", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Lancashire Constabulary news for Blackpool, Preston and Lancashire terrorism-related incidents." + "comment": "Lancashire Police newsroom homepage used as the current official public news surface." }, { "id": "leicestershire-police-news", @@ -388,24 +388,24 @@ { "id": "merseyside-police-news", "provider": "Merseyside Police a News", - "endpoint": "https://www.merseyside.police.uk/news/", + "endpoint": "https://www.merseyside.police.uk/news/merseyside/news/?source=merseyside-police-news", "kind": "html", "lane": "incidents", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Merseyside Police news for Liverpool-area terrorism-related incidents and counter-terror operations." + "comment": "Merseyside Police latest-news listing used for Liverpool-area incidents and counter-terror operations." }, { "id": "merseyside-police-news-html", "provider": "Merseyside Police - News", - "endpoint": "https://www.merseyside.police.uk/news/merseyside-police/news/", + "endpoint": "https://www.merseyside.police.uk/news/merseyside/news/", "kind": "html", "lane": "incidents", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Merseyside Police news page for Liverpool-area incidents, arrests and operational notices." + "comment": "Merseyside Police current official latest-news listing." }, { "id": "norfolk-constabulary-news", @@ -432,13 +432,13 @@ { "id": "north-yorkshire-police-news-html", "provider": "North Yorkshire Police - News", - "endpoint": "https://www.northyorkshire.police.uk/news/north-yorkshire/news/", + "endpoint": "https://www.northyorkshire.police.uk/news", "kind": "html", "lane": "incidents", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "North Yorkshire Police detailed news page for county incidents, rural threats and operational notices." + "comment": "North Yorkshire Police current official latest-news page." }, { "id": "northamptonshire-police-news-html", @@ -465,35 +465,35 @@ { "id": "northumbria-police-northumbria-news", "provider": "Northumbria Police - Northumbria News", - "endpoint": "https://www.northumbria.police.uk/news/northumbria/news/", + "endpoint": "https://www.northumbria.police.uk/news/", "kind": "html", "lane": "incidents", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Northumbria Police detailed news page for regional incidents and operational statements." + "comment": "Northumbria Police current official news homepage." }, { "id": "nottinghamshire-police-news", "provider": "Nottinghamshire Police a News", - "endpoint": "https://www.nottinghamshire.police.uk/news/", + "endpoint": "https://www.nottinghamshire.police.uk/news/news-search/", "kind": "html", "lane": "incidents", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Nottinghamshire Police news for the East Midlands region including terrorism-related incident reporting." + "comment": "Nottinghamshire Police public news-search listing used as the verified current news surface." }, { "id": "nottinghamshire-police-nottinghamshire-news", "provider": "Nottinghamshire Police - Nottinghamshire News", - "endpoint": "https://www.nottinghamshire.police.uk/news/nottinghamshire/news/", + "endpoint": "https://www.nottinghamshire.police.uk/news/news-search/?source=nottinghamshire-police-nottinghamshire-news", "kind": "html", "lane": "incidents", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Nottinghamshire Police detailed news listing for incidents, arrests and operational reporting." + "comment": "Nottinghamshire Police news-search listing retained with a query variant for catalog uniqueness." }, { "id": "police-scotland-news", @@ -520,13 +520,13 @@ { "id": "psni-news", "provider": "Police Service of Northern Ireland a News", - "endpoint": "https://www.psni.police.uk/news/", + "endpoint": "https://www.psni.police.uk/latest-news?source=psni-news", "kind": "html", "lane": "incidents", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "PSNI news used for Northern Ireland terrorism-related incidents, dissident republican and loyalist paramilitary activity." + "comment": "PSNI latest-news page retained with a query variant for Northern Ireland incident tracking." }, { "id": "south-wales-police-news", @@ -542,13 +542,13 @@ { "id": "south-yorkshire-police-news", "provider": "South Yorkshire Police a News", - "endpoint": "https://www.southyorkshire.police.uk/news/", + "endpoint": "https://www.southyorkshire.police.uk/news/south-yorkshire/news/", "kind": "html", "lane": "incidents", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "South Yorkshire Police news for Sheffield and Rotherham-area terrorism-related incidents." + "comment": "South Yorkshire Police current official latest-news listing." }, { "id": "staffordshire-police-news", @@ -608,13 +608,13 @@ { "id": "thames-valley-police-news", "provider": "Thames Valley Police a News", - "endpoint": "https://www.thamesvalley.police.uk/news/", + "endpoint": "https://www.thamesvalley.police.uk/news/thames-valley/news/?source=thames-valley-police-news", "kind": "html", "lane": "incidents", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Thames Valley Police news for Reading, Oxford, and Heathrow-corridor terrorism-related incidents." + "comment": "Thames Valley Police latest-news listing retained with a query variant for catalog uniqueness." }, { "id": "thames-valley-police-news-html", @@ -740,13 +740,13 @@ { "id": "wiltshire-police-news", "provider": "Wiltshire Police - News", - "endpoint": "https://www.wiltshire.police.uk/news/wiltshire/news/", + "endpoint": "https://www.wiltshire.police.uk/news/", "kind": "html", "lane": "incidents", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Wiltshire Police news for South-West incident corroboration and military-adjacent security context." + "comment": "Wiltshire Police current official news page." }, { "id": "uk-npcc-news", diff --git a/data/sources/uk/oversight.json b/data/sources/uk/oversight.json index 5e90f93f..5b88cf56 100644 --- a/data/sources/uk/oversight.json +++ b/data/sources/uk/oversight.json @@ -112,14 +112,14 @@ }, { "id": "gov-uk-hmic", - "provider": "HM Inspectorate of Constabulary a GOV.UK", - "endpoint": "https://hmicfrs.justiceinspectorates.gov.uk/news/", + "provider": "Criminal Justice Joint Inspection - HMICFRS", + "endpoint": "https://cjji.justiceinspectorates.gov.uk/participating-inspectorate/hm-inspectorate-of-constabulary-and-fire-rescue-services/", "kind": "html", "lane": "oversight", "region": "uk", - "isTrustedOfficial": true, + "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "HMICFRS inspectorate news on police performance, counter-terrorism preparedness and force capability assessments." + "comment": "Accessible CJJI listing used as the best current public fallback for HMICFRS outputs while the direct news page is challenge-protected." }, { "id": "gov-uk-home-office-atom", diff --git a/data/sources/uk/prevention.json b/data/sources/uk/prevention.json index 4d1f8996..9a81c768 100644 --- a/data/sources/uk/prevention.json +++ b/data/sources/uk/prevention.json @@ -133,14 +133,14 @@ }, { "id": "icsr-kcl", - "provider": "International Centre for the Study of Radicalisation (ICSR) a Updates", - "endpoint": "https://icsr.info/category/publications/reports/feed/", - "kind": "rss", + "provider": "Centre for Statecraft & National Security - Publications", + "endpoint": "https://csns.uk/publications/", + "kind": "html", "lane": "prevention", "region": "uk", "isTrustedOfficial": false, "requiresKeywordMatch": false, - "comment": "ICSR reports RSS feed." + "comment": "CSNS publications page used after ICSR merged into the Centre for Statecraft & National Security and the old site became archival." }, { "id": "met-office-seasonal-advice", diff --git a/data/sources/us/oversight.json b/data/sources/us/oversight.json index 57f70b9c..f52bf41e 100644 --- a/data/sources/us/oversight.json +++ b/data/sources/us/oversight.json @@ -13,14 +13,14 @@ }, { "id": "us-house-homeland-security", - "provider": "US House Committee on Homeland Security - News", - "endpoint": "https://homeland.house.gov/news/", + "provider": "US House Committee on Homeland Security - Press", + "endpoint": "https://homeland.house.gov/press/", "kind": "html", "lane": "oversight", "region": "us", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "US House Homeland Security Committee news on terrorism threats, border security and DHS oversight hearings." + "comment": "US House Homeland Security Committee press listing on terrorism threats, border security and DHS oversight hearings." } ] } From 269dd673fe519a4e156d10c670d6ccccdebadeee Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 25 Apr 2026 17:17:22 +0000 Subject: [PATCH 9/9] Resolve merge conflicts with main Agent-Logs-Url: https://github.com/potemkin666/AlbertAlert/sessions/031ec4cb-1b89-4d8d-bf9e-a1596c296549 Co-authored-by: potemkin666 <183807833+potemkin666@users.noreply.github.com> --- data/albertalert.sqlite | Bin 2818048 -> 2850816 bytes data/quarantined-sources.json | 9323 ++++++++++++++++++++++++++- data/source-remediation-sweep.json | 2 +- data/top-20-source-remediation.json | 2 +- live-alerts.json | 4531 ++++++------- source-quarantine.html | 6 +- 6 files changed, 11589 insertions(+), 2275 deletions(-) diff --git a/data/albertalert.sqlite b/data/albertalert.sqlite index d82c8532759ebab32bf78d1ac37b5b9d7069e32b..881fe2beb4c92abe56dd9a960da987c965daa6dc 100644 GIT binary patch delta 54210 zcmc&d2Y6J));n|W?%wSQOWJNi+U_PB2xLPqfh+-%5K0nyXbB+FNt7a;8$fIbA;1Bp z#kLz2FrY-RKv1!w~k{OYqk1*`~4{@L)9J9o(D`6(B_Z_US@b7#(+IepH|UAgj6 zv~uNMw85?xRVw^sMO+^w))em?iihvqpRdVxe1!3MOM*Galx6H;DACW=iNa3p5zSlb z3+QomC~xO7RUcJ`Zg{+M`|h0Li4)V)(z~RlbxKX|JlxZzhbO&9$1d&Dx^*l1U!HgE z;qmn7*tNYU-9y2X=l|`e()(~if)q@2nXFwq*sTIW0?JTjWT;dsAp<-$IIMC4VC&i`}Vzhdj8A`gi?7y8Zlv zcS+l!ED})w2i|;W2|a?mhaLV(X%Ch1_7&B;gSO9k`2L{n#gE(}Z3omqV_4b!(Zf=J z%1e(@GpOvl=U~wG?7eqV?eYo4?<-JbVY^5cw#Y;{G*q=!Woc{9RS>C*9Xv{JQIDAC@o*-4~oPUWE5qT=FWDGy&8siFwg@yXG4C+}=-RHzGS9SM)! zfs8$xLqwoTF7b$8vR~b?{(&W%O%FaQI7IM;ou@n;Sc>9R1y~sj1G~zgEfN#K*T&!^?$l z))Th}ZSQxmJZQV;&=P4oqu(ko9$FS0;Kjor1z_~so~J1N1tqs)TL0{N`tG0|EPZC4 zw4Ft<&$Gd4lyc-&X$Nu)4>TSbh!oLa6c+E)-KzYcUmaT#)lb`;tkitZB~-)Eg9MB90 zQ*@Iqs}!C*ml#iq`C7j={~9wJHC%@i*@}22t)-+8Z*f>Xd9h(|q(%sX7d_6d*VuGZ zQ@-^2e(K*(z0o~gik*pjT4hmvp|WtMUriClctf(@tINhG(K%s+7OO9+C-CK}FNjZ9 zSGnY*l9KYk`-RFYgVpsD6&W-{x&+!ws^f&f$0{S<4lb$Rzda&ng-o*k2>1S1N&Ex8 za{W6`N*RN-@>|~B!vIitlZapx!FyQcf%m2;LNzHmm8(8@g!;GKj+OqaNO`12y*b>L z@#7u6n2AkN6KC3QCCZ)4}86^QUjPwg!;4_lwi5edbqwebf#g zo=O~|$P%@eN}GxMQe{F~l{pU!rglcJVT67$-%htwcv$P>Ley^|E#c|UE8qOAuRU7b zyrn)jh*;{J&mDi+b?ernbEnJMr9f7QS~<;kOBA68%|9WZ-X_JODW5^fxjI7C4+=_K zdn>>CH0v6hYieN47piB-VjQY`>+|QNCfdsu zvE-|u&hddoU*8fu`IPw|Dl}q)ueRSZI-Z(}rPm+C4mmSP5pJM{Cp!IkLdl~WSMmq= zvpGl+cZph(_s>xd3u~7?_}(vlfd#1lVXG8?ad@BnadXi2?LP%?U-|P<>H9F`5m^Fo z{V!AmUYT*84#36p&jjya-LJthD7)~uv;!u|I`3l80K78yw~f;GSrVrF{-6|qAz_W)=-|aYOhty0ZAB@C?Z%=3PKo%Mkzn)uNukkExl+T6o zRUxVwDvQJHMVr7Jg1)ElF@z%8pbH28YX!sF&9NqC$A^(^GC{~_+9y+?3=r>jckytP zcP1TAN=?agAi3$NSSnL5X)O|`EwOrs!NAri22x+cJz#e$)SJSSk&RRE~T?DG2dS$TrDgv>&W4U>MgP8YMVNDb|PIVUgpb!Of zZ77aD_02Jv(P~0=@rti1$zC^4+V|K;oJU* z_8DYG0zMvqR!FJDaLS%+l%&@YCGg+f^7Sv{E*(Ry)J~LCo~2rV3d8HB>my-e4$`^E zZhv!cNS@c;or6|U(#hafJP;|fDJ!KA^v*+6vcE}bP;5i|`7?xVzKIY^M7_1=Y=~S|3WE<7(!#j5Gr~o`r2_&WpSC?m^vDV7;e(9 z&^;*Z)_$fnYSPrh@dIcRe+#!-b&z0v7u=MO@|9=yp#^A0(3JQ;wUJCM=EOoYO!>L? z8HN~FpW+~KwAdNWjzFzp&~Vg6c?2yZf-7S9W&|3lJX$Y~M9fAoRhA=m6FXSD7TCjN zH9q=_DSaznsIgFMAJ{af-j?bvi6(+wqg#-#2gabm%2Q)`5t^#}sAXfX$I1^L*Mdir zKE4H?C}sl6i^^#yU1N!T0&xP$_{(WU!X(XXvVn7=LM+iq!l^|j{Y2vPpW!SV`c!qs z>^62bb=EBrZrAS9oX{Y381Lb3#|?%8qUT=(%N#VsR%maAB1Issj*Nu$bN+S|L}fnV z(-KswIM>#GG70&VDSx19c*JR9mNhpQHcUeiF#1{Yzk3sG?#gxd_cYU9klbW%nMy|$ z@^*M_Dhj&80DEslK`YwewrMT+hKr{oCL=~!DdOjRPdMp2m^cF|U-k%{W}zBNp`V?F zy3@?oZzh_o2(wwFQb_0mooAy#ii}KA0MA8xr4JakX`G7=DqITzMP=8+P49No_3&cD zZblCTT>xPo+7T4s$9Zh#kJc$;#X@Vx{;+%zvcvY?whomcekxfbR2~vIo9U_*Z8W_3i zg$(^^RY&a*ejzsxZzgu?kN;rsTBOX*XSftoFb0r>egdQTX7+>WR{SH?0{4a3Lao|R~vBI=K3eY-f@+P2`ote;o- z4|08pIMeDG8Vi{-u^raEpz8!5eMxVsFoYPm4(*h3V*r5OubU!HvwERm9cl~fenK}& zfti8}h+R)_n*_R}Pqy%ZlP!6Hlw_u#<+qsX+Y{kt&Lq;=R`+C28M?CMYsjN`nydW3TW=fMXMyqlgGnl#bnurbkT} zEww6A52R}IKYFMJQn#R>he*H*Xbpv+{1gd%0VrrK6&%`%s-;~pf?l%?t(5|>Tb^t0 zp*NKv<6fCsjjcrYP<^0RWDq6W>6tKSbl!oUl6JuW^x4T0i%QmtBgKW*tYLO*U~fgT zLFIiSDkoiUY;J3%S${Kde2W@D$`%r@02+6p^HS7-?BaH$9%NRbEm4wJq+_Og;7k>2 zOTjzuLsaPyyCxUzL(8dG7-!+d`)Q5K_TeMDJkmZGlHc(ldR-16m)7@)I(`dQ`p{x2 zB)j{X>qiTNLs+V>(g$sFGRi}&iIDFnF4OsHR2aO!Z4aY|DF}Im7;Jn5QAN8fiPk>a zl5mXQ)569`_r3H=1*lA)OqgFTSO-tEL&Yc@1>Xp~@*B&wjr-8Hkf>;?ltZfd$oAu3 zKY-J%ho{@sYiuE-j%GcOD~#H>W2h^&*~=_W?L*I@k-YE7U)=_lhPTvf{c9-r!9>_}0FwrFU8~WINt%NxBxiCxbA&FLN%2zTXla;UA#+45k!I zio?pifQEBc`2GV_%D_?&YEB`lwi!NJMj!5ltsly)9Yfs-rx9K7AAq1RB0|!p!fT5V zN0et+6B94{HK?iZCc{mxshB%Z6BliW;3(md@;L|Bvj7D={i<)l18lS$j_YZ_J&#UDpZo6DD4y?;!7&nex2$_=js-;kL36`O64P6I}N zO_%pE^UC}N`J`_!0A2ngE5epnzNLOEGnY)T<^HaP4O06Vc7s%k6f~YeFH0XVSVo*{ zVK<2Tp7uzY9^U`Hg<{c{e_)4@E1rkIbJTG^jQ@#_x!Al;*3WEb(g{L`Uuf;k;47SG zOP{D7emma+&%g64UD(MCar6RWj{8tU+^jp<(d1Qat^NDNLQSQ{3a>}t zrP66IwAmJkCtqX9mW~hiMPVvq6hMd)eR0yNWT+3vRyZ6*ay5_bY?a)iYa`k*Q=&?Z zIwraW08b1{R*FN!<*OXlu@fOa7CYg{g{YjXAtj$k;^m2SXoJIGWh&ygyrH}5WM~^i z9R3hARb^>y7ECF|zJ|H_t-1$H8Cr!Ft?C2~pCK!FQ!%x*!H`AU9@9t71B*+OdD^OUYi@t|HWaso zle(mKiW~3R#tv8;lJE+)v@?%34K!wPd+>{f8}x4zFS4HMQamvnqB>q*LKg$Nt;Tm+!mJx4#e}z`nERCc|`S~3=c#ZM| z*`AA)Igm+(8Rgun{;hk8TBvZ~2snPaRT12MJH4;P=;++Rc)D#&s?@QOY($Z>FWn;k z$=YMul;p3d2jU&y$~7Z%Q|IGj!2+(RIQv zqJIft+6dM2nsC06`;uf@cEXa8c%>o;Qaa?eQ3|=()Tqlw*Ci2BC&J|6 z_;y8xr_Iise1(RkXuW8JLcTuj>@8k3&N^x=Y#4=Y(DrNFbvQR$UWgYdnORvl1_!+o z3>Fp1oC?o)ndMwGmhJ)=h$Z7>t_uS(e>}bpXE+8=zy;U#Za->&S6sTP(AqOM_R5jx zjEv4?zqo9xE&}3icDIE%FSb;g?hAvIa?~+is*|PWuUn5!={-7o+NVMN8z_-Y1F1Hu zELyW&$S|fGx}hc9WL#--=@WG6+9J(Fb+&3FKaOaW88G}tg~BshqZAk8o1z9bcMUy| z%96ic(G+ACVqpoM?QIbocXNv=4Vm1X~S{gVgI zyUwK5A+si)S(v$Wg7TxqvQ>*n4MRK>#}hw#+uAT?zR^OF%r*y8$0Om9y@D)vGJjQ> zHE%o|>FH_%?dD>ttSK;Q+Uw*Kh{xGWh5K4UObNz5hFkPLU5#)YWoVz%9O63gAFH2J z^{ViO!$&vcu?lkJ(S^8J!Qoo1xE=|dr8nUr*VYtLUak7^%U74e$MY~%NFQJe3eudY zvcS?Ze6u3HFU8>p=Hn^0T&$R-dS(Hhpdh2Ya7zou<*`M0x*}Ako$$e{HCA^jtXM(} zuyA8yBJ7-ugBK|+T!N``M@FIcUfP0@i(f|X1~(NBQhZ3_uy2Xi^c5s7$GP@2OkIY(B`TIx z?8Y)h0%0|#ZU|+Ixf@qw`bY>qTzNpzhc^h7! z{HSl;jt^64Y`a4ia-O~e)8|PUik`X?&&>VH9|LIit8(k_!oAa%{7)y9q+AGrkAp-= zc~{a3?bqQO)V*L2R0J??uNPDII0LQU?8q?#qH?sT!G!9)<|`M z)V@JOX$<-J-c!Qg{rCl?IEVJ&s5?VhyAsorqjW9fI=OmrPf~p{sx~!)dsPa-bdlYg z3-05K#bP8hs7du!$37f&MQ@-lheT%h_nL?x4PMbLLr+{Vp}>Wlq?-ex>VBVyh*1Kqs#NH&Q#_k zRNCegS4$J5I%;Nu;K<^ryBL@=fS~Tj(RJIhuc*N%{Wz*TmOWPYb$_mfbF#GqIQr-+ zb5v(#c1wK>&f)0nmK@QvTzV#~e`grj(je~*mFiiQ#bX|08f;vQUZ`!A&&AW{LIVeF zfp?AN=tzg5&7yG}l_+Ep9W`; zr%;?K#i%xP&`;FeD1i1~n%~rkxILtt<)$g+S;wB^ro)_d*ldva4p4ROAN>d;cz)!j z6k9A(!Ilh1h1ShIm)c8dKje9Hp?K=|+)M?_bTfY7u1D48l+|h0$(>>6dCmsE+?vn_ zd>1$>xdmr0aP%D&`k%>iC|)sj@n?>{edOpxj{1lV)c?XQ%?%HiEpJN|#}xZW*aWtm zmkr1eV(PD4wNyHRL21H;milOaQ3es{gR($k;cEAmUpN<>{Z~R882p=Td6+Rj_>BvG zj_0l4TX3;YU*g`B&P(n`4RUZi5&=$eAO`1X1xRih*9KTsLlbG%s;in3XGFJrA`^wdo8fLSULQr3z zimmY4VctC&Ws(5WMTI*zYnYIi0$966Ge-Gj+pVCXw($bYN8jx-SuD1CU>#@@$ss3q z8oahuLu)K1A{?_#LnTcEeNro79-^`ZcJhATpea<~j$4{f+U(F=hf^r(otnAIYw^5$ zHOkyJNO5x90mnh$b_M76wT-(pW>IL+Xu z@Af?h_6LM-q+PLBLJfUTU@m5+`qGxD5{aIRh0=$FDylEWmo4@Q>y;Pj&3@qt3a>!^ zoSK4(S3OFm;D-SZ3*&6#P0iVGK*wE?mFDxh_VgX-%^C3`ajFR;LKj3j(Wg!(zs8UOm{MSzpRs*{Q~`AC;9zG zaQuMKLj1AqaiN8KNJc*)1izW6)^kuuqnMtJP9Ccj=#&71>ZT`YR%QFBI3!T1wNhpAlUbaK;P^WV4SOz%@wOGk>+Gm4`X|Sl^cV{>hn>VZjW$}_Aynl#;0D#&muC@ z4T_HnGox~-y&y>#)O6+SKUpnQS|^NG-f$$pDvYrWX|D942x=a&{*zVrlw7-B6J{%~ zHO1$Je@W3`jLdy62y~wN(xbG3diuD)mN6=BjpzQAzepOyStlV2G5g_Bb_KUuWqGuLCi-I5T1O?;T1Pp)>(&+@AeYMgM`Z~$I}B6E zb;~=^>p~qrT>H7^7jA~?KbkOgC(|(FQk9CYB4+6*gj6_&E1$J{s?sr9kx{8*bH+T# zU+KJ&?Dq|U?<*YR6v05sad2v*W0)eN(y?o&%?{f0I`@`?HbSkpIOts<2IA)}4(fx& z5P+a1di3fZ*2JN3X^SHQxUCM_dty2~y47(vMH~iV$2JGOqv&~6hW7G%9MtYs6H-*C zlkauVcl!lKp`schlpZL^bdsF>E=SIFSe-r_99fDCOA%(^c1N-Dqjufln56iqBv;_T zAx>OQD#f27*Myp_rWm8jkf2XPJ9SyYjjE@#xAS|sxAA+L3ZfJ@!|sEQ5sG68d50XM z6d9FbfAz8degfCA-!WH_;c4CU_5lYSjisHI3HhGK9WPL^ z`cw3zx)tx`0=b9{u=bcjnuc<}$gKsBWs`3Jy>-+vQhCO$t#kBMe$<)IIp{KPW^ps0 zchH3)%-04&UvSW6Kmit_J+Eo2$6K?;!}1>;Hqb9~^@F8?GlODGrq|bxJLqB(2IA0* zGS+1vs$X(Yw-vJPSLMqNYM%%g7jDHXvQZd_`L80+eYlWipsoLM6h)c-*$)}e= z%0Qv6-eHCPZ#u>@3r;;4_m)gEv!a>3y42d%dAY;@(9@3xCofggsoVJ5%qb5^5 zhI~`68hwaAAd))`&Yg3NRYYi@w(?;J4@ z3x1So(EtQ3gOk^&0=t1k23y0tpB(g-5W@j|e!dPNCA9xVHqiiH^fYFyUTV$DyDa%J z=N8kWToIvA0c#YoLxijp3+Zh2lKRMe$9CsCuixOVV11R!9=!Vt^j_}R_%1iG?wR6@r zr4Th+qN+9!RdpA1(mHAPjaj-jf|GV50}xbaVy`t8DElJ0HQ05|2^6m|y&cmzsSPl; zR^tu5lPWY~A&wfHRLL?6vDfHaN8usoS-8XGTofFl(Cnno*)VglS)5dH8iNP92itl7 zQRR85L%ma(Too;KbJz5?W{m;!n@$%Ty`)n^ac5^o_^z{yt`lL_Li47Rb=|4O`R+|8 z9jFBQpm>ll^s|Ja55u;%ozy8WW>KK*9p^HtcV=O`zS|PS@9!!^VG7ZP_nh{j@?8r$$Zu z=qkKTL0CR^PF9>6#P4?IjG*vf1b0hk7rVhjiKXCC1$HubKulK`t@q`f)uwfGg}2~E ztncnxPGJ-XNvQEmx2Zg2yi~ZmhikjyG=tint`;=eu3j<-W(q`;1wP=k4V=AQE$j=b z`?#nwb;cW9+t|lNeo3{BeUi1iqeE2M*`%Vpmj4c&wph7aP36YThJ&~kh3H>`gin&c zgRj0$?xP6V=xv764atKP8J6Onga4OIr~epbx#rVkdix^)K{1@}HPsffS{vcJ&yrhk z7Y=@&OzUPQpkDj$WLln*zew&*p*-u0Wa{>7*1EO(GMNs^m{ETDGMSD785T5;QT;|H zbsjE$m3$qxA)ojrxrMybrvD_e9a1?f~uClnenqkH)Fa ztL`8S-CH+<6di@AGWz#~a|P}Q>R6$-z}+AFq9FvQL{km>3fw)h&km)hlIez_?Oc7Z z&juUXxuOCem5^kZ!L!cMx7PE0${VIFM>)-qe3fOP#b!Qe?rHkWw2IvKR%OgEyk#iX zH|i_(A-XD^Ti7pTYU{N*nzuEh)UT?C@$d6vxDU7z{538^XHmZDRaHJ&8P!5kJq4() zb(D!35xgDk1!_?x`g%iMb&}mkVIxLs#^^=6=*tLIW#o$BUCp(Iv%TEB{tC_@9*^t> zuk1|et?~6DG|Gj7ytpuCUb|98V_#3GSZa$hN-=;AS@DI)2k}3;Z1R^%?u;GGiN5Yl zZ^`hki!cu5mWVzG{mEsMwRwF}BlxAFkEC0Ejg$>{)NUTdFA#lQphOIp69X;g^7(n9 zuQP0#9$h%7PX?U6O?UqN9+Ei05lGWpMrfIVfS7+{ZM$y2<%IT`jg4h7ed3$ z1Jxog`aE#%GrJs#vSX2U*uBx3#m^LdX>jy5H_bj}@vZ^b*8$4H#;3KMCzPS5uFk(<uk34K=<*E`r=)h|w?9y{#+Pr3w!S z@!A7gmuA1Fulf!3BsIs+=Z)M>E(zD+?x+^!sLnwC23OmPd_7-E$}6GaH8({r&ymQ^ z@CioOv?`PMlB z`--6V6ovy|bY)=Q81Sf>-k|ipWWv*^o@X$*-`R^t=}ElS(q;RhLa9FP&G4_QFnD}cR%bK z1{M2csFf{D7>Ip^;5o+%Q~dVW{(;pffD&UggZ9bQwp_I+h`xL{a*W}N1MW%KN45|~ zunY3Wm(DDHh3FdsVh0)BYi2q}H}TqF5NFC|^z1U%c)mdN4T1)jY!>xP-0iS04{G|z zUkZ(JyZIQ=HxNX3YnkdT9UmVBN5{q!Omo3=S8GP!mu0z@U|$Zzr_i!n_E6+VwMcr+ zhJwOq8*M*GuZyv70MzxAtNPFhfuZ_C*)f}Z1q)(~vhIXc2u` zP_{yDu2yEo&&IyKQ1X>cZgvVH6X#-|7pfky%Eyb}7e%(yL|-OUwUd+VT#hS$OQu~j zV6V!uk$k0aecUu+Bm62557Sic^F-7@tzOWU zh`tptATKT>=9umk9g6Cq)(#PUOCe6K>MGJw z+}O7SLPp7HQn4_}p%DTmaxv6dqvVwKo`@XJ69HTVRX@w{EV~Ey4G7UKP_-ylz6=dF zhYf&`V~JYqTL@@PguLH^XQPVv`J!(DpmmY*m&?Z6hVpYo-+Tz&+nN#2x=SIs#J1}(%FhvfbHVeaj6yYTLpDE2^v!{WwaIpa#NmU2Jz>50siJQ-lx5TQpx{(w zCV!LYn+5gv(+lj4Hb%n9?|BE54s^7_zM0VB`6RmACXmu^68mD`45*Q}qFG^4aQ6A6 zE`ixhhq}e?Xyc#GRX1`|XiX%}gOIK%YV4Z^Rlciu3@;=N!@e7#CPV%_nLdqwFgZs@RPCgI zA3PCCzLv!bCC7F4EpEhvu}4Zzjjx1&b$|k6as+MVOM9dcqgM>)$l&@b>jUD*`2Jgp zLp4R?RF?IY_U5O_m#)4w%`tvwTx>XFSZF}{yLIpDiiJzU{X%E$Guly_4>gn3->X-s z)%;FAg4@G&$1mVv& zndEtA8ncP!@rOg*ODuy|EOF*ze;9G3Sv^qmwK|`Ov%fXOcMOwZh?d9q!G0_GqU2TF zpf{6-Vt*^}^rz*yJTYHTQV5t13fTM#d2zS0M|K_p!B z8=zz(W8y<++J~q`jp)}y&BI(I6Sg)iO)Msc!moq6r(+n^;N7pyB_X6=0PnyQY3z2c zBz_F`YoU&QTsA3wBzL3ehl(YZ%af1meN1d0|0tKeCC$VSajNc8S=L(I=2y+7rmsx1 zO~|;x=rEih-^cq&zgeH8JEU_7$Axa%=d=^GShG#jTm80rH2*WdiBIQhxe@pWT!A~F zC(&@#S=C*{!{`y1PA)WLvX1OUhM(o@4T-sknzOfr|+WcM!UBM_t?=X8opu0?VB=4XA(sxHf%8IVzuRQXgcqg7KJL`Hiwy(Ob^ z-LAwwB=YokhlU>*KNY>gbqp+RH`x8LjDFr>DP&!{g7{3BTn?*Fb9rhKQTe-oSP?CE zszS>Xr;sIUIGRFf)`nGKUDTpk^ml@~oG|%I;`5O=@-sw#M-ZnvWLm9cNPGl5HX
Yezc8z^=poV4V###nxL|5C8^4%%_B``O?Q~0j5Wqw zLxUk#-=JTq=XJN~+6a#eIoby8&03Xah5C$o3I994jyH3gIS+mY4@U2keCrpa8`*y( z2=LE>no+FgtC`@Qi2XCcb1H$+iuH$W0|PQO145%5OsjZ*LSaDnPlu8nvQ;aKbmj81 zME^7>xL0PQ3%c0`1l}T!ru?mQX9KRsRQS$IlfA)aOaaSWK7=E-9XwHNj`QgDWMbN< zK-o=p8DrIrHIEEnG8rm%$S^5eZpE4ek9pjiM_7v(Cw;uCd7K%L}+=RGDi ztv|pGP#cLCIFt?QDk>6tWB(Agp{kba74RGfH#N~XR$X*wVE-W4fMpB5{=JmW*q;aS zsd2J3+r2J+6!s5<(2We|oeQ(|-m<}<={GUphD4gTnqy6SOzn)-##F-|L#qB^eVXo| zuA{J5aA`Md!!@_4-&beykMe~)$L-~cxlsHB9*MppA8!9aHL=1Q7Rb(2o51tbTT7p2^D|;zaCr2w&T$*YP zfgl?GkKGmu!m=qPk)-9S)!=c&HfgpiLwKOW=9CnkjKPz%iL;5Fue3rvwX!F|CQNxQVXvz^mkL$4p#}z#AhEgDQ5#&*ep%SPkOC;c`2ke`B*H>|YEg1(}ldPPO-gmCq)I2@6F3 zA~OD9sCgzOl2SQUU+M-0GQ|Yq7AUB8GL~lV&ZGkDUkKtExq3f0!dw)HFi5WHYsL?& z`#f@FpmBaPjaJC-t!Z)-=0U-aOkhN|kP1o4*MBphU2;8AY9L8?|4mS_Q^y8Hp|^&O z3dH7RP&1khu)VLu23D(-#Lp~+D;B2^LpB%U$ICQ^_gNRw3v-}K-cYrb>=gKCLwy8m zHi%srvZa*gU7^B0mE|sr!+gIv##C+UWjtUkG5luOY3Qy$rXQ-iKr;Dp!ahQ+rTRXKG$u_=Rab!byQRo+(epSU7U ztPX*KM=z(2B;y@Tu#+9RY71;XLPYXPg9ldL?e3xFIDrglhB+5xt!4c~!(m?mm&Osn F`+r+6ZcuZHQkiXt-^SSGtAM+o@Pt*%ChEIc&606&veFk4^1-q7y{`O zY8CYQy50-!D`g$=(4kP7jW~DSwE$>zE81p{kBx8MD7IOn_=LW33GOY|8dih-_%U|2 zMUz05u^`5hL?w~`5||{2+k$=FSJni=25;1_8q@pH37RK1Z2@RJimd+0J!EY^y$fzj zd6P%NsJQzrg+F}WURM1F#0Mb}bocF-1<<4b5wz{hJJW@MkD!&l`+Dc0%zQ3y)bGh-+;*~&EiztfhMuT*ns zLB)JEC~GIL0vRZZY7V{f0-Cy)Z_dEOhUpSvcixu%G-u$diF4oI68Llm#qXLfEG;w>|;^4prgU@O0u6j*h_{tG65u*=vIAP}P&xp*m^DM7yJyqWYhv zOX3v*=i1luhWp2ur%z?h4~SqhMg+Taw>NAdAmQj@boh>FmCFQ z+o$+|JO9ipYRMjYwlA6mp|_#~lz-g!&sGR{isisxzOMoqyk=7&OHzZ}{k|HhdjmI4 z_0o;o@!WeVYB5DYW{N3|9L-R7=*4$bKfC=eX&mLo&YC@LOpG8lgxR97%G)9N{&vd<RYU3ap;)32_-jVw9=(q`;3x&+10LMNFC&u_=%ZplVor>P+gdj z7~M#h9s}b*{pePPaB=mmzD_81pr_k&hJR@&+rD)$>z=sX7Y=>o?F&PDMTP5H)M01J zDQ{{l<>VZxC>nj@dnjH19XdWYJKEZPrwBuwR?LrqHLImcl>UA+<|}>+O+XOBB6=uREaGs@-8` zF|4WN0^mqTWV3q2Dv5X=OA;(Tiks8kwG2x50hP~N17KJuVr&Na;sA)g74588+=-YY z)tr#k1?f&pA-O9OB7Mcudz{|}!kTsd`7YkdwjLkoix3fe4|PI?fZrX~+khPg+9USi z@Zo;s=k~f=7mjD6I@Q!TA1xRV;V&7Fq69JndPwUjvQ)1p`hlB7IU^kP?M-bxye3)a zkhrtVTxL3A{MqP@Gf}#s87Xm0B1Cn9^7I;P@AY2jc`1Sq)s-N^TfI?l-SSY_2dUi% zOzVquhepu1pGLeP_SqUtVC#?6>9sFElW)Sd=oRS8RG*tr*@3(LQ9F1w8}+X~iO1|y z^TdRfN=*mK251lI?F`gSH(TZmM9=9)o;0Wi+wCz}Yh#)Y(b}T=Ly1;*Y$*6?lJ_=y zYT5`9!}RYk(oU4b8(l+A8eMZZ?FqI7uXdIh%mVW!(+LwY`WoWs1^B9U*fyWyJqWI4 zpDy`#GpVCKj0X>8}tP&@|t!+?*-KP$uPM!~ES$)6~ChDJ%2UxA$%h1A&r zY#NQ!r7l=7Mr+V!Jdf1j81x#aKXgG9B#cM816WANMw=< zU4AF*_mrutr+iY_JoP25cxFtmfy0iQfpixVAYdlaowS2>78-~L*0?$a*4c#oe<6hT zW}{&>b7hfs6JFWd^xjYwT)$H7?d|iG#+prg5E}VK9btPfrRIXu;>#@Gr0V{)-7~hgjTEc+Qg6K$FQl;YY}P)i*BLO!tZj~0zwu` ziG{q;D7(QzIvia+aa@YMxotQO^2(<}tn)2fnce2^&9zaysWH{n7-E39uOq{tYjF)U zGkyt5s~HpF!E0zp4Trq6QpzXrG4V)CUPlXbi-iADGzJgpF9aRCc!T#-4V;A^o^N1N z+Xwmr`XSOErv1$Mz}LT9{2&F8&p%mVFF=Lr)3^dCUv+}8Wf^)`4O_n)6$vm|Q((>t zDSJs+DT#5=Yc&Xghp&H(#bx*~gf0m!hru7MAJqgAm=}+p8I-O{X z*Q4prjT?>tsColg-0xo$GVGEvbX!=2E+Q;Ff##@)^~l*9 zM9x+MeG;{ygAEqAQNeKVVJ`NCStm&-_s`|;#}B~UlghAEZ_3#S{e&7jnuB*0s)u@$ zi8+6MKz=v2VW8%YK&3l6)&0^hwSqDAD+y*hC)vdGbK3d*&!ZPrYZ&-G`Kf^V z(k$FOk8)MN!qy8&ESX=KC3cZv`9;YfD7zeX3C&ZD_2*y6Ph!Kv1!MV0H72KvDa7FA zM_UBHBNe4NCF6Z8*C*we_(#sC(G?9pqdgMgLnHz>Mjf0%j%a&hTMMsL;~v8$YlbD8 znN0OI&~&JIscAJ464FHZk5mMakJHSL%%8+2cZAfd$QLGjjoRpKJwW1BQajMu|A)|P z+Wdh2Mw`A~`Ubr!@KZ5vd;Y5(yZT$L*IfFYz_k%UQs{dGrs zqF>&X>bweGN7gnc*$_z;6s@64$MNh8yzFuSqXs*BWX|`%|=1hhx2&U zBHz@4TujF3xz^)3gK=b;(Mw;(BXw($j{%D{bA^}p4Omkcx@5$ff={IhYeKzG&D!~P zFj!M1-(eI4 z47*$li~Uh$(km<$l~@*fbH1^lG262%I2+>#s9I!-h8SNwTp%$sN^$^~eQ}oVrBC>2 z_Ra7k3L3KQlY?Q4+r+|W{#b1AD8#J@z{7P35WHCji(#ca+Q1Jlh=fyqn1$VSa2?oO zS}XFO%w2vUR+pk-V2~CTUr)0IGe5h4V+Rd`&|vI>efR2g`iBKPbc73ZG^tNQoV-TJ zP;%1pPqakZ>83;_$577N4#pmBYwML`U1oWUS!G^lT94z=0Art1A4B;Ki3fVZOXD7_Py`91|L zSXVM+{)lSBwrHHK*7%%;xV_%lplu8us2AD54=iW~SHD3lq&C80bSY~IFpcqE)y_zD zz963M+#Y`M!409x(jZ2!o|ngBlXuv0${FJrVDDl}Be#BMSXMI&%`;7tjKzjG=yF_+ z4pYa;k-r6t+u;qu${pHEM&(!vF)BK50>i@gSgfpf=paq7umjdz4m9)Q3%avid%~#{ zTn|3lgp+kIJ)tx1s~dS_C&}4Fcb4efm5TH9PGHV=7IbE_X2AYb(sR%3XKklHqY)x`9tGNQ2m(By&Cga(IMp zQe%2z-M2R*?DSf4r*H!0Z0G18z60sLLh@izMb0iYw1P#0aX$g; z=0H&mJr4X?wtZ&->*6)0^*>=j%fV6=*_n79IUj& z$$68<4ilGI{2}CpsD_X+4EL|zRHWS;Mq-Cd%4v24+9Pc7UM;Ci+zCyyrdb*>Nv33D zJ41}QFP%!Hr6tVB!jo|4>Ko`Guq&5n)YI`*}i;o{cf}ZNQb;JnV zr-ri)9*Nagub|^|Sd;Ay8zngj#bpf~jnx-!JbDmMcGehP%hc}xApZFpgiv8)i3SfD zB-AT*my+b?X*^^2i3KmQtw)4HW)JKK%jWrZ)-BU5$4N4$Y&LttO)i24wdgT-pSyf(3mxs(&lqnxZG+#Y62_L^p0XW7CW zGFO^DGH%DS3|G)R`tmlP;w%IQClk}I*O4@N0eAlwy5TwT3FPTT;5bOiCDBmLg!#&g zSbg0Rc1^(}=uWssN^x*19#X@llP2O}H5_tinpRo1yriGUX1;r&iH&Lmb7qi4h#4Io zPHszJP2p$S3~hLrJX51<5H?H7Bb9QX_Z$-ZH^DW0_ycVx5oYL=l#)DrTrVyRu>*#t`=R$nwOnJdYdoLa-#xmYaTE3kKpu-M5|VD5Q% zP7T|DyXND`H5_tw0Ty16!HR`aV0w8W78}G0H5XsTV;_B4fUw{JieJG=_@zhtU8maD z3J_kKR6B+yi*Rxc82exm&Zz!+`y~8HQkcI zBI+igL?_|RNbWf-JDhznLW1kH8RtykkgVDFVT`J|D%_AGg{HjsXTLlr%zCeT0%Mf9L?-Kahh!$%Jy18ErEa(`Xzt9e|}#!O4~c~emy$)$-SdT z-j>3~R9d&2_veS^r?aj`npRcp(&&gMF4y$YYmcrpTD-j>_xZrojuuMF^6h%K+Kv`0 zo=S`Gr}h$elpfB`4z$?RRbYHaEnbgKv=D?TOT={+S5j7 zwawTyK~CX~-9PsmnFrO(pp=B%0Tnm?9p)CksWXKKTo{`5%oL`?_KGt{t$1GF-8ID^*2 zs(S{~;*AfbL%C=WEqXtNu<3(oO}DiB5L&ELsqXn_45h{TtujH}FwM@&GigV05Zwkh zwp~CWRJ6_L)xF(D)`j0y`YiD+@s@# zqxSlfOsUtmJ@}Ir@9R|Fr-k$aPT!_y;M%nxsSQ`(4TC!ps<+T_q2FT z?n^Kk&%pOCj4HWJN5F5V!|Fr#2hvVt47l)s)--g^{-t$4mmkun1uA66QD`VMZa3lL zup5+v`ipX6uWp9r=$7?GhsiRKdBHr-G~f7&y*~99y`K2ab1-g&srSFRZ2Q4$rU`nP zZ7?jQc9PY$!+N(#OzLEU4c1FdJ5D@#r4m;&aPmF|@J;TOTT%>@OI$zi!eWi*;OW%B&gHo{;BLve01| zvC^cwwhmoa=|3yLZoRVtx_^C^yT}-)7Wzzzyask)^rsFdCnbwT^kUW}JhPcbV1)J z!FZ6Dp!n!eM1b3IN9+fAEP$CG#ru&vp%Ao*iGcJu27h>dQ)B>SZeT?5kd1o9^$pBc zEG#6~E#S9}%zgnTBbIMwhKqO;wuVP2BSv(dDzBQhj}b3G$s{)Lgh165#sEj8J&~S* z2a)6{$~p>7v>aqMn-5W$rVov8N}mFO%>B$b-0|rj^?-?$L`HOa7bf4o;JMn*O9kke z%M4@n4u!_YnNk17AZLHfoDyV0(auGmFhVLKe|*K$HlM%_8ZVU4jvtalK^e38Fr&G! zu;K`FP(AktN12Sr(ru%lKIzAptpA&C4?4gMz}va3>MD$UkZ*0NcVtl&Q&eRssL>3~%!(PBzT*?H^v@+n@WnWkbUnq8G`Oy``#4@2u=SE*qMKu3{Aw;rZ?pzK z7ju1eBad}+gY_bt`N4&)*am$BnkKx?wbVNjK3l@|*Nbd$G@#tXSuKWUOF1!X9e$q^ zgGApFPE6z!*zFRoRL~C@X66SJCbHo@;b95q5A-rlOq654G zT&ixy?A~94nX?aaVy8ygUFyf2SoDy02em%oc$MCgdn|=R*t8)q`wy-zdHEL64rVg0 zBmqkqdGZh^hQSJK_hE_83hccjoanw4Yw`L~PRhDutCDw28mm~EDW7uE#|UJ+QO6~7 zr{Hxu!7Uf)Q($qQNft?g1)SuTsdgJ9RH!N`X9Gt!`()cHuXA30UQ{g)%|7Qcu+1btuCMdd z_9!$x!%bFCbLWgCxeAw0o#n&`SAnhig4?4WyY5R)Opg@2MPEr=R$w{jB$-lR?ap)g z!hEuv`SSjSV@OQyxx3DIz9c|-zHbH@h!u7W5f`;D(PJ9EQ%zW+w zC&uE6EUmgI?NVM1CSQ`IS{d8zGA9&rLBVTqMKiYiYvKb)d_nHN|4unwj#PWDZIRbI z))SUX%ngP%H$gW{DaH))ZgM^KJ3dcN|0rC%!R6{beR%CRZjf%|^EV~-DjQz^J13?* z3T)~hk`ODfj9ZehD@;iFQ@;;|Cby-9lnLlNnjivh+>ta_!Mk)<(ozL>;-1891@_K; zPOMofgfDu)iI)--yxhMuHVIN6a$=6C;JN;mPFaR+cTEw~OJ#}u$d!w&MDRT2>ka3* zC%u$uo){aaRIW+5IoHZ2BtY3&mp^p6<%)q2T4MzbrngYQHlO0!2=*CV9dw_y+vpmn zho*$YW{=S1skRgoDSQQ*nOz#=8_c*wLo4syz&|tB2@}7ItPOz{*HA%GMgntJe*5x>l-S<=(Ef`*pJ~_LNI^ zKw;){=C)zeGQjb7n`d?v4OX3`g~nX27E%P+OChhOU71pMbKm)LYr7TR#mCHig!Hs!oaqbCC|xN4Bm zOqv_Vw$FmB3oaIhUUcaX2@@~rUk13#8m@x(71waRB2fOdtD|@=O+FTYga~zFVqoH^ zHRPyPL%kLeVlXWasEBJBL7rV#_uLg07PpEJo1e1tFxcl)ab%W8@M>bjD!nwq&ejnc zaVmR8f+@2Taas*=DdZhRM4Je)P$d%yrsN2*_AbMUQX+~{8kDC*n#zJMQReZagkE8| zjxIS_y2zeyTk2JgE37|Q?nBtuk=Mzm0#CrDtC8Jw(_QhONHKU+xKea2QYm=}{SAZV zI8{Qp@)}(KCQ>7v75|MCrBmK0%>Oo0JfNuWB3lZKAOBsX_(WD&tkL(8V&tNXz4Lvf z=n7?+!I42VfnKY)7&!W4r2c%w`)XveZf2DK6e+5>%zjwSR^`EQXvx%OFJCrl&Elr__`mN~x7r?|ZdMvRJTjmhVhsw1PTcW6%Fljna+ zMn`G*d~|e_#@s9(6E#=&2G>3xB}S#n0c4JiQYS*#?jp5GHqrCtNjNbsss}dxBaMDM zH@5-Xg7oG+;U9VDT^;^ezSource Quarantine Review
- Generated: 2026-04-25T15:10:51.097Z + Generated: 2026-04-25T17:11:37.121Z Low-health sources: 190 Pending suggestions: 0 SLA: deprioritised, auto-recheck 24h+ New this week: 1 Avg health score: 0/100 - Avg time in quarantine: 186h + Avg time in quarantine: 188h 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-25T15:10:51.097Z') + '', + 'Generated: ' + escapeHtml(payload.generatedAt || '2026-04-25T17:11:37.121Z') + '', 'Low-health sources: ' + escapeHtml(currentEntries.length) + '', 'Pending suggestions: ' + escapeHtml(currentSuggestions.length) + '', 'SLA: deprioritised, auto-recheck 24h+',