{
 "about": "The public shape of the source watch, exported by admin/build/export_watch.py. Counts and vocabularies only: no capture is copied.",
 "vault_id": "7r83qic5",
 "head": {
  "commit": "f212898aa0fe",
  "message": "researcher@php.newsroom: stealmybitcoin.com added as a watched page and captured (board correspondent-0005); the PoC repository on GitHub is not captured, by rule, pending the editor"
 },
 "commits": [
  {
   "commit": "f212898aa0fe",
   "message": "researcher@php.newsroom: stealmybitcoin.com added as a watched page and captured (board correspondent-0005); the PoC repository on GitHub is not captured, by rule, pending the editor"
  },
  {
   "commit": "6c99788c3513",
   "message": "researcher@php.newsroom: pass 20261026T1703Z phase 2 of 2: discovery"
  },
  {
   "commit": "afb2422c5844",
   "message": "researcher@php.newsroom: pass 20261026T1703Z phase 1 of 2: captures, the curator queue, series and analysis"
  },
  {
   "commit": "aa0d4d7f77a5",
   "message": "researcher@php.newsroom: pass 20261026T1436Z phase 2 of 2: discovery"
  },
  {
   "commit": "681ce1ace707",
   "message": "researcher@php.newsroom: pass 20261026T1436Z phase 1 of 2: captures, the curator queue, series and analysis"
  },
  {
   "commit": "f12c7b82a7e8",
   "message": "researcher@php.newsroom: pass 20261026T1208Z phase 2 of 2: discovery"
  },
  {
   "commit": "7faaf95ef91b",
   "message": "researcher@php.newsroom: pass 20261026T1208Z phase 1 of 2: captures, the curator queue, series and analysis"
  },
  {
   "commit": "9987a9519704",
   "message": "researcher@php.newsroom: pass 20261026T0934Z phase 2 of 2: discovery"
  },
  {
   "commit": "f457bec575df",
   "message": "researcher@php.newsroom: pass 20261026T0934Z phase 1 of 2: captures, the curator queue, series and analysis"
  },
  {
   "commit": "2bb61c291708",
   "message": "researcher@php.newsroom: pass 20261026T0705Z phase 2 of 2: discovery"
  },
  {
   "commit": "b599857a4f65",
   "message": "researcher@php.newsroom: pass 20261026T0705Z phase 1 of 2: captures, the curator queue, series and analysis"
  },
  {
   "commit": "399f10950ffd",
   "message": "researcher@php.newsroom: pass 20261026T0125Z phase 3 of 3: discovery"
  },
  {
   "commit": "9ad94274d824",
   "message": "researcher@php.newsroom: pass 20261026T0125Z phase 2 of 3: series and analysis"
  },
  {
   "commit": "5619a889d98a",
   "message": "researcher@php.newsroom: pass 20261026T0125Z phase 1 of 3: captures and the curator queue"
  },
  {
   "commit": "4c59b212a5b7",
   "message": "researcher@php.newsroom: fix: tools/queue.py shadowed the standard library queue module (every tools/ script that imports it broke); renamed tools/curator_queue.py; pass.sh calls the new name. Also holds the few captures of a stopped test pass"
  },
  {
   "commit": "6efd721d847e",
   "message": "researcher@php.newsroom: pass.sh in three phases, each with its own commit and push (capture and the curator queue; series and analysis; discovery), a time line before every stage; tools/queue.py adds this pass's pages to the curator queue, idempotent"
  },
  {
   "commit": "4083a49ef208",
   "message": "researcher@php.newsroom: pass 20261025T1507Z"
  },
  {
   "commit": "0370c7b17b1e",
   "message": "researcher@php.newsroom: pass 20261025T1232Z"
  },
  {
   "commit": "f23987eb3b23",
   "message": "researcher@php.newsroom (scheduled): the 25 references of the Wikipedia article PHP2Shell that the watch did not hold are now watched pages (hourly) and captured once (run 20261025T114552Z: 19 open, 5 paywalled, 1 bot-challenge); brief 2026-10-25__brief__wikipedia-as-an-anchor"
  },
  {
   "commit": "a8300425e215",
   "message": "researcher@php.newsroom: pass 20261025T1002Z"
  },
  {
   "commit": "d0c1de046703",
   "message": "researcher@php.newsroom: pass 20261025T0732Z"
  },
  {
   "commit": "fae87065f668",
   "message": "researcher@php.newsroom: pass 20261024T1635Z"
  },
  {
   "commit": "8f3c26ca0ce9",
   "message": "researcher@php.newsroom: pass 20261024T1404Z"
  },
  {
   "commit": "4445a1c7afd3",
   "message": "researcher@php.newsroom: pass 20261024T1136Z"
  },
  {
   "commit": "cafe2d80e8d4",
   "message": "researcher@php.newsroom: pass 20261024T0907Z"
  },
  {
   "commit": "c856bdc40ed2",
   "message": "researcher@php.newsroom: pass 20261023T2347Z"
  },
  {
   "commit": "630988b9680c",
   "message": "researcher@php.newsroom: benchmark, a one-file push on the pack vault"
  },
  {
   "commit": "ae551123f08a",
   "message": "researcher@php.newsroom: pass 20261023T1631Z"
  },
  {
   "commit": "bff62f9dc08f",
   "message": "researcher@php.newsroom: scanner-noise angle (index/angles/scanner-noise.json, 7 new pages), job-03-community for Perplexity with its prompt, three new kinds, login-wall fix for Bluesky and LinkedIn search"
  },
  {
   "commit": "9066c155341b",
   "message": "researcher@php.newsroom: pass 20261023T0830Z"
  },
  {
   "commit": "999678bb70e3",
   "message": "researcher@php.newsroom: pass 20261023T0140Z"
  },
  {
   "commit": "15ea225c7d42",
   "message": "researcher@php.newsroom: external collectors: docs/collectors.md, jobs/collectors/job-01-vantage.json, taxonomy/collector-report.schema.json, tools/collectors.py; probe target with a trailing comma fixed"
  },
  {
   "commit": "105413da19d8",
   "message": "researcher@php.newsroom: probe and analysis 21:05 UTC; rendered DOM kept only with the screenshot and under 1 MB (pushes over ~30 min were being cut); push retries 8"
  },
  {
   "commit": "5c63cc10b0f3",
   "message": "researcher@php.newsroom: pass 20261022T2053Z"
  },
  {
   "commit": "21c2b64f0b9a",
   "message": "cyber@php.newsroom + researcher@php.newsroom: compromise leads chased (Valtec resolved: not PHP; GMO FX VPS compromise, cause unstated; ČVUT attack stopped, success unconfirmed; DMM unstated); appliance bulletins captured (Palo Alto PAN-OS, QNAP, Cisco, Fortinet); 5 ledger records; probe and series runs"
  },
  {
   "commit": "202f981c32cf",
   "message": "researcher@php.newsroom: languages pass (339 non-English pages read, 568 new items with verbatim quotes, translations/ and index/foreign.json, index/translation-demand.json); stats pipeline (taxonomy/stats-sources.json, series/, probes/ of 295 named sites, analysis/, contradictions/ seeded with 7); 15 pages moved out of country 'impact'; docs/workflows.md"
  },
  {
   "commit": "8f9b1f62e599",
   "message": "researcher@php.newsroom: the languages pass: 33 impact feeds in local languages, Bing headline resolver for Google leads (295 resolved), 196 non-English articles promoted (341 in 28 languages), run 20261022T181608Z: 632 checked, 454 changed"
  },
  {
   "commit": "618b47981765",
   "message": "researcher@php.newsroom + cyber@php.newsroom: weaponisation sector (Metasploit, nuclei, Sigma, Exploit-DB, Packet Storm, Rapid7 DB, GitHub search, EPSS) and 14 ATT&CK technique pages, runs 175100Z and 175253Z; screenshot kept only on significant change, 8000 px cap; KEV JSON fetched over HTTP; noise and vulnerability term updates"
  },
  {
   "commit": "1fc0b41d5484",
   "message": "researcher@php.newsroom: run 20261022T171501Z: 384 checked, 297 changed"
  }
 ],
 "pages": 1284,
 "publishers": 945,
 "country": {
  "us": 284,
  "int": 217,
  "nl": 76,
  "fr": 49,
  "de": 48,
  "gb": 44,
  "kr": 44,
  "jp": 37,
  "au": 33,
  "tr": 33,
  "it": 30,
  "id": 25,
  "be": 24,
  "br": 24,
  "ch": 22,
  "ar": 20,
  "in": 20,
  "ca": 18,
  "eg": 17,
  "es": 15,
  "at": 14,
  "hk": 13,
  "pl": 11,
  "ro": 11,
  "th": 11,
  "cz": 10,
  "vn": 10,
  "pt": 9,
  "sg": 9,
  "ie": 8,
  "sa": 8,
  "eu": 7,
  "fi": 7,
  "nz": 6,
  "hu": 5,
  "lv": 5,
  "tw": 5,
  "za": 5,
  "bg": 4,
  "co": 4,
  "lu": 4,
  "mx": 4,
  "se": 4,
  "ua": 4,
  "cn": 3,
  "gr": 3,
  "ae": 2,
  "ee": 2,
  "lt": 2,
  "my": 2,
  "uy": 2,
  "ai": 1,
  "cl": 1,
  "dk": 1,
  "il": 1,
  "io": 1,
  "no": 1,
  "pe": 1,
  "re": 1,
  "sk": 1,
  "tn": 1
 },
 "sector": {
  "news": 656,
  "affected": 182,
  "aggregator": 140,
  "cert": 94,
  "tech-press": 50,
  "security-vendor": 29,
  "registry": 28,
  "reference": 24,
  "project": 18,
  "social": 17,
  "community": 16,
  "weaponisation": 12,
  "research": 9,
  "ai-lab": 3,
  "cloud": 3,
  "government": 2,
  "tool": 1
 },
 "lang": {
  "en": 577,
  "fr": 91,
  "de": 77,
  "nl": 61,
  "es": 59,
  "ko": 44,
  "pt": 40,
  "ar": 36,
  "it": 34,
  "tr": 34,
  "ja": 30,
  "id": 27,
  "zh": 21,
  "cs": 17,
  "th": 17,
  "ro": 15,
  "pl": 14,
  "vi": 13,
  "fi": 9,
  "hu": 8,
  "lv": 8,
  "bg": 7,
  "uk": 7,
  "sv": 6,
  "el": 5,
  "ms": 5,
  "lt": 4,
  "nb": 4,
  "sk": 4,
  "et": 3,
  "he": 3,
  "da": 2,
  "hr": 1,
  "sl": 1
 },
 "access": {
  "open": 1100,
  "bot-challenge": 90,
  "down": 58,
  "paywalled": 21,
  "gone": 10,
  "unchecked": 3,
  "login-wall": 2
 },
 "tiers": {
  "A": 74,
  "B": 875,
  "C": 16
 },
 "snapshots": 13600,
 "graphs": 13600,
 "files": 104839,
 "world_graph": {
  "nodes": 2341,
  "edges": 4664
 },
 "access_classes": [
  {
   "id": "open",
   "means": "Served the content to an anonymous browser."
  },
  {
   "id": "paywalled",
   "means": "Subscription press we hold no licence for. Either it served a subscription or registration wall instead of the content, or (for a publisher marked paywall in its page.json) it refused the anonymous browser with 401 or 403 before any wall. Counted apart from bot-challenge since 22 October 2026."
  },
  {
   "id": "bot-challenge",
   "means": "Served a bot or browser challenge (Cloudflare, Akamai, DataDome, PerimeterX, Vercel). The challenge page's hash is kept as the record."
  },
  {
   "id": "login-wall",
   "means": "Wants a signed-in account (some social posts)."
  },
  {
   "id": "geo-blocked",
   "means": "Refused because of where the request came from."
  },
  {
   "id": "gone",
   "means": "404 or 410: the page no longer exists at this address."
  },
  {
   "id": "down",
   "means": "5xx, a timeout, a DNS failure or a refused connection: the site is not answering. For the affected sites this is the finding."
  },
  {
   "id": "not-attempted",
   "means": "Listed, but the watcher is told not to fetch it (licence or editorial decision)."
  }
 ],
 "sectors": [
  {
   "id": "cert",
   "name": "National cyber agency or CSIRT"
  },
  {
   "id": "government",
   "name": "Other government body"
  },
  {
   "id": "registry",
   "name": "Vulnerability registry"
  },
  {
   "id": "project",
   "name": "The open-source project and its foundation"
  },
  {
   "id": "research",
   "name": "Security researcher or research firm"
  },
  {
   "id": "ai-lab",
   "name": "AI lab"
  },
  {
   "id": "security-vendor",
   "name": "Security, WAF, CDN or detection vendor"
  },
  {
   "id": "cloud",
   "name": "Cloud or hosting provider"
  },
  {
   "id": "news",
   "name": "General news"
  },
  {
   "id": "tech-press",
   "name": "Technology and security press"
  },
  {
   "id": "social",
   "name": "Social platform post or account"
  },
  {
   "id": "community",
   "name": "Forum, mailing list, gist or repository"
  },
  {
   "id": "reference",
   "name": "Reference work"
  },
  {
   "id": "education",
   "name": "University or school"
  },
  {
   "id": "affected",
   "name": "Affected organisation's own site"
  },
  {
   "id": "aggregator",
   "name": "News aggregator, search feed or tag stream"
  },
  {
   "id": "tool",
   "name": "Tool published for the incident"
  },
  {
   "id": "weaponisation",
   "name": "Where exploits, scanners and detections are published"
  }
 ],
 "altitudes": {
  "world": "country, sector, publisher, page, language: where the watched pages sit (index/world.json)",
  "watch": "run, check, page, access, snapshot: what the watcher did and saw (runs/**/graph.json)",
  "document": "snapshot, block, entity: what one snapshot of a page says (graph/**/<UTC>.json)",
  "change": "change, block, entity: what moved between two snapshots (graph/**/<UTC>.json, section change)"
 },
 "verbs": 22,
 "runs": [
  {
   "run": "20261022T142033Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-22T14:20:33Z",
   "finished": "2026-10-22T14:35:30Z",
   "pages_due": 184,
   "pages_total": 184,
   "changed": 125,
   "access": {
    "down": 7,
    "open": 157,
    "paywalled": 1,
    "bot-challenge": 18,
    "gone": 1
   }
  },
  {
   "run": "20261022T145444Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-22T14:54:44Z",
   "finished": "2026-10-22T14:54:49Z",
   "pages_due": 1,
   "pages_total": 328,
   "changed": 1,
   "access": {
    "open": 1
   }
  },
  {
   "run": "20261022T150854Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-22T15:08:54Z",
   "finished": "2026-10-22T15:11:42Z",
   "pages_due": 143,
   "pages_total": 328,
   "changed": 143,
   "access": {
    "open": 119,
    "down": 5,
    "bot-challenge": 15,
    "gone": 4
   }
  },
  {
   "run": "20261022T171339Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-22T17:13:39Z",
   "finished": "2026-10-22T17:13:57Z",
   "pages_due": 52,
   "pages_total": 381,
   "changed": 52,
   "access": {
    "open": 52
   }
  },
  {
   "run": "20261022T171425Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-22T17:14:25Z",
   "finished": "2026-10-22T17:14:46Z",
   "pages_due": 52,
   "pages_total": 381,
   "changed": 48,
   "access": {
    "open": 52
   }
  },
  {
   "run": "20261022T171501Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-22T17:15:01Z",
   "finished": "2026-10-22T17:26:14Z",
   "pages_due": 384,
   "pages_total": 461,
   "changed": 297,
   "access": {
    "open": 326,
    "bot-challenge": 28,
    "down": 20,
    "paywalled": 8,
    "gone": 2
   }
  },
  {
   "run": "20261022T175100Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-22T17:51:00Z",
   "finished": "2026-10-22T17:51:19Z",
   "pages_due": 11,
   "pages_total": 472,
   "changed": 11,
   "access": {
    "open": 9,
    "down": 2
   }
  },
  {
   "run": "20261022T175253Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-22T17:52:53Z",
   "finished": "2026-10-22T17:53:10Z",
   "pages_due": 14,
   "pages_total": 486,
   "changed": 14,
   "access": {
    "open": 14
   }
  },
  {
   "run": "20261022T181440Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-22T18:14:40Z",
   "finished": "2026-10-22T18:15:02Z",
   "pages_due": 33,
   "pages_total": 519,
   "changed": 33,
   "access": {
    "open": 33
   }
  },
  {
   "run": "20261022T181608Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-22T18:16:08Z",
   "finished": "2026-10-22T18:32:20Z",
   "pages_due": 632,
   "pages_total": 715,
   "changed": 454,
   "access": {
    "open": 549,
    "bot-challenge": 48,
    "gone": 4,
    "down": 19,
    "paywalled": 12
   }
  },
  {
   "run": "20261022T183616Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-22T18:36:16Z",
   "finished": "2026-10-22T18:36:24Z",
   "pages_due": 2,
   "pages_total": 748,
   "changed": 2,
   "access": {
    "open": 2
   }
  },
  {
   "run": "20261022T183624Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-22T18:36:24Z",
   "finished": "2026-10-22T18:36:30Z",
   "pages_due": 27,
   "pages_total": 748,
   "changed": 27,
   "access": {
    "open": 27
   }
  },
  {
   "run": "20261022T191400Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-22T19:14:00Z",
   "finished": "2026-10-22T19:14:10Z",
   "pages_due": 1,
   "pages_total": 757,
   "changed": 0,
   "access": {
    "bot-challenge": 1
   }
  },
  {
   "run": "20261022T191411Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-22T19:14:11Z",
   "finished": "2026-10-22T19:14:20Z",
   "pages_due": 5,
   "pages_total": 757,
   "changed": 5,
   "access": {
    "open": 5
   }
  },
  {
   "run": "20261022T191421Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-22T19:14:21Z",
   "finished": "2026-10-22T19:14:27Z",
   "pages_due": 2,
   "pages_total": 757,
   "changed": 1,
   "access": {
    "open": 2
   }
  },
  {
   "run": "20261022T191433Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-22T19:14:33Z",
   "finished": "2026-10-22T19:15:09Z",
   "pages_due": 1,
   "pages_total": 757,
   "changed": 1,
   "access": {
    "open": 1
   }
  },
  {
   "run": "20261022T191510Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-22T19:15:10Z",
   "finished": "2026-10-22T19:15:23Z",
   "pages_due": 1,
   "pages_total": 757,
   "changed": 1,
   "access": {
    "open": 1
   }
  },
  {
   "run": "20261022T191523Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-22T19:15:23Z",
   "finished": "2026-10-22T19:15:35Z",
   "pages_due": 1,
   "pages_total": 757,
   "changed": 1,
   "access": {
    "open": 1
   }
  },
  {
   "run": "20261022T191536Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-22T19:15:36Z",
   "finished": "2026-10-22T19:16:45Z",
   "pages_due": 1,
   "pages_total": 757,
   "changed": 1,
   "access": {
    "open": 1
   }
  },
  {
   "run": "20261022T191713Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-22T19:17:13Z",
   "finished": "2026-10-22T19:17:20Z",
   "pages_due": 2,
   "pages_total": 763,
   "changed": 2,
   "access": {
    "open": 2
   }
  },
  {
   "run": "20261022T191720Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-22T19:17:20Z",
   "finished": "2026-10-22T19:17:27Z",
   "pages_due": 2,
   "pages_total": 763,
   "changed": 2,
   "access": {
    "open": 2
   }
  },
  {
   "run": "20261022T191727Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-22T19:17:27Z",
   "finished": "2026-10-22T19:17:36Z",
   "pages_due": 1,
   "pages_total": 763,
   "changed": 1,
   "access": {
    "open": 1
   }
  },
  {
   "run": "20261022T191736Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-22T19:17:36Z",
   "finished": "2026-10-22T19:17:40Z",
   "pages_due": 1,
   "pages_total": 763,
   "changed": 1,
   "access": {
    "open": 1
   }
  },
  {
   "run": "20261022T203355Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-22T20:33:55Z",
   "finished": "2026-10-22T20:34:48Z",
   "pages_due": 25,
   "pages_total": 773,
   "changed": 15,
   "access": {
    "open": 17,
    "bot-challenge": 1,
    "down": 7
   }
  },
  {
   "run": "20261022T203448Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-22T20:34:48Z",
   "finished": "2026-10-22T20:51:51Z",
   "pages_due": 709,
   "pages_total": 773,
   "changed": 442,
   "access": {
    "open": 631,
    "bot-challenge": 45,
    "gone": 5,
    "down": 15,
    "paywalled": 13
   }
  },
  {
   "run": "20261023T011949Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-23T01:19:49Z",
   "finished": "2026-10-23T01:20:42Z",
   "pages_due": 28,
   "pages_total": 826,
   "changed": 12,
   "access": {
    "open": 22,
    "bot-challenge": 1,
    "down": 5
   }
  },
  {
   "run": "20261023T012042Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-23T01:20:42Z",
   "finished": "2026-10-23T01:40:30Z",
   "pages_due": 759,
   "pages_total": 826,
   "changed": 500,
   "access": {
    "open": 671,
    "bot-challenge": 49,
    "gone": 6,
    "down": 19,
    "paywalled": 14
   }
  },
  {
   "run": "20261023T080157Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-23T08:01:57Z",
   "finished": "2026-10-23T08:03:31Z",
   "pages_due": 32,
   "pages_total": 870,
   "changed": 19,
   "access": {
    "open": 20,
    "bot-challenge": 4,
    "down": 8
   }
  },
  {
   "run": "20261023T080331Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-23T08:03:31Z",
   "finished": "2026-10-23T08:30:13Z",
   "pages_due": 799,
   "pages_total": 870,
   "changed": 555,
   "access": {
    "open": 673,
    "bot-challenge": 53,
    "down": 53,
    "paywalled": 15,
    "gone": 5
   }
  },
  {
   "run": "20261023T123736Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-23T12:37:36Z",
   "finished": "2026-10-23T12:37:50Z",
   "pages_due": 1,
   "pages_total": 910,
   "changed": 1,
   "access": {
    "open": 1
   }
  },
  {
   "run": "20261023T123751Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-23T12:37:51Z",
   "finished": "2026-10-23T12:38:01Z",
   "pages_due": 1,
   "pages_total": 910,
   "changed": 1,
   "access": {
    "open": 1
   }
  },
  {
   "run": "20261023T123801Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-23T12:38:01Z",
   "finished": "2026-10-23T12:38:07Z",
   "pages_due": 1,
   "pages_total": 910,
   "changed": 1,
   "access": {
    "open": 1
   }
  },
  {
   "run": "20261023T123808Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-23T12:38:08Z",
   "finished": "2026-10-23T12:38:08Z",
   "pages_due": 1,
   "pages_total": 910,
   "changed": 1,
   "access": {
    "open": 1
   }
  },
  {
   "run": "20261023T123836Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-23T12:38:36Z",
   "finished": "2026-10-23T12:38:43Z",
   "pages_due": 1,
   "pages_total": 911,
   "changed": 1,
   "access": {
    "open": 1
   }
  },
  {
   "run": "20261023T123852Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-23T12:38:52Z",
   "finished": "2026-10-23T12:39:02Z",
   "pages_due": 1,
   "pages_total": 913,
   "changed": 1,
   "access": {
    "open": 1
   }
  },
  {
   "run": "20261023T123902Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-23T12:39:02Z",
   "finished": "2026-10-23T12:39:15Z",
   "pages_due": 1,
   "pages_total": 913,
   "changed": 1,
   "access": {
    "open": 1
   }
  },
  {
   "run": "20261023T124018Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-23T12:40:18Z",
   "finished": "2026-10-23T12:40:24Z",
   "pages_due": 1,
   "pages_total": 913,
   "changed": 1,
   "access": {
    "open": 1
   }
  },
  {
   "run": "20261023T124024Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-23T12:40:24Z",
   "finished": "2026-10-23T12:40:43Z",
   "pages_due": 1,
   "pages_total": 913,
   "changed": 1,
   "access": {
    "open": 1
   }
  },
  {
   "run": "20261023T160325Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-23T16:03:25Z",
   "finished": "2026-10-23T16:04:35Z",
   "pages_due": 44,
   "pages_total": 925,
   "changed": 28,
   "access": {
    "open": 32,
    "bot-challenge": 5,
    "down": 7
   }
  },
  {
   "run": "20261023T160435Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-23T16:04:35Z",
   "finished": "2026-10-23T16:30:35Z",
   "pages_due": 862,
   "pages_total": 925,
   "changed": 646,
   "access": {
    "open": 743,
    "bot-challenge": 55,
    "down": 41,
    "paywalled": 16,
    "gone": 5,
    "login-wall": 2
   }
  },
  {
   "run": "20261023T223307Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-23T22:33:07Z",
   "finished": "2026-10-23T22:34:33Z",
   "pages_due": 45,
   "pages_total": 964,
   "changed": 14,
   "access": {
    "open": 35,
    "bot-challenge": 5,
    "down": 5
   }
  },
  {
   "run": "20261023T224121Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-23T22:41:21Z",
   "finished": "2026-10-23T22:42:35Z",
   "pages_due": 46,
   "pages_total": 965,
   "changed": 12,
   "access": {
    "open": 37,
    "bot-challenge": 5,
    "down": 4
   }
  },
  {
   "run": "20261023T232425Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-23T23:24:25Z",
   "finished": "2026-10-23T23:25:28Z",
   "pages_due": 46,
   "pages_total": 965,
   "changed": 15,
   "access": {
    "open": 34,
    "bot-challenge": 6,
    "down": 6
   }
  },
  {
   "run": "20261023T232528Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-23T23:25:28Z",
   "finished": "2026-10-23T23:46:47Z",
   "pages_due": 891,
   "pages_total": 965,
   "changed": 607,
   "access": {
    "open": 783,
    "bot-challenge": 65,
    "paywalled": 17,
    "down": 20,
    "gone": 4,
    "login-wall": 2
   }
  },
  {
   "run": "20261024T060921Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-24T06:09:21Z",
   "finished": "2026-10-24T06:11:02Z",
   "pages_due": 48,
   "pages_total": 1001,
   "changed": 15,
   "access": {
    "open": 37,
    "bot-challenge": 6,
    "down": 5
   }
  },
  {
   "run": "20261024T083625Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-24T08:36:25Z",
   "finished": "2026-10-24T08:37:55Z",
   "pages_due": 48,
   "pages_total": 1001,
   "changed": 23,
   "access": {
    "open": 31,
    "bot-challenge": 4,
    "down": 13
   }
  },
  {
   "run": "20261024T083755Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-24T08:37:55Z",
   "finished": "2026-10-24T09:07:34Z",
   "pages_due": 911,
   "pages_total": 1001,
   "changed": 610,
   "access": {
    "open": 799,
    "bot-challenge": 65,
    "paywalled": 15,
    "down": 26,
    "gone": 4,
    "login-wall": 2
   }
  },
  {
   "run": "20261024T110332Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-24T11:03:32Z",
   "finished": "2026-10-24T11:04:58Z",
   "pages_due": 49,
   "pages_total": 1020,
   "changed": 23,
   "access": {
    "open": 36,
    "bot-challenge": 5,
    "down": 8
   }
  },
  {
   "run": "20261024T110459Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-24T11:04:59Z",
   "finished": "2026-10-24T11:36:02Z",
   "pages_due": 929,
   "pages_total": 1020,
   "changed": 559,
   "access": {
    "open": 805,
    "bot-challenge": 65,
    "down": 38,
    "paywalled": 15,
    "gone": 4,
    "login-wall": 2
   }
  },
  {
   "run": "20261024T133315Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-24T13:33:15Z",
   "finished": "2026-10-24T13:34:49Z",
   "pages_due": 49,
   "pages_total": 1030,
   "changed": 24,
   "access": {
    "open": 27,
    "bot-challenge": 5,
    "down": 17
   }
  },
  {
   "run": "20261024T133450Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-24T13:34:50Z",
   "finished": "2026-10-24T14:04:39Z",
   "pages_due": 942,
   "pages_total": 1030,
   "changed": 578,
   "access": {
    "open": 828,
    "bot-challenge": 68,
    "paywalled": 15,
    "down": 25,
    "gone": 4,
    "login-wall": 2
   }
  },
  {
   "run": "20261024T160409Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-24T16:04:09Z",
   "finished": "2026-10-24T16:05:43Z",
   "pages_due": 50,
   "pages_total": 1041,
   "changed": 14,
   "access": {
    "open": 30,
    "bot-challenge": 5,
    "down": 15
   }
  },
  {
   "run": "20261024T160544Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-24T16:05:44Z",
   "finished": "2026-10-24T16:35:46Z",
   "pages_due": 972,
   "pages_total": 1041,
   "changed": 565,
   "access": {
    "open": 860,
    "bot-challenge": 68,
    "down": 22,
    "paywalled": 15,
    "gone": 5,
    "login-wall": 2
   }
  },
  {
   "run": "20261025T070428Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-25T07:04:28Z",
   "finished": "2026-10-25T07:05:59Z",
   "pages_due": 53,
   "pages_total": 1048,
   "changed": 25,
   "access": {
    "open": 37,
    "bot-challenge": 7,
    "down": 9
   }
  },
  {
   "run": "20261025T070559Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-25T07:05:59Z",
   "finished": "2026-10-25T07:32:30Z",
   "pages_due": 967,
   "pages_total": 1048,
   "changed": 632,
   "access": {
    "open": 861,
    "bot-challenge": 67,
    "down": 18,
    "paywalled": 15,
    "gone": 4,
    "login-wall": 2
   }
  },
  {
   "run": "20261025T093336Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-25T09:33:36Z",
   "finished": "2026-10-25T09:35:06Z",
   "pages_due": 54,
   "pages_total": 1065,
   "changed": 17,
   "access": {
    "open": 41,
    "bot-challenge": 5,
    "down": 8
   }
  },
  {
   "run": "20261025T093507Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-25T09:35:07Z",
   "finished": "2026-10-25T10:02:28Z",
   "pages_due": 969,
   "pages_total": 1065,
   "changed": 578,
   "access": {
    "open": 855,
    "bot-challenge": 71,
    "down": 22,
    "paywalled": 15,
    "gone": 4,
    "login-wall": 2
   }
  },
  {
   "run": "20261025T114552Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-25T11:45:52Z",
   "finished": "2026-10-25T11:47:40Z",
   "pages_due": 25,
   "pages_total": 1097,
   "changed": 25,
   "access": {
    "open": 19,
    "paywalled": 5,
    "bot-challenge": 1
   }
  },
  {
   "run": "20261025T120319Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-25T12:03:19Z",
   "finished": "2026-10-25T12:04:59Z",
   "pages_due": 54,
   "pages_total": 1097,
   "changed": 14,
   "access": {
    "open": 42,
    "bot-challenge": 5,
    "down": 7
   }
  },
  {
   "run": "20261025T120459Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-25T12:04:59Z",
   "finished": "2026-10-25T12:32:04Z",
   "pages_due": 976,
   "pages_total": 1097,
   "changed": 577,
   "access": {
    "open": 862,
    "bot-challenge": 72,
    "down": 21,
    "paywalled": 15,
    "gone": 4,
    "login-wall": 2
   }
  },
  {
   "run": "20261025T143504Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-25T14:35:04Z",
   "finished": "2026-10-25T14:40:07Z",
   "pages_due": 172,
   "pages_total": 1218,
   "changed": 135,
   "access": {
    "open": 124,
    "bot-challenge": 13,
    "down": 33,
    "gone": 2
   }
  },
  {
   "run": "20261025T144008Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-25T14:40:08Z",
   "finished": "2026-10-25T15:07:21Z",
   "pages_due": 1007,
   "pages_total": 1218,
   "changed": 578,
   "access": {
    "open": 894,
    "bot-challenge": 69,
    "down": 19,
    "paywalled": 19,
    "gone": 4,
    "login-wall": 2
   }
  },
  {
   "run": "20261026T012644Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-26T01:26:44Z",
   "finished": "2026-10-26T01:31:43Z",
   "pages_due": 175,
   "pages_total": 1222,
   "changed": 65,
   "access": {
    "open": 129,
    "bot-challenge": 14,
    "down": 30,
    "gone": 2
   }
  },
  {
   "run": "20261026T013143Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-26T01:31:43Z",
   "finished": "2026-10-26T01:57:35Z",
   "pages_due": 1028,
   "pages_total": 1222,
   "changed": 673,
   "access": {
    "open": 911,
    "bot-challenge": 72,
    "down": 19,
    "paywalled": 19,
    "gone": 5,
    "login-wall": 2
   }
  },
  {
   "run": "20261026T070639Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-26T07:06:39Z",
   "finished": "2026-10-26T07:11:49Z",
   "pages_due": 177,
   "pages_total": 1243,
   "changed": 61,
   "access": {
    "open": 129,
    "bot-challenge": 16,
    "down": 30,
    "gone": 2
   }
  },
  {
   "run": "20261026T071149Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-26T07:11:49Z",
   "finished": "2026-10-26T07:38:50Z",
   "pages_due": 1038,
   "pages_total": 1243,
   "changed": 668,
   "access": {
    "open": 918,
    "bot-challenge": 76,
    "down": 18,
    "paywalled": 20,
    "gone": 4,
    "login-wall": 2
   }
  },
  {
   "run": "20261026T093538Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-26T09:35:38Z",
   "finished": "2026-10-26T09:40:33Z",
   "pages_due": 180,
   "pages_total": 1259,
   "changed": 58,
   "access": {
    "open": 130,
    "bot-challenge": 15,
    "down": 33,
    "gone": 2
   }
  },
  {
   "run": "20261026T094033Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-26T09:40:33Z",
   "finished": "2026-10-26T10:07:58Z",
   "pages_due": 1037,
   "pages_total": 1259,
   "changed": 654,
   "access": {
    "open": 913,
    "bot-challenge": 75,
    "down": 24,
    "paywalled": 18,
    "gone": 5,
    "login-wall": 2
   }
  },
  {
   "run": "20261026T120936Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-26T12:09:36Z",
   "finished": "2026-10-26T12:14:39Z",
   "pages_due": 181,
   "pages_total": 1270,
   "changed": 59,
   "access": {
    "open": 129,
    "bot-challenge": 13,
    "down": 37,
    "gone": 2
   }
  },
  {
   "run": "20261026T121439Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-26T12:14:39Z",
   "finished": "2026-10-26T12:44:07Z",
   "pages_due": 1047,
   "pages_total": 1270,
   "changed": 661,
   "access": {
    "open": 927,
    "bot-challenge": 70,
    "down": 23,
    "paywalled": 20,
    "gone": 5,
    "login-wall": 2
   }
  },
  {
   "run": "20261026T143726Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-26T14:37:26Z",
   "finished": "2026-10-26T14:42:40Z",
   "pages_due": 181,
   "pages_total": 1273,
   "changed": 51,
   "access": {
    "open": 136,
    "bot-challenge": 14,
    "down": 29,
    "gone": 2
   }
  },
  {
   "run": "20261026T144241Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-26T14:42:41Z",
   "finished": "2026-10-26T15:10:52Z",
   "pages_due": 1053,
   "pages_total": 1273,
   "changed": 677,
   "access": {
    "open": 939,
    "bot-challenge": 69,
    "down": 18,
    "paywalled": 19,
    "gone": 6,
    "login-wall": 2
   }
  },
  {
   "run": "20261026T170405Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-26T17:04:05Z",
   "finished": "2026-10-26T17:09:16Z",
   "pages_due": 182,
   "pages_total": 1280,
   "changed": 50,
   "access": {
    "open": 130,
    "bot-challenge": 15,
    "down": 35,
    "gone": 2
   }
  },
  {
   "run": "20261026T170916Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-26T17:09:16Z",
   "finished": "2026-10-26T17:38:20Z",
   "pages_due": 1056,
   "pages_total": 1280,
   "changed": 662,
   "access": {
    "open": 931,
    "bot-challenge": 74,
    "paywalled": 21,
    "down": 23,
    "gone": 5,
    "login-wall": 2
   }
  },
  {
   "run": "20261026T174025Z",
   "agent": "researcher@php.newsroom",
   "started": "2026-10-26T17:40:25Z",
   "finished": "2026-10-26T17:40:27Z",
   "pages_due": 1,
   "pages_total": 1284,
   "changed": 1,
   "access": {
    "open": 1
   }
  }
 ],
 "tips": [
  {
   "id": "2026-10-22/001",
   "received": "2026-10-22T14:38:00+02:00",
   "status": "reported",
   "says": "Their browser extension, php2shell-checker, was just approved on the Chrome Web Store. It checks whether a website runs outdated PHP or a supported PHP application such as WordPress. They describe it as privacy friendly and read-only, with nothing leaving the browser, and aimed at CISOs in the SME segment as easier than running scripts.",
   "watched_as": [
    "us/tool/chrome-web-store/php2shell-checker"
   ],
   "to_check": [
    "The publisher named on the store listing, and whether it matches who made the claim",
    "The permissions the listing and the manifest ask for, against 'read-only, nothing leaves the browser'",
    "The version history and user count, run by run",
    "Whether it detects the fixed versions (8.5.12 and the backports) correctly"
   ]
  }
 ],
 "tools": [
  "analyse.py",
  "capture_batch.mjs",
  "collectors.py",
  "curator_queue.py",
  "discover.py",
  "extract.py",
  "foreign.py",
  "import_evidence.py",
  "lib.py",
  "migrate_impact_cc.py",
  "pass.sh",
  "probe.py",
  "publishers_seed.py",
  "seed_impact.py",
  "seed_world.py",
  "series.py",
  "watch.py"
 ]
}
