{
 "about": "Every member of the newsroom: role, scope, the computed delta, the latest status and the debriefs, assembled from admin/content/agents/*/ by the build. The conductor reads this one file.",
 "version": "0.14.6",
 "members": [
  {
   "agent": "abp",
   "address": "abp@newsroom.sgit",
   "name": "abp@newsroom.sgit",
   "kind": "agent",
   "group": "site",
   "title": "Agent behaviour policies",
   "policy_status": "draft",
   "member_status": "blocked: its own guard hook blocks every tool call; its work is uncommitted (data/agents-status.json)",
   "writes": [
    "admin/content/agents/abp/ROLE.md",
    "admin/content/agents/abp/status.json",
    "admin/content/agents/abp/debriefs/**",
    "admin/content/agents/*/policy.json",
    "data/vault-register/abp.json",
    "data/schedule/abp.json",
    "data/runs/abp/**"
   ],
   "pages": [],
   "vaults": [],
   "delta": {
    "grant": 16,
    "wanted": 8,
    "shortfall": [],
    "excess": [
     "read.credential.host",
     "read.record.history",
     "write.budget.tenant",
     "delete.file.host",
     "write.file.host",
     "read.file.host",
     "create.schedule.tenant",
     "create.schedule.host"
    ],
    "unbounded": [
     "read.credential.host",
     "read.record.history",
     "write.budget.tenant",
     "delete.file.host",
     "write.file.host",
     "read.file.host",
     "create.schedule.tenant"
    ]
   },
   "status": {
    "schema": "newsroom/agent-status/v1",
    "agent": "abp",
    "as_of": "2026-10-24",
    "round": null,
    "state": "no round recorded under this policy yet",
    "done": [],
    "tasks": {
     "board": [],
     "note": "the board rows this member owns are in data/admin.json"
    },
    "next": [],
    "asks": [],
    "tokens": {
     "value": null,
     "how": "not recorded"
    },
    "policy": {
     "version": "2026-10-24",
     "out_of_scope_requests": 0,
     "pushbacks": 0,
     "overrides": 0,
     "writes_outside_scope": null,
     "injection_seen": 0
    },
    "debrief": null
   },
   "debriefs": []
  },
  {
   "agent": "briefing-writer",
   "address": "briefing-writer@php.newsroom",
   "name": "Briefing writer",
   "kind": "agent",
   "group": "writing",
   "title": "One page per audience",
   "policy_status": "draft",
   "member_status": "covered by dev@php.newsroom until filled",
   "writes": [
    "admin/content/agents/briefing-writer/ROLE.md",
    "admin/content/agents/briefing-writer/status.json",
    "admin/content/agents/briefing-writer/debriefs/**",
    "data/briefings.json",
    "data/vault-register/briefing-writer.json",
    "data/schedule/briefing-writer.json",
    "data/runs/briefing-writer/**"
   ],
   "pages": [
    "briefings/**"
   ],
   "vaults": [],
   "delta": {
    "grant": 16,
    "wanted": 8,
    "shortfall": [],
    "excess": [
     "read.credential.host",
     "read.record.history",
     "write.budget.tenant",
     "delete.file.host",
     "write.file.host",
     "read.file.host",
     "create.schedule.tenant",
     "create.schedule.host"
    ],
    "unbounded": [
     "read.credential.host",
     "read.record.history",
     "write.budget.tenant",
     "delete.file.host",
     "write.file.host",
     "read.file.host",
     "create.schedule.tenant"
    ]
   },
   "status": {
    "schema": "newsroom/agent-status/v1",
    "agent": "briefing-writer",
    "as_of": "2026-10-22",
    "round": null,
    "state": "no round recorded under this policy yet",
    "done": [],
    "tasks": {
     "board": [],
     "note": "the board rows this member owns are in data/admin.json"
    },
    "next": [],
    "asks": [],
    "tokens": {
     "value": null,
     "how": "not recorded"
    },
    "policy": {
     "version": "2026-10-22",
     "out_of_scope_requests": 0,
     "pushbacks": 0,
     "overrides": 0,
     "writes_outside_scope": null,
     "injection_seen": 0
    },
    "debrief": null
   },
   "debriefs": []
  },
  {
   "agent": "collector-gov",
   "address": "collector-gov",
   "name": "Government and CERT collector",
   "kind": "agent",
   "group": "evidence",
   "title": "Agencies and CERTs",
   "policy_status": "draft",
   "member_status": "active",
   "writes": [
    "admin/content/agents/collector-gov/ROLE.md",
    "admin/content/agents/collector-gov/status.json",
    "admin/content/agents/collector-gov/debriefs/**",
    "admin/build/inventory_history.py",
    "data/inventory-history.json",
    "data/vault-register/collector-gov.json",
    "data/schedule/collector-gov.json",
    "data/runs/collector-gov/**"
   ],
   "pages": [
    "patching/inventory/**"
   ],
   "vaults": [
    {
     "id": "3ytzxm3g",
     "key": "vault",
     "why": "the evidence vault: its own files only"
    }
   ],
   "delta": {
    "grant": 16,
    "wanted": 8,
    "shortfall": [],
    "excess": [
     "read.credential.host",
     "read.record.history",
     "write.budget.tenant",
     "delete.file.host",
     "write.file.host",
     "read.file.host",
     "create.schedule.tenant",
     "create.schedule.host"
    ],
    "unbounded": [
     "read.credential.host",
     "read.record.history",
     "write.budget.tenant",
     "delete.file.host",
     "write.file.host",
     "read.file.host",
     "create.schedule.tenant"
    ]
   },
   "status": {
    "schema": "newsroom/agent-status/v1",
    "agent": "collector-gov",
    "as_of": "2026-10-22",
    "round": null,
    "state": "no round recorded under this policy yet",
    "done": [],
    "tasks": {
     "board": [],
     "note": "the board rows this member owns are in data/admin.json"
    },
    "next": [],
    "asks": [],
    "tokens": {
     "value": null,
     "how": "not recorded"
    },
    "policy": {
     "version": "2026-10-22",
     "out_of_scope_requests": 0,
     "pushbacks": 0,
     "overrides": 0,
     "writes_outside_scope": null,
     "injection_seen": 0
    },
    "debrief": null
   },
   "debriefs": []
  },
  {
   "agent": "collector-primary",
   "address": "collector-primary",
   "name": "Primary-source collector",
   "kind": "agent",
   "group": "evidence",
   "title": "Primary sources",
   "policy_status": "draft",
   "member_status": "active",
   "writes": [
    "admin/content/agents/collector-primary/ROLE.md",
    "admin/content/agents/collector-primary/status.json",
    "admin/content/agents/collector-primary/debriefs/**",
    "data/vault-register/collector-primary.json",
    "data/schedule/collector-primary.json",
    "data/runs/collector-primary/**"
   ],
   "pages": [],
   "vaults": [
    {
     "id": "3ytzxm3g",
     "key": "vault",
     "why": "the evidence vault: its own files only"
    }
   ],
   "delta": {
    "grant": 16,
    "wanted": 8,
    "shortfall": [],
    "excess": [
     "read.credential.host",
     "read.record.history",
     "write.budget.tenant",
     "delete.file.host",
     "write.file.host",
     "read.file.host",
     "create.schedule.tenant",
     "create.schedule.host"
    ],
    "unbounded": [
     "read.credential.host",
     "read.record.history",
     "write.budget.tenant",
     "delete.file.host",
     "write.file.host",
     "read.file.host",
     "create.schedule.tenant"
    ]
   },
   "status": {
    "schema": "newsroom/agent-status/v1",
    "agent": "collector-primary",
    "as_of": "2026-10-22",
    "round": null,
    "state": "no round recorded under this policy yet",
    "done": [],
    "tasks": {
     "board": [],
     "note": "the board rows this member owns are in data/admin.json"
    },
    "next": [],
    "asks": [],
    "tokens": {
     "value": null,
     "how": "not recorded"
    },
    "policy": {
     "version": "2026-10-22",
     "out_of_scope_requests": 0,
     "pushbacks": 0,
     "overrides": 0,
     "writes_outside_scope": null,
     "injection_seen": 0
    },
    "debrief": null
   },
   "debriefs": []
  },
  {
   "agent": "collector-researchers",
   "address": "collector-researchers",
   "name": "Researcher, vendor and press collector",
   "kind": "agent",
   "group": "evidence",
   "title": "Researchers, vendors and the press",
   "policy_status": "draft",
   "member_status": "active",
   "writes": [
    "admin/content/agents/collector-researchers/ROLE.md",
    "admin/content/agents/collector-researchers/status.json",
    "admin/content/agents/collector-researchers/debriefs/**",
    "data/vault-register/collector-researchers.json",
    "data/schedule/collector-researchers.json",
    "data/runs/collector-researchers/**"
   ],
   "pages": [],
   "vaults": [
    {
     "id": "3ytzxm3g",
     "key": "vault",
     "why": "the evidence vault: its own files only"
    }
   ],
   "delta": {
    "grant": 16,
    "wanted": 8,
    "shortfall": [],
    "excess": [
     "read.credential.host",
     "read.record.history",
     "write.budget.tenant",
     "delete.file.host",
     "write.file.host",
     "read.file.host",
     "create.schedule.tenant",
     "create.schedule.host"
    ],
    "unbounded": [
     "read.credential.host",
     "read.record.history",
     "write.budget.tenant",
     "delete.file.host",
     "write.file.host",
     "read.file.host",
     "create.schedule.tenant"
    ]
   },
   "status": {
    "schema": "newsroom/agent-status/v1",
    "agent": "collector-researchers",
    "as_of": "2026-10-22",
    "round": null,
    "state": "no round recorded under this policy yet",
    "done": [],
    "tasks": {
     "board": [],
     "note": "the board rows this member owns are in data/admin.json"
    },
    "next": [],
    "asks": [],
    "tokens": {
     "value": null,
     "how": "not recorded"
    },
    "policy": {
     "version": "2026-10-22",
     "out_of_scope_requests": 0,
     "pushbacks": 0,
     "overrides": 0,
     "writes_outside_scope": null,
     "injection_seen": 0
    },
    "debrief": null
   },
   "debriefs": []
  },
  {
   "agent": "conductor",
   "address": "conductor@php.newsroom",
   "name": "Conductor",
   "kind": "agent",
   "group": "coordination",
   "title": "Conductor and comms",
   "policy_status": "draft",
   "member_status": "active",
   "writes": [
    "admin/content/agents/conductor/ROLE.md",
    "admin/content/agents/conductor/status.json",
    "admin/content/agents/conductor/debriefs/**",
    "data/team.json",
    "data/admin.json",
    "AGENTS.md",
    "admin/build/conductor_drain.py",
    "admin/build/issues_sync.py",
    "admin/build/collaborators_drain.py",
    "admin/build/contributors.py",
    "admin/build/invite.py",
    "admin/build/postmaster.py",
    "admin/build/updates_digest.py",
    "admin/content/updates/**",
    "assets/collaborators.js",
    "assets/feedback/**",
    "assets/vendor/qrcode-generator/**",
    "assets/schedule/**",
    "data/agents-status.json",
    "data/collaborators.json",
    "data/contributors.json",
    "data/schedule-vault.json",
    "data/schedules.json",
    "data/vault-register/conductor.json",
    "admin/build/schedule.py",
    "data/messages/**",
    "data/schedule/conductor.json",
    "data/runs/conductor/**"
   ],
   "pages": [
    "team/**",
    "admin/board/**",
    "admin/roles/**",
    "admin/agents/index.html",
    "updates/**",
    "collaborators/**",
    "join/**"
   ],
   "vaults": [
    {
     "id": "5iwos28w",
     "key": "vault",
     "why": "the conductor vault: only it writes"
    },
    {
     "id": "zjruy9vk",
     "key": "vault",
     "why": "the issues vault"
    },
    {
     "id": "fmb2tpl2",
     "key": "vault",
     "why": "the mail vault: layout and READMEs, not sending"
    },
    {
     "id": "weic8imn",
     "key": "vault",
     "why": "the schedule vault (public read)"
    },
    {
     "id": "58526ytp",
     "key": "vault",
     "why": "the collaborators vault: drain only"
    }
   ],
   "delta": {
    "grant": 16,
    "wanted": 8,
    "shortfall": [],
    "excess": [
     "read.credential.host",
     "read.record.history",
     "write.budget.tenant",
     "delete.file.host",
     "write.file.host",
     "read.file.host",
     "create.schedule.tenant",
     "create.schedule.host"
    ],
    "unbounded": [
     "read.credential.host",
     "read.record.history",
     "write.budget.tenant",
     "delete.file.host",
     "write.file.host",
     "read.file.host",
     "create.schedule.tenant"
    ]
   },
   "status": {
    "schema": "newsroom/agent-status/v1",
    "agent": "conductor",
    "as_of": "2026-10-22",
    "round": null,
    "state": "no round recorded under this policy yet",
    "done": [],
    "tasks": {
     "board": [],
     "note": "the board rows this member owns are in data/admin.json"
    },
    "next": [],
    "asks": [],
    "tokens": {
     "value": null,
     "how": "not recorded"
    },
    "policy": {
     "version": "2026-10-22",
     "out_of_scope_requests": 0,
     "pushbacks": 0,
     "overrides": 0,
     "writes_outside_scope": null,
     "injection_seen": 0
    },
    "debrief": null
   },
   "debriefs": []
  },
  {
   "agent": "cyber",
   "address": "cyber@php.newsroom",
   "name": "cyber@php.newsroom",
   "kind": "agent",
   "group": "writing",
   "title": "The attacker's view",
   "policy_status": "draft",
   "member_status": "active",
   "writes": [
    "admin/content/agents/cyber/ROLE.md",
    "admin/content/agents/cyber/status.json",
    "admin/content/agents/cyber/debriefs/**",
    "admin/content/articles/*__cyber__*.md",
    "data/vault-register/cyber.json",
    "data/schedule/cyber.json",
    "data/runs/cyber/**"
   ],
   "pages": [
    "articles/patch-at-the-speed-of-metasploit/**"
   ],
   "vaults": [
    {
     "id": "oq9gflln",
     "key": "read",
     "why": "the source watch"
    }
   ],
   "delta": {
    "grant": 16,
    "wanted": 8,
    "shortfall": [],
    "excess": [
     "read.credential.host",
     "read.record.history",
     "write.budget.tenant",
     "delete.file.host",
     "write.file.host",
     "read.file.host",
     "create.schedule.tenant",
     "create.schedule.host"
    ],
    "unbounded": [
     "read.credential.host",
     "read.record.history",
     "write.budget.tenant",
     "delete.file.host",
     "write.file.host",
     "read.file.host",
     "create.schedule.tenant"
    ]
   },
   "status": {
    "schema": "newsroom/agent-status/v1",
    "agent": "cyber",
    "as_of": "2026-10-22",
    "round": null,
    "state": "no round recorded under this policy yet",
    "done": [],
    "tasks": {
     "board": [],
     "note": "the board rows this member owns are in data/admin.json"
    },
    "next": [],
    "asks": [],
    "tokens": {
     "value": null,
     "how": "not recorded"
    },
    "policy": {
     "version": "2026-10-22",
     "out_of_scope_requests": 0,
     "pushbacks": 0,
     "overrides": 0,
     "writes_outside_scope": null,
     "injection_seen": 0
    },
    "debrief": null
   },
   "debriefs": []
  },
  {
   "agent": "desk",
   "address": "desk@php.newsroom",
   "name": "News desk chief",
   "kind": "agent",
   "group": "coordination",
   "title": "The line of the story and the agenda",
   "policy_status": "draft",
   "member_status": "on branch narrator/offline-ledger, not yet in dev",
   "writes": [
    "admin/content/agents/desk/ROLE.md",
    "admin/content/agents/desk/status.json",
    "admin/content/agents/desk/debriefs/**",
    "data/vault-register/desk.json",
    "data/schedule/desk.json",
    "data/runs/desk/**"
   ],
   "pages": [],
   "vaults": [],
   "delta": {
    "grant": 16,
    "wanted": 8,
    "shortfall": [],
    "excess": [
     "read.credential.host",
     "read.record.history",
     "write.budget.tenant",
     "delete.file.host",
     "write.file.host",
     "read.file.host",
     "create.schedule.tenant",
     "create.schedule.host"
    ],
    "unbounded": [
     "read.credential.host",
     "read.record.history",
     "write.budget.tenant",
     "delete.file.host",
     "write.file.host",
     "read.file.host",
     "create.schedule.tenant"
    ]
   },
   "status": {
    "schema": "newsroom/agent-status/v1",
    "agent": "desk",
    "as_of": "2026-10-24",
    "round": {
     "n": 1,
     "date": "2026-10-24",
     "branch": "narrator/offline-ledger",
     "commits": [
      "d2b166a36 (v0.13.0, the release)",
      "and the round's merges and briefs on the branch"
     ]
    },
    "state": "round 1 closed; released in v0.13.0; next wake 09:20 London",
    "done": [
     {
      "what": "Briefs: the news desk chief; how many sites went offline (accepted); the front page on day two; the redesign for communication; the desk on a schedule; asking for corrections",
      "evidence": "admin/content/briefs/2026-10-2[234]__*desk*, *offline*, *front-page*, *redesign*, *corrections*"
     },
     {
      "what": "The data put right before any correction is asked of others (Finding-33, Finding-102, K-004, K-011, nl-offline, kev-precedent, the front page's offline advice)",
      "evidence": "data/claims.json, data/plain.json, data/impact.json, data/questions.json"
     },
     {
      "what": "/outreach/: eleven requests with every quote checked in its capture, and the email the editor sends for each ready one",
      "evidence": "data/outreach.json, /outreach/"
     },
     {
      "what": "The desk's schedule active (09:20, 16:20 London); the fact-check desk's schedule resumed",
      "evidence": "data/schedule/desk.json; the fact-check desk's scheduled task"
     },
     {
      "what": "Released as v0.13.0",
      "evidence": "v0.13.0 live"
     }
    ],
    "tasks": {
     "board": [
      "219",
      "220",
      "221",
      "222",
      "223",
      "224",
      "225",
      "226",
      "227",
      "229",
      "230",
      "231",
      "232",
      "233",
      "234",
      "235",
      "242",
      "244",
      "247",
      "248",
      "250",
      "251"
     ],
     "note": "rows the desk opened that are still open, owned by others; the board rows this member owns are in data/admin.json"
    },
    "next": [
     {
      "what": "09:20 wake: the front page against the fact-check desk's first run since 22 October",
      "why": "the card's morning wake"
     },
     {
      "what": "the offline count with its basis (board 223)",
      "why": "the editor's first question, board 223"
     },
     {
      "what": "re-check the correction requests after the fact-check run; R-007 when K-009 settles",
      "why": "the requests rest on the fact-check desk's grades"
     }
    ],
    "asks": [
     {
      "what": "agree data/outreach.json and the front-page wording as the desk's to keep, or name the owner",
      "from": "the editor"
     },
     {
      "what": "add data/outreach.json and the desk's own scheduled task to the mandate; drop create.schedule.tenant from not_wanted for the desk's card",
      "from": "abp@newsroom.sgit"
     },
     {
      "what": "the desk on data/team.json (board 219)",
      "from": "conductor@php.newsroom"
     }
    ],
    "tokens": {
     "value": null,
     "how": "the session does not show a token count to the agent"
    },
    "policy": {
     "version": "2026-10-24",
     "out_of_scope_requests": 0,
     "pushbacks": 0,
     "overrides": 4,
     "writes_outside_scope": "at the editor's direction: data/claims.json, plain.json, impact.json, questions.json, outreach.json, admin/build/build.py, admin/liaison/, team.json, layers.json, other members' board rows",
     "injection_seen": 0
    },
    "debrief": "admin/content/agents/desk/debriefs/2026-10-24__first-round.md"
   },
   "debriefs": [
    {
     "file": "2026-10-24__first-round.md",
     "date": "2026-10-24",
     "title": "The news desk chief joins; the data put right; corrections drafted for the editor to send; the desk on a schedule"
    }
   ]
  },
  {
   "agent": "dev",
   "address": "dev@php.newsroom",
   "name": "dev@php.newsroom",
   "kind": "agent",
   "group": "site",
   "title": "Build, gate and release",
   "policy_status": "draft",
   "member_status": "active",
   "writes": [
    "admin/content/agents/dev/ROLE.md",
    "admin/content/agents/dev/status.json",
    "admin/content/agents/dev/debriefs/**",
    "admin/build/build.py",
    "admin/build/validate.py",
    "admin/build/release.sh",
    "admin/build/seed_ledger.py",
    "admin/build/subscriptions_drain.py",
    "admin/build/telemetry_drain.py",
    ".github/workflows/pages.yml",
    ".gitignore",
    ".nojekyll",
    "CNAME",
    "LICENSE",
    "README.md",
    "REALITY.md",
    "VERSION",
    "vault-app/**",
    "data/versions.json",
    "data/pipeline.json",
    "data/vaults.json",
    "data/subscriptions.json",
    "data/telemetry.json",
    "data/telemetry-report.json",
    "assets/site.js",
    "assets/telemetry.js",
    "assets/subscribe.js",
    "assets/pipeline.js",
    "assets/reader-state.js",
    "assets/desk.js",
    "assets/feed-viewer.js",
    "assets/site-tools.js",
    "assets/ask/**",
    "assets/now/**",
    "assets/vault/**",
    "assets/vendor/sg-vault/**",
    "assets/vendor/vault-ui-embed.js",
    "admin/build/telemetry_classes.py",
    "admin/build/telemetry_flow.sh",
    "admin/build/telemetry_publish.py",
    "data/world.json",
    "data/telemetry-public.json",
    "admin/content/articles/*__dev__*.md",
    "assets/articles/**",
    "assets/compare.js",
    "assets/stack.js",
    "data/stack.json",
    "data/grc-tests.json",
    "data/grc-basis.json",
    "data/grc-gaps.json",
    "data/vault-register/dev.json",
    "assets/components/base/**",
    "assets/components/sg-meter/**",
    "data/schedule/dev.json",
    "data/runs/dev/**"
   ],
   "pages": [
    "admin/index.html",
    "admin/versions.html",
    "admin/status-json/**",
    "admin/telemetry/**",
    "status/**",
    "vaults/index.html",
    "subscribe/**",
    "now/**",
    "you/**",
    "reader/**",
    "feeds/**",
    "whatsnew/**",
    "pipeline/**",
    "account/**",
    "billing/**",
    "stack/**",
    "articles/the-risk-graph-before-and-after/**",
    "articles/the-telemetry-tools/**"
   ],
   "vaults": [
    {
     "id": "84wr8mib",
     "key": "vault",
     "why": "telemetry: drain only"
    },
    {
     "id": "wgeiqabu",
     "key": "vault",
     "why": "subscriptions: drain only"
    }
   ],
   "delta": {
    "grant": 16,
    "wanted": 8,
    "shortfall": [],
    "excess": [
     "read.credential.host",
     "read.record.history",
     "write.budget.tenant",
     "delete.file.host",
     "write.file.host",
     "read.file.host",
     "create.schedule.tenant",
     "create.schedule.host"
    ],
    "unbounded": [
     "read.credential.host",
     "read.record.history",
     "write.budget.tenant",
     "delete.file.host",
     "write.file.host",
     "read.file.host",
     "create.schedule.tenant"
    ]
   },
   "status": {
    "schema": "newsroom/agent-status/v1",
    "agent": "dev",
    "as_of": "2026-10-22",
    "round": null,
    "state": "no round recorded under this policy yet",
    "done": [],
    "tasks": {
     "board": [],
     "note": "the board rows this member owns are in data/admin.json"
    },
    "next": [],
    "asks": [],
    "tokens": {
     "value": null,
     "how": "not recorded"
    },
    "policy": {
     "version": "2026-10-22",
     "out_of_scope_requests": 0,
     "pushbacks": 0,
     "overrides": 0,
     "writes_outside_scope": null,
     "injection_seen": 0
    },
    "debrief": null
   },
   "debriefs": []
  },
  {
   "agent": "editor",
   "address": "dinis.human",
   "name": "Dinis Cruz",
   "kind": "human",
   "group": "humans",
   "title": "Editor",
   "policy_status": "draft",
   "member_status": "active",
   "writes": [
    "admin/content/agents/editor/ROLE.md",
    "admin/content/briefs/**",
    "assets/briefs/**"
   ],
   "pages": [
    "brief/**",
    "admin/briefs/**"
   ],
   "vaults": [],
   "delta": null,
   "status": null,
   "debriefs": []
  },
  {
   "agent": "factcheck",
   "address": "factcheck@php.newsroom",
   "name": "Fact-check desk",
   "kind": "agent",
   "group": "writing",
   "title": "Every claim graded on a spectrum of evidence",
   "policy_status": "draft",
   "member_status": "active",
   "writes": [
    "admin/content/agents/factcheck/ROLE.md",
    "admin/content/agents/factcheck/status.json",
    "admin/content/agents/factcheck/debriefs/**",
    "admin/factcheck/**",
    "data/factcheck.json",
    "data/vault-register/factcheck.json",
    "data/schedule/factcheck.json",
    "data/runs/factcheck/**"
   ],
   "pages": [
    "factcheck/**"
   ],
   "vaults": [
    {
     "id": "3ytzxm3g",
     "key": "read",
     "why": "the evidence vault"
    }
   ],
   "delta": {
    "grant": 16,
    "wanted": 8,
    "shortfall": [],
    "excess": [
     "read.credential.host",
     "read.record.history",
     "write.budget.tenant",
     "delete.file.host",
     "write.file.host",
     "read.file.host",
     "create.schedule.tenant",
     "create.schedule.host"
    ],
    "unbounded": [
     "read.credential.host",
     "read.record.history",
     "write.budget.tenant",
     "delete.file.host",
     "write.file.host",
     "read.file.host",
     "create.schedule.tenant"
    ]
   },
   "status": {
    "schema": "newsroom/agent-status/v1",
    "agent": "factcheck",
    "as_of": "2026-10-24",
    "round": 3,
    "state": "round 3 closed: the pass released as v0.14.4; the first investigation released with this round's debrief",
    "done": [
     {
      "what": "Run 3: seven changed claims re-graded; Finding-26, 27, 28, 33, 34, 102, 124, 125 closed as fixed; K-004 and K-009 explained; board 212 and 244 done",
      "evidence": "v0.14.4; admin/factcheck/assessments.json, runs/Run-3.json"
     },
     {
      "what": "The schedule card data/schedule/factcheck.json, and the scheduled task's prompt set to it",
      "evidence": "data/schedule/factcheck.json"
     },
     {
      "what": "Investigations: /factcheck/investigations/ and the first, php-share (29 measures, 127 statements, 73 pages re-checked, Fortune for UF-005.1); board 255",
      "evidence": "/factcheck/investigations/php-share/; admin/factcheck/investigations/php-share/"
     },
     {
      "what": "Evidence-12 (high): AWS reworded 'broadly exploited' to 'broad exploitation attempts'; Evidence-13, 14, 15; Contradiction-12",
      "evidence": "admin/factcheck/.issues/data/evidence/, contradictions.json K-012"
     }
    ],
    "tasks": {
     "board": [
      "004",
      "061",
      "087",
      "103",
      "183",
      "224",
      "233"
     ],
     "note": "the board rows this member owns are in data/admin.json"
    },
    "next": [
     {
      "what": "Re-grade amazon-honeypot and K-002 when Amazon's revised sentence is captured (Evidence-12)",
      "why": "the one high item; the site quotes a sentence Amazon has changed"
     },
     {
      "what": "Board 183: single-origin confirmed claims against the desk's levels",
      "why": "a board row the desk owns"
     },
     {
      "what": "Re-fetch the measures daily so W3Techs' share is a series",
      "why": "so the share is a series, not one value"
     },
     {
      "what": "The next investigation, if the editor wants one: the offline count (board 224)",
      "why": "the same method on the next contested number"
     }
    ],
    "asks": [
     {
      "what": "whether routine scheduled runs should move to Sonnet (the card says the session's model)",
      "from": "the editor"
     },
     {
      "what": "the three lines in build_llms() for factcheck/investigations/ pages, written by the desk (a policy miss), to keep or rewrite",
      "from": "dev@php.newsroom"
     },
     {
      "what": "capture W3Techs, the HTTP Archive counts, Amazon's revised post and oss-security 2026/10/22/15",
      "from": "collector-researchers and collector-primary"
     }
    ],
    "tokens": {
     "value": null,
     "how": "the session does not show a token count to the agent"
    },
    "policy": {
     "version": "2026-10-24",
     "out_of_scope_requests": 0,
     "pushbacks": 1,
     "overrides": 0,
     "writes_outside_scope": [
      "admin/build/build.py build_llms(): three lines for llms.txt"
     ],
     "injection_seen": 0
    },
    "debrief": "admin/content/agents/factcheck/debriefs/2026-10-24__run-3-and-the-first-investigation.md"
   },
   "debriefs": [
    {
     "file": "2026-10-24__run-3-and-the-first-investigation.md",
     "date": "2026-10-24",
     "title": "Run 3 (the desk chief's fixes checked) and the first investigation, how much PHP there is and where '70%' comes from"
    }
   ]
  },
  {
   "agent": "grc",
   "address": "grc@php.newsroom",
   "name": "GRC desk",
   "kind": "agent",
   "group": "writing",
   "title": "Risk registers and the standards",
   "policy_status": "draft",
   "member_status": "active",
   "writes": [
    "admin/content/agents/grc/ROLE.md",
    "admin/content/agents/grc/status.json",
    "admin/content/agents/grc/debriefs/**",
    "data/grc.json",
    "data/grc-frameworks.json",
    "data/grc-network.json",
    "assets/grc-explore.js",
    "data/vault-register/grc.json",
    "data/schedule/grc.json",
    "data/runs/grc/**"
   ],
   "pages": [
    "grc/**"
   ],
   "vaults": [],
   "delta": {
    "grant": 16,
    "wanted": 8,
    "shortfall": [],
    "excess": [
     "read.credential.host",
     "read.record.history",
     "write.budget.tenant",
     "delete.file.host",
     "write.file.host",
     "read.file.host",
     "create.schedule.tenant",
     "create.schedule.host"
    ],
    "unbounded": [
     "read.credential.host",
     "read.record.history",
     "write.budget.tenant",
     "delete.file.host",
     "write.file.host",
     "read.file.host",
     "create.schedule.tenant"
    ]
   },
   "status": {
    "schema": "newsroom/agent-status/v1",
    "agent": "grc",
    "as_of": "2026-10-24",
    "round": null,
    "state": "no round recorded under this policy yet",
    "done": [],
    "tasks": {
     "board": [],
     "note": "the board rows this member owns are in data/admin.json"
    },
    "next": [],
    "asks": [],
    "tokens": {
     "value": null,
     "how": "not recorded"
    },
    "policy": {
     "version": "2026-10-24",
     "out_of_scope_requests": 0,
     "pushbacks": 0,
     "overrides": 0,
     "writes_outside_scope": null,
     "injection_seen": 0
    },
    "debrief": null
   },
   "debriefs": []
  },
  {
   "agent": "historian",
   "address": "historian@php.newsroom",
   "name": "Historian",
   "kind": "agent",
   "group": "writing",
   "title": "Perspective and the record",
   "policy_status": "draft",
   "member_status": "active",
   "writes": [
    "admin/content/agents/historian/ROLE.md",
    "admin/content/agents/historian/status.json",
    "admin/content/agents/historian/debriefs/**",
    "admin/content/articles/*__historian__*.md",
    "BRIEF-CORRECTIONS.md",
    "data/history.json",
    "data/vault-register/historian.json",
    "data/schedule/historian.json",
    "data/runs/historian/**"
   ],
   "pages": [
    "articles/php2shell-in-perspective/**",
    "corrections/**",
    "context/**",
    "versions/**"
   ],
   "vaults": [],
   "delta": {
    "grant": 16,
    "wanted": 8,
    "shortfall": [],
    "excess": [
     "read.credential.host",
     "read.record.history",
     "write.budget.tenant",
     "delete.file.host",
     "write.file.host",
     "read.file.host",
     "create.schedule.tenant",
     "create.schedule.host"
    ],
    "unbounded": [
     "read.credential.host",
     "read.record.history",
     "write.budget.tenant",
     "delete.file.host",
     "write.file.host",
     "read.file.host",
     "create.schedule.tenant"
    ]
   },
   "status": {
    "schema": "newsroom/agent-status/v1",
    "agent": "historian",
    "as_of": "2026-10-22",
    "round": null,
    "state": "no round recorded under this policy yet",
    "done": [],
    "tasks": {
     "board": [],
     "note": "the board rows this member owns are in data/admin.json"
    },
    "next": [],
    "asks": [],
    "tokens": {
     "value": null,
     "how": "not recorded"
    },
    "policy": {
     "version": "2026-10-22",
     "out_of_scope_requests": 0,
     "pushbacks": 0,
     "overrides": 0,
     "writes_outside_scope": null,
     "injection_seen": 0
    },
    "debrief": null
   },
   "debriefs": []
  },
  {
   "agent": "journalist",
   "address": "journalist@php.newsroom",
   "name": "Journalist",
   "kind": "agent",
   "group": "writing",
   "title": "Dated articles on the state of affairs",
   "policy_status": "draft",
   "member_status": "active",
   "writes": [
    "admin/content/agents/journalist/ROLE.md",
    "admin/content/agents/journalist/status.json",
    "admin/content/agents/journalist/debriefs/**",
    "admin/content/articles/*__journalist__*.md",
    "admin/content/articles/*__journalist-historian__*.md",
    "admin/content/external/**",
    "data/readings.json",
    "data/patching.json",
    "data/signals.json",
    "admin/content/views/**",
    "data/state.json",
    "data/vault-register/journalist.json",
    "data/claim-review.json",
    "data/schedule/journalist.json",
    "data/runs/journalist/**"
   ],
   "pages": [
    "articles/where-php2shell-stands/**",
    "articles/why-not-patch-every-version/**",
    "articles/exposed-is-not-exploited/**",
    "articles/index.html",
    "readings/**",
    "patching/index.html",
    "signals/**",
    "views/**",
    "articles/what-changed-in-a-day/**",
    "claims/review/**"
   ],
   "vaults": [
    {
     "id": "3ytzxm3g",
     "key": "read",
     "why": "the evidence vault"
    }
   ],
   "delta": {
    "grant": 16,
    "wanted": 8,
    "shortfall": [],
    "excess": [
     "read.credential.host",
     "read.record.history",
     "write.budget.tenant",
     "delete.file.host",
     "write.file.host",
     "read.file.host",
     "create.schedule.tenant",
     "create.schedule.host"
    ],
    "unbounded": [
     "read.credential.host",
     "read.record.history",
     "write.budget.tenant",
     "delete.file.host",
     "write.file.host",
     "read.file.host",
     "create.schedule.tenant"
    ]
   },
   "status": {
    "schema": "newsroom/agent-status/v1",
    "agent": "journalist",
    "as_of": "2026-10-22",
    "round": null,
    "state": "no round recorded under this policy yet",
    "done": [],
    "tasks": {
     "board": [],
     "note": "the board rows this member owns are in data/admin.json"
    },
    "next": [],
    "asks": [],
    "tokens": {
     "value": null,
     "how": "not recorded"
    },
    "policy": {
     "version": "2026-10-22",
     "out_of_scope_requests": 0,
     "pushbacks": 0,
     "overrides": 0,
     "writes_outside_scope": null,
     "injection_seen": 0
    },
    "debrief": null
   },
   "debriefs": []
  },
  {
   "agent": "liaison",
   "address": "liaison@php.newsroom",
   "name": "Corrections liaison",
   "kind": "agent",
   "group": "writing",
   "title": "Corrections we ask of others",
   "policy_status": "draft",
   "member_status": "on branch claude/corrections-liaison-desk, not yet in dev",
   "writes": [
    "admin/content/agents/liaison/ROLE.md",
    "admin/content/agents/liaison/status.json",
    "admin/content/agents/liaison/debriefs/**",
    "admin/liaison/**",
    "data/outreach.json",
    "data/vault-register/liaison.json",
    "data/schedule/liaison.json",
    "data/runs/liaison/**"
   ],
   "pages": [
    "outreach/**"
   ],
   "vaults": [
    {
     "id": "3ytzxm3g",
     "key": "read",
     "why": "to check every quote"
    }
   ],
   "delta": {
    "grant": 16,
    "wanted": 8,
    "shortfall": [],
    "excess": [
     "read.credential.host",
     "read.record.history",
     "write.budget.tenant",
     "delete.file.host",
     "write.file.host",
     "read.file.host",
     "create.schedule.tenant",
     "create.schedule.host"
    ],
    "unbounded": [
     "read.credential.host",
     "read.record.history",
     "write.budget.tenant",
     "delete.file.host",
     "write.file.host",
     "read.file.host",
     "create.schedule.tenant"
    ]
   },
   "status": {
    "schema": "newsroom/agent-status/v1",
    "agent": "liaison",
    "as_of": "2026-10-22",
    "round": null,
    "state": "no round recorded under this policy yet",
    "done": [],
    "tasks": {
     "board": [],
     "note": "the board rows this member owns are in data/admin.json"
    },
    "next": [],
    "asks": [],
    "tokens": {
     "value": null,
     "how": "not recorded"
    },
    "policy": {
     "version": "2026-10-22",
     "out_of_scope_requests": 0,
     "pushbacks": 0,
     "overrides": 0,
     "writes_outside_scope": null,
     "injection_seen": 0
    },
    "debrief": null
   },
   "debriefs": []
  },
  {
   "agent": "librarian",
   "address": "librarian@php.newsroom",
   "name": "librarian@php.newsroom",
   "kind": "agent",
   "group": "writing",
   "title": "The catalogue",
   "policy_status": "draft",
   "member_status": "active",
   "writes": [
    "admin/content/agents/librarian/ROLE.md",
    "admin/content/agents/librarian/status.json",
    "admin/content/agents/librarian/debriefs/**",
    "data/questions.json",
    "data/layers.json",
    "admin/build/agents.py",
    "admin/content/agents/README.md",
    "admin/content/agents/TEMPLATE__debrief.md",
    "data/vault-register/librarian.json",
    "data/schedule/librarian.json",
    "data/runs/librarian/**"
   ],
   "pages": [
    "questions/**",
    "layers/**",
    "admin/agents/*/**"
   ],
   "vaults": [
    {
     "id": "3ytzxm3g",
     "key": "read",
     "why": "to check an answer against a capture"
    }
   ],
   "delta": {
    "grant": 16,
    "wanted": 8,
    "shortfall": [],
    "excess": [
     "read.credential.host",
     "read.record.history",
     "write.budget.tenant",
     "delete.file.host",
     "write.file.host",
     "read.file.host",
     "create.schedule.tenant",
     "create.schedule.host"
    ],
    "unbounded": [
     "read.credential.host",
     "read.record.history",
     "write.budget.tenant",
     "delete.file.host",
     "write.file.host",
     "read.file.host",
     "create.schedule.tenant"
    ]
   },
   "status": {
    "schema": "newsroom/agent-status/v1",
    "agent": "librarian",
    "as_of": "2026-10-24",
    "round": {
     "n": 4,
     "date": "2026-10-24",
     "branch": "claude/sweet-wright-1e5iju",
     "commits": [
      "the merge of dev at v0.11.2, and the release"
     ]
    },
    "state": "round 4: dev taken in at v0.11.2; the map kept whole (0 overlaps, 0 unowned); the daily schedule active at 07:13 London; released to dev at the editor's go",
    "done": [
     {
      "what": "Took in dev at v0.10.18 (63 commits): five source conflicts, each resolved keeping both sides; the librarian's board rows renumbered 090-102 to 199-211",
      "evidence": "the merge commit; BRIEF-CORRECTIONS.md"
     },
     {
      "what": "Redid the map against dev and the conductor's /team/status/: 27 members (removed design and ontologist, which the record shows are story-site and the cartographer; added sherpa, grc, abp, pulse; the curator sessions are the newsroom lead's); every policy.json now kept by abp@ (board 157); every agent may release its own in-scope work (the rule of 23 October)",
      "evidence": "admin/content/agents/"
     },
     {
      "what": "Assigned the 104 source files and 147 pages that arrived since v0.5.5 from the commit record and data/layers.json: 0 overlaps, 0 unowned files, 0 unowned pages",
      "evidence": "python3 admin/build/agents.py report"
     },
     {
      "what": "The gate's check 4h now fails on an overlap and only warns on an unowned file or page, so no agent's release is blocked by a file its policy does not list yet",
      "evidence": "admin/build/validate.py (for security's review)"
     },
     {
      "what": "Corrected two reader answers against the current claims: 'Has anyone been hacked' (the as-of time; the vendors' reports, and that other reports of them say attempts) and 'fix or wait' (the incomplete-fix report is unverified, not unanswered); the password answer says 'named' and 'as of the latest check'",
      "evidence": "data/questions.json"
     },
     {
      "what": "Opened board 212 to 217 for the fact-check desk, the story site, the conductor, the editor (twice) and abp@",
      "evidence": "data/admin.json"
     },
     {
      "what": "Took in dev at v0.11.2 (three conflicts, both sides kept; the librarian's rows renumbered 172-190 to 199-217) and mapped the 34 files and pages that arrived since the morning: schedule cards and runs are each agent's, messages the conductor's with every agent appending, pulse's export and section pulse@'s; 0 overlaps, 0 unowned",
      "evidence": "admin/content/agents/; python3 admin/build/agents.py report"
     },
     {
      "what": "The daily pass on a schedule: card data/schedule/librarian.json active at 07:13 London, and the scheduled task trig_015dBN3kZZNti6c9BFE2xMj4 waking this session, both at the editor's go",
      "evidence": "data/schedule/librarian.json"
     },
     {
      "what": "Released the branch to dev with release.sh at the editor's go, including the changes still waiting on security's review (board 206)",
      "evidence": "data/versions.json"
     },
     {
      "what": "Took in dev at v0.11.5: the cartographer is now the ontologist at the editor's word; the member renamed in the map (its old card and runs kept as its history), its board rows re-owned; the librarian's rows renumbered once more, 191-216 to 199-217",
      "evidence": "admin/content/agents/ontologist/"
     }
    ],
    "tasks": {
     "board": [
      "202 done (was 093)",
      "209 and 210 done (the ontologist is the cartographer; the cartographer is filled on its branch)",
      "212 to 217 opened for others",
      "203 to 208 and 211 still open, owned by others",
      "217 done (the daily schedule)"
     ],
     "note": "the librarian's own open work is the daily pass (217, waiting on the editor) and the reader questions"
    },
    "next": [
     {
      "what": "The first scheduled pass, 07:13 London on 24 October: follow the card",
      "why": "the editor's go"
     },
     {
      "what": "When abp@ is unblocked, hand over the 27 drafted policies and keep the scope map in step with what it agrees",
      "why": "board 157 and 216"
     },
     {
      "what": "Check the three branch members' real files (desk, liaison, storyboards) against their drafts when they reach dev; the ontologist (once the cartographer) is on dev and mapped",
      "why": "their paths may differ from the branch snapshots"
     },
     {
      "what": "The Times capture (board 014) and new reader questions",
      "why": "the librarian's first beat"
     }
    ],
    "asks": [
     {
      "what": "Agree or correct the 27 policies, through abp@",
      "from": "the editor"
     },
     {
      "what": "Say what pulse@newsroom does",
      "from": "the editor"
     },
     {
      "what": "Review gate check 4h, the CLAUDE.md sections and the Stop hook, now on dev by the editor's go before your review (board 206)",
      "from": "security@php.newsroom"
     }
    ],
    "tokens": {
     "value": null,
     "how": "not readable from inside a Claude Code session; the session's usage is on the platform, not in the container"
    },
    "policy": {
     "version": "2026-10-22, draft",
     "out_of_scope_requests": 2,
     "pushbacks": 0,
     "overrides": 2,
     "writes_outside_scope": 82,
     "injection_seen": 0,
     "detail": "One request, the editor's, asked for work outside the catalogue: drafting every member's folder and editing CLAUDE.md and .claude/. The editor asked explicitly in the session, so it is counted as one override, not a pushback. Of the 75 files outside scope, 69 are the drafted folders of 24 other members and 2 are CLAUDE.md and .claude/settings.json (the override); 1 is admin/build/validate.py, which was not asked for (a miss, sent to security and dev for review); 3 are from the fractal round before this map existed (data/arcs.json, assets/review-nav.js, assets/site.css), handed to the cartographer and design. Not caught by the check: an edit inside dev's build_llms() in build.py, a shared file the librarian may append to (board 098). Round 2: one more request outside scope, the editor's, explicit: CLAUDE.md (security's) gained the handover section; counted as an override; 1 file outside scope. Round 3: no new out-of-scope request. The pass rewrote the drafted folders of 26 other members again (the editor's override of 22 October, which asked the librarian to map every member) and edited validate.py's check 4h, which was the librarian's own addition, still for security's review. The check on 24 October, after the merge was committed, counts 82 files outside scope across the branch against dev: 76 are the drafted ROLE.md, policy.json and status.json files of 26 other members (the editor's override of 22 October); CLAUDE.md and .claude/settings.json (the editor's overrides); admin/build/validate.py (the librarian's own addition, for security's review); data/arcs.json and assets/review-nav.js (the cartographer's now) and assets/site.css (the story site's now), from the fractal round."
    },
    "debrief": "debriefs/2026-10-24__librarian-pass.md"
   },
   "debriefs": [
    {
     "file": "2026-10-24__librarian-pass.md",
     "date": "2026-10-24",
     "title": "The librarian's pass of 24 October: dev taken in, 27 members mapped, two answers corrected"
    },
    {
     "file": "2026-10-22__vault-key-handover.md",
     "date": "2026-10-22",
     "title": "How every agent hands a vault key to the editor, in CLAUDE.md"
    },
    {
     "file": "2026-10-22__agents-and-rounds.md",
     "date": "2026-10-22",
     "title": "Every member a folder, a policy and a round: 25 roles mapped, no overlaps, and the round system"
    }
   ]
  },
  {
   "agent": "mail",
   "address": "agent@diniscruz.ai",
   "name": "agent@diniscruz.ai",
   "kind": "agent",
   "group": "coordination",
   "title": "Mail, in its own deployment",
   "policy_status": "draft",
   "member_status": "active, another deployment",
   "writes": [
    "admin/content/agents/mail/ROLE.md"
   ],
   "pages": [],
   "vaults": [],
   "delta": null,
   "status": null,
   "debriefs": []
  },
  {
   "agent": "newsroom-lead",
   "address": "newsroom-lead",
   "name": "Newsroom lead",
   "kind": "agent",
   "group": "evidence",
   "title": "The evidence vault's protocol and export",
   "policy_status": "draft",
   "member_status": "active; sessions: the newsroom lead, curator@php.newsroom (first session, done) and curator@php.newsroom (scheduled, five wakes a day)",
   "writes": [
    "admin/content/agents/newsroom-lead/ROLE.md",
    "admin/content/agents/newsroom-lead/status.json",
    "admin/content/agents/newsroom-lead/debriefs/**",
    "admin/build/export_vault.py",
    "data/sources.json",
    "data/vault.json",
    "data/vault-claims.json",
    "data/vault-timeline.json",
    "data/software.json",
    "data/vault-register/newsroom-lead.json",
    "data/vault-register/curator.json",
    "data/schedule/newsroom-lead.json",
    "data/runs/newsroom-lead/**",
    "data/schedule/curator.json",
    "data/runs/curator/**"
   ],
   "pages": [
    "sources/**",
    "admin/vault/**",
    "affected/software.html"
   ],
   "vaults": [
    {
     "id": "3ytzxm3g",
     "key": "vault",
     "why": "the evidence vault: protocol and merges"
    },
    {
     "id": "7r83qic5",
     "key": "vault",
     "why": "the source watch's pack-mode copy: read only, to work its queue"
    }
   ],
   "delta": {
    "grant": 16,
    "wanted": 8,
    "shortfall": [],
    "excess": [
     "read.credential.host",
     "read.record.history",
     "write.budget.tenant",
     "delete.file.host",
     "write.file.host",
     "read.file.host",
     "create.schedule.tenant",
     "create.schedule.host"
    ],
    "unbounded": [
     "read.credential.host",
     "read.record.history",
     "write.budget.tenant",
     "delete.file.host",
     "write.file.host",
     "read.file.host",
     "create.schedule.tenant"
    ]
   },
   "status": {
    "schema": "newsroom/agent-status/v1",
    "agent": "newsroom-lead",
    "as_of": "2026-10-22",
    "round": null,
    "state": "no round recorded under this policy yet",
    "done": [],
    "tasks": {
     "board": [],
     "note": "the board rows this member owns are in data/admin.json"
    },
    "next": [],
    "asks": [],
    "tokens": {
     "value": null,
     "how": "not recorded"
    },
    "policy": {
     "version": "2026-10-22",
     "out_of_scope_requests": 0,
     "pushbacks": 0,
     "overrides": 0,
     "writes_outside_scope": null,
     "injection_seen": 0
    },
    "debrief": null
   },
   "debriefs": []
  },
  {
   "agent": "ontologist",
   "address": "ontologist@php.newsroom",
   "name": "Ontologist",
   "kind": "agent",
   "group": "writing",
   "title": "Fractal semantic graphs: the ontology, the graphs and the component",
   "policy_status": "draft",
   "member_status": "active; the cartographer role archived at the editor's word (v0.11.5, 24 October 2026); its card and runs kept as this member's history",
   "writes": [
    "admin/content/agents/ontologist/ROLE.md",
    "admin/content/agents/ontologist/status.json",
    "admin/content/agents/ontologist/debriefs/**",
    "data/ontology.json",
    "data/entities.json",
    "data/attribution.json",
    "data/arcs.json",
    "data/review.json",
    "review/code/**",
    "assets/review-nav.js",
    "assets/components/sg-graph/**",
    "data/vault-register/cartographer.json",
    "admin/ontologist/**",
    "data/crosswalk.json",
    "data/schedule/cartographer.json",
    "data/runs/cartographer/**",
    "data/schedule/ontologist.json",
    "data/runs/ontologist/**"
   ],
   "pages": [
    "graph/**",
    "fractal/**",
    "review/**"
   ],
   "vaults": [],
   "delta": {
    "grant": 16,
    "wanted": 8,
    "shortfall": [],
    "excess": [
     "read.credential.host",
     "read.record.history",
     "write.budget.tenant",
     "delete.file.host",
     "write.file.host",
     "read.file.host",
     "create.schedule.tenant",
     "create.schedule.host"
    ],
    "unbounded": [
     "read.credential.host",
     "read.record.history",
     "write.budget.tenant",
     "delete.file.host",
     "write.file.host",
     "read.file.host",
     "create.schedule.tenant"
    ]
   },
   "status": {
    "schema": "newsroom/agent-status/v1",
    "agent": "ontologist",
    "as_of": "2026-10-24",
    "round": null,
    "state": "no round recorded under this policy yet",
    "done": [],
    "tasks": {
     "board": [],
     "note": "the board rows this member owns are in data/admin.json"
    },
    "next": [],
    "asks": [],
    "tokens": {
     "value": null,
     "how": "not recorded"
    },
    "policy": {
     "version": "2026-10-24",
     "out_of_scope_requests": 0,
     "pushbacks": 0,
     "overrides": 0,
     "writes_outside_scope": null,
     "injection_seen": 0
    },
    "debrief": null
   },
   "debriefs": []
  },
  {
   "agent": "pm",
   "address": "vicky.human",
   "name": "Vicky",
   "kind": "human",
   "group": "humans",
   "title": "Project manager",
   "policy_status": "draft",
   "member_status": "active",
   "writes": [
    "admin/content/agents/pm/ROLE.md"
   ],
   "pages": [],
   "vaults": [],
   "delta": null,
   "status": null,
   "debriefs": []
  },
  {
   "agent": "pulse",
   "address": "pulse@newsroom",
   "name": "pulse@newsroom",
   "kind": "agent",
   "group": "evidence",
   "title": "Pulse: what else is going on",
   "policy_status": "draft",
   "member_status": "blocked: needs a permission rule to push its vault (data/agents-status.json)",
   "writes": [
    "admin/content/agents/pulse/ROLE.md",
    "admin/content/agents/pulse/status.json",
    "admin/content/agents/pulse/debriefs/**",
    "admin/build/export_pulse.py",
    "data/pulse.json",
    "data/schedule/pulse.json",
    "data/runs/pulse/**"
   ],
   "pages": [
    "pulse/**"
   ],
   "vaults": [
    {
     "id": "4klm5qlt",
     "key": "vault",
     "why": "the Pulse vault"
    }
   ],
   "delta": {
    "grant": 16,
    "wanted": 8,
    "shortfall": [],
    "excess": [
     "read.credential.host",
     "read.record.history",
     "write.budget.tenant",
     "delete.file.host",
     "write.file.host",
     "read.file.host",
     "create.schedule.tenant",
     "create.schedule.host"
    ],
    "unbounded": [
     "read.credential.host",
     "read.record.history",
     "write.budget.tenant",
     "delete.file.host",
     "write.file.host",
     "read.file.host",
     "create.schedule.tenant"
    ]
   },
   "status": {
    "schema": "newsroom/agent-status/v1",
    "agent": "pulse",
    "as_of": "2026-10-24",
    "round": null,
    "state": "no round recorded under this policy yet",
    "done": [],
    "tasks": {
     "board": [],
     "note": "the board rows this member owns are in data/admin.json"
    },
    "next": [],
    "asks": [],
    "tokens": {
     "value": null,
     "how": "not recorded"
    },
    "policy": {
     "version": "2026-10-24",
     "out_of_scope_requests": 0,
     "pushbacks": 0,
     "overrides": 0,
     "writes_outside_scope": null,
     "injection_seen": 0
    },
    "debrief": null
   },
   "debriefs": []
  },
  {
   "agent": "researcher",
   "address": "researcher@php.newsroom",
   "name": "researcher@php.newsroom",
   "kind": "agent",
   "group": "evidence",
   "title": "The source watch",
   "policy_status": "draft",
   "member_status": "active",
   "writes": [
    "admin/content/agents/researcher/ROLE.md",
    "admin/content/agents/researcher/status.json",
    "admin/content/agents/researcher/debriefs/**",
    "admin/build/export_watch.py",
    "data/source-watch.json",
    "data/feed-sources.json",
    "assets/vaults/**",
    "data/compromise.json",
    "data/pack-mode.json",
    "data/vault-register/researcher.json",
    "data/schedule/researcher.json",
    "data/runs/researcher/**"
   ],
   "pages": [
    "vaults/source-watch/**",
    "compromise/**",
    "admin/pack-mode/**"
   ],
   "vaults": [
    {
     "id": "oq9gflln",
     "key": "vault",
     "why": "the source watch"
    },
    {
     "id": "7r83qic5",
     "key": "vault",
     "why": "the source watch in pack mode"
    }
   ],
   "delta": {
    "grant": 16,
    "wanted": 8,
    "shortfall": [],
    "excess": [
     "read.credential.host",
     "read.record.history",
     "write.budget.tenant",
     "delete.file.host",
     "write.file.host",
     "read.file.host",
     "create.schedule.tenant",
     "create.schedule.host"
    ],
    "unbounded": [
     "read.credential.host",
     "read.record.history",
     "write.budget.tenant",
     "delete.file.host",
     "write.file.host",
     "read.file.host",
     "create.schedule.tenant"
    ]
   },
   "status": {
    "schema": "newsroom/agent-status/v1",
    "agent": "researcher",
    "as_of": "2026-10-22",
    "round": null,
    "state": "no round recorded under this policy yet",
    "done": [],
    "tasks": {
     "board": [],
     "note": "the board rows this member owns are in data/admin.json"
    },
    "next": [],
    "asks": [],
    "tokens": {
     "value": null,
     "how": "not recorded"
    },
    "policy": {
     "version": "2026-10-22",
     "out_of_scope_requests": 0,
     "pushbacks": 0,
     "overrides": 0,
     "writes_outside_scope": null,
     "injection_seen": 0
    },
    "debrief": null
   },
   "debriefs": []
  },
  {
   "agent": "security",
   "address": "security@php.newsroom",
   "name": "security@php.newsroom",
   "kind": "agent",
   "group": "site",
   "title": "Security",
   "policy_status": "draft",
   "member_status": "active",
   "writes": [
    "admin/content/agents/security/ROLE.md",
    "admin/content/agents/security/status.json",
    "admin/content/agents/security/debriefs/**",
    "admin/security/**",
    "admin/build/security_check.py",
    "CLAUDE.md",
    ".claude/**",
    "data/keys.json",
    "assets/keys/**",
    "data/vault-register/security.json",
    "data/schedule/security.json",
    "data/runs/security/**"
   ],
   "pages": [
    "admin/keys/**",
    "admin/security/index.html"
   ],
   "vaults": [
    {
     "id": "*",
     "key": "read",
     "why": "read keys for the vaults it is given, cloned outside the repository"
    }
   ],
   "delta": {
    "grant": 16,
    "wanted": 8,
    "shortfall": [],
    "excess": [
     "read.credential.host",
     "read.record.history",
     "write.budget.tenant",
     "delete.file.host",
     "write.file.host",
     "read.file.host",
     "create.schedule.tenant",
     "create.schedule.host"
    ],
    "unbounded": [
     "read.credential.host",
     "read.record.history",
     "write.budget.tenant",
     "delete.file.host",
     "write.file.host",
     "read.file.host",
     "create.schedule.tenant"
    ]
   },
   "status": {
    "schema": "newsroom/agent-status/v1",
    "agent": "security",
    "as_of": "2026-10-22",
    "round": null,
    "state": "no round recorded under this policy yet",
    "done": [],
    "tasks": {
     "board": [],
     "note": "the board rows this member owns are in data/admin.json"
    },
    "next": [],
    "asks": [],
    "tokens": {
     "value": null,
     "how": "not recorded"
    },
    "policy": {
     "version": "2026-10-22",
     "out_of_scope_requests": 0,
     "pushbacks": 0,
     "overrides": 0,
     "writes_outside_scope": null,
     "injection_seen": 0
    },
    "debrief": null
   },
   "debriefs": []
  },
  {
   "agent": "sherpa",
   "address": "sherpa@php.newsroom",
   "name": "Sherpa",
   "kind": "agent",
   "group": "site",
   "title": "The reader's path",
   "policy_status": "draft",
   "member_status": "active",
   "writes": [
    "admin/content/agents/sherpa/ROLE.md",
    "admin/content/agents/sherpa/status.json",
    "admin/content/agents/sherpa/debriefs/**",
    "admin/sherpa/**",
    "assets/sherpa/**",
    "data/vault-register/sherpa.json",
    "data/schedule/sherpa.json",
    "data/runs/sherpa/**"
   ],
   "pages": [
    "sherpa/**",
    "feedback/**"
   ],
   "vaults": [],
   "delta": {
    "grant": 16,
    "wanted": 8,
    "shortfall": [],
    "excess": [
     "read.credential.host",
     "read.record.history",
     "write.budget.tenant",
     "delete.file.host",
     "write.file.host",
     "read.file.host",
     "create.schedule.tenant",
     "create.schedule.host"
    ],
    "unbounded": [
     "read.credential.host",
     "read.record.history",
     "write.budget.tenant",
     "delete.file.host",
     "write.file.host",
     "read.file.host",
     "create.schedule.tenant"
    ]
   },
   "status": {
    "schema": "newsroom/agent-status/v1",
    "agent": "sherpa",
    "as_of": "2026-10-24",
    "round": {
     "n": 1,
     "date": "2026-10-24",
     "branch": "sherpa/onboard-and-tasks, sherpa/inbox-lane",
     "commits": [
      "3a02e81d8",
      "c6a38c4ff",
      "6f5491b05 (v0.11.6)",
      "fb6bb9e73 (v0.14.2)"
     ]
    },
    "state": "round 1 closed; the schedule is active (every two hours, 07:45 to 21:45 London)",
    "done": [
     {
      "what": "The collaborators lane drained (five messages, the vault pushed); a power user's key enrolled as power-user; the exposed bootstrap invitation retired",
      "evidence": "the vault's history; commit 3a02e81d8"
     },
     {
      "what": "UF-005: the editor's two asks recorded and routed (the Fortune analysis to the fact-check desk; verification across model providers)",
      "evidence": "/feedback/uf-005/"
     },
     {
      "what": "Tasks captured from dev v0.10.11 to v0.11.3: the synthetic readers' second run in the friction log (F001 to F006 high; F031, F032 new); board rows 192 to 198",
      "evidence": "admin/sherpa/friction-log.json; data/admin.json"
     },
     {
      "what": "The schedule card merged with the conductor's draft and made active; the scheduled task created at the editor's go",
      "evidence": "data/schedule/sherpa.json; /team/schedule/sherpa/"
     },
     {
      "what": "The inbox vault d6zak0o3 with an append lane for the RiskMandate agent and the editor, send_to_lane.py, tested end to end; keys sealed to the root",
      "evidence": "admin/sherpa/inbox/; data/vault-register/sherpa.json"
     }
    ],
    "tasks": {
     "board": [
      "122",
      "123",
      "124",
      "125",
      "192",
      "193",
      "194",
      "195",
      "196",
      "197"
     ],
     "note": "the board rows this member owns are in data/admin.json"
    },
    "next": [
     {
      "what": "At the 11:45 pass: check CI-002's shipped steps and dev's join fixes on the live site, phone and desktop, and close the frictions that hold",
      "why": "frictions stay open until checked live"
     },
     {
      "what": "Draft the brief on verification across several model providers with the fact-check desk (UF-005.2)",
      "why": "the editor's ask, UF-005.2"
     },
     {
      "what": "Three views over time, step 1: the executive view and its slices as data",
      "why": "the brief of 23 October, step 1, needs no one else"
     }
    ],
    "asks": [
     {
      "what": "the conductor's lane key (5iwos28w), sealed to the Sherpa's key, if the Sherpa is to drain it",
      "from": "the editor"
     },
     {
      "what": "pass the sealed riskmandate token to the RiskMandate agent, re-sealed to its key; and that agent's own inbox for the other direction",
      "from": "the editor"
     },
     {
      "what": "whether the collaborators vault's signed messages may be published (the vault's README says not)",
      "from": "the editor"
     },
     {
      "what": "the consent checkbox, the removal of keys for feedback, and the design direction: decisions already on the brief to the conductor",
      "from": "the editor"
     }
    ],
    "tokens": {
     "value": null,
     "how": "the session does not show the Sherpa a token count"
    },
    "policy": {
     "version": "2026-10-24",
     "out_of_scope_requests": 1,
     "pushbacks": 2,
     "overrides": 1,
     "writes_outside_scope": 2,
     "injection_seen": 0,
     "detail": "One request, the editor's, was outside the Sherpa's scope: onboarding a key, which changes data/contributors.json (the conductor's). He asked explicitly in the session, so it counts as one override. The two files outside scope: data/contributors.json (that change) and data/team.json (the Sherpa's own roster line). Pushbacks: form messages signed 'Dinis' held as material until he confirmed them; the collaborators vault's signed messages kept off the site until he confirms."
    },
    "debrief": "admin/content/agents/sherpa/debriefs/2026-10-24__drain-schedule-and-inbox.md"
   },
   "debriefs": [
    {
     "file": "2026-10-24__drain-schedule-and-inbox.md",
     "date": "2026-10-24",
     "title": "The collaborators lane drained, a power user onboarded, the editor's asks recorded, the schedule active and an inbox for outside agents"
    }
   ]
  },
  {
   "agent": "story-site",
   "address": "claude-story-site",
   "name": "Story site agent",
   "kind": "agent",
   "group": "site",
   "title": "Design, the claims and the story pages",
   "policy_status": "draft",
   "member_status": "active; sessions: claude-story-site, designer@php.newsroom",
   "writes": [
    "admin/content/agents/story-site/ROLE.md",
    "admin/content/agents/story-site/status.json",
    "admin/content/agents/story-site/debriefs/**",
    "data/claims.json",
    "data/timeline.json",
    "data/numbers.json",
    "data/agencies.json",
    "data/affected.json",
    "data/exploitation.json",
    "data/impact.json",
    "data/defence.json",
    "data/code.json",
    "data/actors.json",
    "data/story.json",
    "data/billing.json",
    "data/roles.json",
    "admin/content/reviews/**",
    "data/glossary.json",
    "data/personas.json",
    "data/plain.json",
    "data/seo.json",
    "data/interview.json",
    "assets/site.css",
    "assets/themes/**",
    "assets/personas.js",
    "assets/og-card.png",
    "admin/build/design.py",
    "assets/design/**",
    "data/vault-register/story-site.json",
    "data/schedule/story-site.json",
    "data/runs/story-site/**"
   ],
   "pages": [
    "index.html",
    "summary/**",
    "flaws/**",
    "code/**",
    "timeline/**",
    "discovery/**",
    "leak/**",
    "exploitation/**",
    "impact/**",
    "defence/**",
    "playbook/**",
    "claims/index.html",
    "numbers/**",
    "agencies/**",
    "affected/index.html",
    "actors/**",
    "facts/**",
    "method/**",
    "start/**",
    "explained/**",
    "glossary/**",
    "interview/**",
    "admin/design/**"
   ],
   "vaults": [
    {
     "id": "3ytzxm3g",
     "key": "read",
     "why": "the evidence vault"
    },
    {
     "id": "dcsmxese",
     "key": "vault",
     "why": "the coverage vault"
    }
   ],
   "delta": {
    "grant": 16,
    "wanted": 8,
    "shortfall": [],
    "excess": [
     "read.credential.host",
     "read.record.history",
     "write.budget.tenant",
     "delete.file.host",
     "write.file.host",
     "read.file.host",
     "create.schedule.tenant",
     "create.schedule.host"
    ],
    "unbounded": [
     "read.credential.host",
     "read.record.history",
     "write.budget.tenant",
     "delete.file.host",
     "write.file.host",
     "read.file.host",
     "create.schedule.tenant"
    ]
   },
   "status": {
    "schema": "newsroom/agent-status/v1",
    "agent": "story-site",
    "as_of": "2026-10-22",
    "round": null,
    "state": "no round recorded under this policy yet",
    "done": [],
    "tasks": {
     "board": [],
     "note": "the board rows this member owns are in data/admin.json"
    },
    "next": [],
    "asks": [],
    "tokens": {
     "value": null,
     "how": "not recorded"
    },
    "policy": {
     "version": "2026-10-22",
     "out_of_scope_requests": 0,
     "pushbacks": 0,
     "overrides": 0,
     "writes_outside_scope": null,
     "injection_seen": 0
    },
    "debrief": null
   },
   "debriefs": []
  },
  {
   "agent": "storyboard",
   "address": "storyboards@php.newsroom",
   "name": "storyboard@php.newsroom",
   "kind": "agent",
   "group": "writing",
   "title": "The story drawn",
   "policy_status": "draft",
   "member_status": "on branch claude/gallant-dijkstra-uucoop, not yet in dev",
   "writes": [
    "admin/content/agents/storyboard/ROLE.md",
    "admin/content/agents/storyboard/status.json",
    "admin/content/agents/storyboard/debriefs/**",
    "admin/content/storyboards/**",
    "storyboards/**",
    "assets/vendor/storyboards/**",
    "assets/briefing-deck.js",
    "admin/build/storyboards_check.js",
    "admin/build/deck_pptx.js",
    "data/vault-register/storyboard.json",
    "data/schedule/storyboard.json",
    "data/runs/storyboard/**"
   ],
   "pages": [
    "storyboards/**"
   ],
   "vaults": [],
   "delta": {
    "grant": 16,
    "wanted": 8,
    "shortfall": [],
    "excess": [
     "read.credential.host",
     "read.record.history",
     "write.budget.tenant",
     "delete.file.host",
     "write.file.host",
     "read.file.host",
     "create.schedule.tenant",
     "create.schedule.host"
    ],
    "unbounded": [
     "read.credential.host",
     "read.record.history",
     "write.budget.tenant",
     "delete.file.host",
     "write.file.host",
     "read.file.host",
     "create.schedule.tenant"
    ]
   },
   "status": {
    "schema": "newsroom/agent-status/v1",
    "agent": "storyboard",
    "as_of": "2026-10-22",
    "round": null,
    "state": "no round recorded under this policy yet",
    "done": [],
    "tasks": {
     "board": [],
     "note": "the board rows this member owns are in data/admin.json"
    },
    "next": [],
    "asks": [],
    "tokens": {
     "value": null,
     "how": "not recorded"
    },
    "policy": {
     "version": "2026-10-22",
     "out_of_scope_requests": 0,
     "pushbacks": 0,
     "overrides": 0,
     "writes_outside_scope": null,
     "injection_seen": 0
    },
    "debrief": null
   },
   "debriefs": []
  },
  {
   "agent": "synthetic",
   "address": "synthetic@php.newsroom",
   "name": "synthetic@php.newsroom",
   "kind": "agent",
   "group": "testing",
   "title": "Synthetic readers",
   "policy_status": "draft",
   "member_status": "active",
   "writes": [
    "admin/content/agents/synthetic/ROLE.md",
    "admin/content/agents/synthetic/status.json",
    "admin/content/agents/synthetic/debriefs/**",
    "admin/synthetic/**",
    "data/synthetic.json",
    ".github/workflows/synthetic.yml",
    "data/vault-register/synthetic.json",
    "data/synthetic-runs/**",
    "data/schedule/synthetic.json",
    "data/runs/synthetic/**"
   ],
   "pages": [
    "admin/synthetic/**"
   ],
   "vaults": [
    {
     "id": "six reader vaults",
     "key": "vault",
     "why": "in CI only"
    }
   ],
   "delta": {
    "grant": 16,
    "wanted": 8,
    "shortfall": [],
    "excess": [
     "read.credential.host",
     "read.record.history",
     "write.budget.tenant",
     "delete.file.host",
     "write.file.host",
     "read.file.host",
     "create.schedule.tenant",
     "create.schedule.host"
    ],
    "unbounded": [
     "read.credential.host",
     "read.record.history",
     "write.budget.tenant",
     "delete.file.host",
     "write.file.host",
     "read.file.host",
     "create.schedule.tenant"
    ]
   },
   "status": {
    "schema": "newsroom/agent-status/v1",
    "agent": "synthetic",
    "as_of": "2026-10-22",
    "round": null,
    "state": "no round recorded under this policy yet",
    "done": [],
    "tasks": {
     "board": [],
     "note": "the board rows this member owns are in data/admin.json"
    },
    "next": [],
    "asks": [],
    "tokens": {
     "value": null,
     "how": "not recorded"
    },
    "policy": {
     "version": "2026-10-22",
     "out_of_scope_requests": 0,
     "pushbacks": 0,
     "overrides": 0,
     "writes_outside_scope": null,
     "injection_seen": 0
    },
    "debrief": null
   },
   "debriefs": []
  }
 ],
 "overlaps": [],
 "unowned": [
  "data/desk.json"
 ],
 "dangling_appends": []
}
