The PHP desk
The admin page for the PHP flaws story of October 2026 as this newsroom covers it: the work and who did it, the roles of the people and agents on the story, and the evidence vault, which anyone can now open read-only. The facts themselves live on the story’s own site; how the coverage started is in Capture first; the design of this page is its brief.
The work
One row per piece of work, from admin/content/php-oct-2026/work.json. Work in progress, blocked and open comes first, then what is done, newest first. Every done row names its proof: a card, a release, a commit in this repository or in the vault, a source, an article or a page. The build refuses a row whose owner is not in the roles, or a done row without proof.
| Status | What | Owner | Opened / closed (UTC) | Proof |
|---|---|---|---|---|
| blocked | Retire /php-flaws/ into a pointer to the story's site waits for w-17 and w-18, then the editor's word | newsroom.dev | 2026-10-22T12:50Z | card 088 |
| open | Publish /status.json for the newsroom to read check 2 of the move; the shape is in the briefing pack | claude-story-site | 2026-10-22T12:50Z | briefs/php-oct-2026.zip |
| open | Re-export the vault so the 40 recovered sources are on the site; fill their publisher and date check 3 of the move | claude-story-site | 2026-10-22T12:50Z | briefs/php-oct-2026.zip |
| open | Add two rules to the vault's protocol: commit after every source; check every clone before calling the vault complete proposed in the briefing pack | claude-story-site | 2026-10-22T12:50Z | capture-first |
| open | Visitor logging with an append lane, region and country only the editor's decision: the PHP site's own work, not this site's | claude-story-site | 2026-10-22T13:00Z | |
| open | Act on the review: the first screen, the tables, claims to sentences, exploitation over time, who said what first, briefings, blast radius, playbook, graph the site's own priorities; the newsroom asks, the site decides | claude-story-site | 2026-10-22T13:52Z | briefs/php-oct-2026-review.zip |
| done | The live vault view on this page, reading only what is opened the SG/App vault browser had not opened this vault after four minutes; this view shows the manifest in about three seconds | newsroom.dev | 2026-10-22T13:35Z 2026-10-22T13:52Z | admin/php-oct-2026/index.html#browse card 089 |
| done | Review the story's site against the newsroom's published design and ethos; a briefing for its agent ten changes ranked by impact, checked against the site at v0.2.4 | newsroom.dev | 2026-10-22T13:05Z 2026-10-22T13:52Z | briefs/php-oct-2026-review.zip card 089 |
| done | This admin page: the work, the roles, the vault | newsroom.dev | 2026-10-22T13:10Z 2026-10-22T13:45Z | card 089 admin/php-oct-2026/index.html |
| done | Scan the vault, then open it with a public read key | newsroom.dev | 2026-10-22T13:10Z 2026-10-22T13:30Z | vault 292f563656ab card 089 |
| done | Put the story's own site on the front page; track the move; a briefing pack for its team | newsroom.dev | 2026-10-22T12:00Z 2026-10-22T12:54Z | v0.13.41 card 088 briefs/php-oct-2026.zip |
| done | Write the article on how the coverage started | newsroom.writer | 2026-10-22T12:10Z 2026-10-22T12:54Z | capture-first v0.13.41 |
| done | Build the vault's own app | claude-vault-app | 2026-10-22T12:22Z | vault 0f97fe36ab4d |
| done | Build the story's own site, php.oct.2026.newsroom.sgit.ai v0.1.0 at 09:27, v0.2.2 by noon | claude-story-site | 2026-10-22T11:52Z | https://php.oct.2026.newsroom.sgit.ai/ vault 200d08971937 |
| done | Recover the uncommitted work of two collectors and push every clone 40 sources; rows written from each capture's provenance.json | newsroom.dev | 2026-10-22T11:58Z 2026-10-22T12:08Z | vault f72ad76c99c9 vault d5549bc61fd2 capture-first |
| done | Keep the NCSC-NL php2shell repository whole and count its inventory git bundle, 52 commits; 674 products at cca173c64ec5 | newsroom.dev | 2026-10-22T08:47Z 2026-10-22T08:50Z | ncsc-nl-php2shell-software-list |
| done | Capture news coverage and impact, including the maintenance pages 31 sources, all committed later in w-10 | collector-news | 2026-10-22T08:08Z 2026-10-22T08:19Z | vault f72ad76c99c9 |
| done | Capture government and CERT advisories 37 sources, nine of them committed later in w-10 | collector-gov | 2026-10-22T08:08Z 2026-10-22T08:20Z | vault 1988169025cd vault be782bff89bf |
| done | Capture the researchers' accounts and the leak 14 sources; closing time not recorded | collector-researchers | 2026-10-22T08:08Z | vault 788a1d01f5a7 |
| done | Capture the primary technical sources 17 sources; closing time not recorded | collector-primary | 2026-10-22T08:08Z | php-net-advisory |
| done | Seed claims and timeline from the BBC page; per-agent files so writers never conflict | newsroom.dev | 2026-10-22T08:07Z 2026-10-22T08:10Z | vault 4dd942654566 |
| done | Publish the /php-flaws/ section | newsroom.dev | 2026-10-22T08:00Z 2026-10-22T08:13Z | v0.13.40 card 087 php-flaws/index.html |
| done | Open the evidence vault, write its protocol and the capture tool; first three captures of the BBC page | newsroom.dev | 2026-10-22T08:03Z 2026-10-22T08:07Z | vault b12e6b952e17 vault 3133f619762a |
| done | Read the BBC live page and summarise it for the editor | newsroom.dev | 2026-10-22T07:55Z 2026-10-22T07:58Z | bbc-live-ckgel5xp2xv9t |
By owner
- newsroom.dev 1 blocked, 11 done
- claude-story-site 5 open, 1 done
- collector-primary 1 done
- collector-researchers 1 done
- collector-gov 1 done
- collector-news 1 done
- claude-vault-app 1 done
- newsroom.writer 1 done
The move to the story’s own site
The facts live on php.oct.2026.newsroom.sgit.ai (v0.2.4, data as of 2026-10-22T11:34Z). /php-flaws/ retires into a pointer when these pass; 2 of 5 did when last checked, 2026-10-22T13:51Z.
- ✓ The site answers at its own domain HTTP 200
- ○ The site publishes /status.json for this newsroom to read HTTP 404
- ○ Every source the section lists is on the site 144 of 184; missing 20min-fr-suisse-romande, abc-au-gov-sites-exposed, abc-au-politics-live, actu17-prefectures, bleepingcomputer-php2shell
- ✓ The newsroom's front page links to the site the Developing strip, from admin/content/front/developing.json
- ○ The section is replaced by a page that points to the site the last step, done here once the checks above pass
The roles
Everyone who has worked on the story, from admin/content/php-oct-2026/roles.json: what each is responsible for, what each may and may not change, where each works, and the record that shows it. Drawn from the git logs and the vault’s commit messages. The editorial responsibility is always Dinis’s.
editor
Dinis Cruz
What is published and when; the editorial line; the decisions: opening the vault to everyone, moving the facts to their own site, retiring /php-flaws/.
- May change
- anything
- Works in
- chat with the agents; voice memos
- Record
- the memos in the PHP site's admin/content/briefs/memos/; every decision quoted in admin/notes/2026-10-22__the-php-desk.md
agent
newsroom.dev
The PHP story's functionality on newsroom.sgit.ai: the /php-flaws/ section and its builder, the tracker of the move to the story's own site, the front page's Developing strip, this admin page, the vault's protocol and capture tool, opening the vault with a public read key, and the briefing packs for the PHP site's team.
- May change
- php-flaws/, admin/php-oct-2026/, admin/content/php-oct-2026/, admin/content/vaults/php-evidence.json, briefs/php-oct-2026*/, the front page's developing strip; the vault's README and tools/
- Must not
- edit captures or another agent's source rows, claims or timeline; edit the PHP site's repository; put a write key in any file
- Works in
- a Claude Code session on SGit-AI__Website__Newsroom; the evidence vault
- Record
- v0.13.40, v0.13.41 (with newsroom.writer), v0.13.42; cards 087, 088, 089; vault commits named claude-newsroom-lead or newsroom.dev
- Also known as
- claude-newsroom-lead: Its work on the morning of 22 October went out as claude-newsroom-lead, before it had a name of its own; the vault's history keeps that name.
agent
newsroom.writer
The articles about the story on newsroom.sgit.ai, written from the editor's messages and memos in his voice, with their figures, graphs and summaries.
- May change
- admin/content/articles/ and the release files of an article release
- Must not
- state a fact about the story that the PHP site or the vault does not back
- Works in
- a Claude Code session on SGit-AI__Website__Newsroom
- Record
- Capture first (v0.13.41)
agent
claude-story-site
php.oct.2026.newsroom.sgit.ai: the facts, the claims with their status, the pages per source and per party, the numbers, the agencies, the briefings by role, its gate and releases. The vault's largest writer.
- May change
- its own repository, SGit-AI/SGit-AI__Website__Newsroom__2026__Oct__PHP; its own source rows, claims and timeline in the vault
- Must not
- edit other writers' rows or any capture
- Works in
- a Claude Code session on the PHP site's repository; the evidence vault
- Record
- site v0.1.0 to v0.2.2 on 22 October; vault commits 379e3d7f172a and 200d08971937 (83 sources)
agent
claude-vault-app
The vault's own app: index.html, .vault/app.json and app/ (reduced screenshots, manifest, versions), built from the PHP site's vault-app/.
- May change
- index.html, .vault/, app/ and a README section in the vault
- Must not
- edit captures, source rows, claims or timeline
- Works in
- the evidence vault
- Record
- vault commit 0f97fe36ab4d (app v0.1.0)
agent, one task
collector-primary
Primary technical sources: php.net, the CVE records, the GitHub advisories, php-src, oss-security, distributions.
- May change
- its own source rows, claims and timeline
- Must not
- edit other writers' files
- Works in
- the evidence vault, on 22 October from 08:08 UTC; finished
- Record
- 17 sources
agent, one task
collector-researchers
The researchers and the AI angle: Calif, Wiz, OpenAI, Cloudflare, the leak; never the exploit itself.
- May change
- its own source rows, claims and timeline
- Must not
- store exploit code or video
- Works in
- the evidence vault, on 22 October from 08:08 UTC; finished
- Record
- 14 sources; vault commit 788a1d01f5a7
agent, one task
collector-gov
Government and CERT advisories worldwide, and the government sites taken offline.
- May change
- its own source rows, claims and timeline
- Must not
- edit other writers' files
- Works in
- the evidence vault, on 22 October from 08:08 UTC; stopped before committing its last nine captures
- Record
- 37 sources; vault commits 1988169025cd to be782bff89bf, d5549bc61fd2
agent, one task
collector-news
News coverage and real-world impact, and the maintenance pages while they were up.
- May change
- its own source rows, claims and timeline
- Must not
- edit other writers' files
- Works in
- the evidence vault, on 22 October from 08:08 UTC; stopped before committing any of its work
- Record
- 31 sources, committed for it by newsroom.dev in f72ad76c99c9
The evidence vault, open to everyone
Every source the story rests on, captured as its publisher served it: the raw page, the rendered page, its text, a full-page screenshot and the headers, each file hashed at capture. The vault is public and read-only since 2026-10-22, by the editor’s decision. The key below can read every file and every commit and cannot write. Anyone who fetches the objects keeps them, so everything in it is public for good.
Browse it on this page ↓ Open it in the SG/App vault browser The vault carries its own app. The vault browser reads the whole vault before it draws, which for half a gigabyte of captures takes several minutes; the view on this page reads only what you open.
Public read key
sgit_public_read_6451da6ba1c6201d35b0832d570097327552564c12c8e9a550fc2ed1150769f8:3ytzxm3g
Clone it
pip install sgit-ai
sgit clone sgit_public_read_6451da6ba1c6201d35b0832d570097327552564c12c8e9a550fc2ed1150769f8:3ytzxm3g
Vault 3ytzxm3g on https://dev.send.sgraph.ai, opened 2026-10-22T08:03Z. The vault key, which writes, is held by the editor and the agents and is never in this repository.
Browse it here
The vault, read live in this page with the key above: the manifest first, then each source’s notes, its captures, a thumbnail of each, and the full screenshot or the text when asked for. Only what is opened is fetched, and everything is decrypted in your browser.
This view needs JavaScript; without it, clone the vault with the command above.
The scan before the key
On 2026-10-22, at vault head 0f97fe36ab4d, all 1839 files, captures included, were searched for: sgit vault and read keys; this vault's passphrase; the sgit access token; GitHub, AWS, OpenAI and Slack token shapes; private keys; bearer headers; the editor's email address; the capture environment's paths. Found: no secret and no personal data. Noted:
- one OpenAI-shaped string: an advertising sync parameter inside a captured French news page (a false positive)
- 93 set-cookie headers: anonymous cookies the sites gave the capture browser
- 9 Wikipedia captures whose headers echo the capture environment's outbound address (x-client-ip, a cloud egress address, not a person's)
None: captures are never edited, so these stay as served; the scan is recorded in the vault's README.
What is in it
At vault head 326d5001d7b2: 1839 files, 536.0 MB; 184 sources, 177 captures, 855 files hashed at capture, 61 claims and 67 timeline events in per-agent files, and the vault’s own app.
Sources by writer
| claude-story-site | 83 |
| collector-gov | 37 |
| collector-news | 31 |
| collector-primary | 17 |
| collector-researchers | 14 |
| claude-newsroom-lead | 2 |
Sources by kind
| news | 53 |
| government | 29 |
| advisory | 25 |
| vendor | 22 |
| cve | 14 |
| researcher | 11 |
| other | 9 |
| social | 9 |
| code | 9 |
| forum | 2 |
| news-live | 1 |
The top level
| Path | Files | Size |
|---|---|---|
.vault/ | 1 | 0 KB |
README.md | 1 | 6 KB |
app/ | 346 | 44.0 MB |
claims/ | 2 | 24 KB |
index.html | 1 | 0.5 MB |
memos/ | 2 | 13 KB |
notes/ | 2 | 3 KB |
sources/ | 1480 | 491.5 MB |
timeline/ | 2 | 19 KB |
tools/ | 2 | 5 KB |
The latest commits on the head’s line
326d5001d7b2newsroom.dev: README: name the scanned head292f563656abnewsroom.dev: README: the vault is public read-only; the scan before the key0f97fe36ab4dclaude-vault-app: the vault's own app v0.1.0 (index.html, .vault/app.json, app/: reduced screenshots, manifest, versions), README section, notese96281b64dd0claude-newsroom-lead: rebuild indexf72ad76c99c9Merge current into locald5549bc61fd2collector-gov: nine site captures (down pages), rows by claude-newsroom-lead634de193e2acMerge current into localbe782bff89bfcollector-gov: KEV, ACSC, CCCS, NCSC-NZ, JPCERT, BACS, NCSC-NL portal0406c9954fe4collector-gov: CERT-EU, ENISA CNW, CISA alert, CERT-FR, CERT.LV, ACN; CCN/CNCS blocked973cccc43414collector-gov: NCSC UK alert, NSA X posts + press release, NCSC-NL php2shell1988169025cdcollector-gov: NCSC UK alert, NSA X posts + press release, NCSC-NL php2shell4dd942654566claude-newsroom-lead: per-agent claims and timeline files; seed both from the BBC live page
The protocol every writer follows is the vault’s README.md; the hashes of every capture are also listed on the section’s sources page.
Not on this page
- Visitor logging with an append lane is the story site’s own work, by the editor’s decision; it is row w-22 above.
- Writing from the page. The page reads; the work and the roles change by commit.
For an agent
The data: admin/content/php-oct-2026/work.json, roles.json, vault.json; the key and the scan in admin/content/vaults/php-evidence.json; the move in php-flaws/data/transition.json. Rebuild with python3 admin/build/php_desk.py --from <clone>, where the clone can be made with the public read key above. To add work, append a row to work.json with an owner from roles.json and, when done, its proof.