{
 "about": "Everything on storm-charles.promptugal.news, catalogued: every brief, plan, decision log, dataset, tool, agent file and research file, with what it is (its own first words), who wrote it, when it last changed, what it was made from and what links to it. Built from the repository by tools/library-index.mjs; nothing is guessed: what a file does not say is empty here and listed under gaps. The data files' own catalogue (with the served sha256) is api/v1/index.json.",
 "by": "incident.librarian@web-summit.dinis",
 "site": "https://storm-charles.promptugal.news/",
 "page": "https://storm-charles.promptugal.news/library/",
 "made_by": "tools/library-index.mjs",
 "fields": {
  "kind": {
   "rules": "The rules every agent reads first.",
   "brief": "Dinis's direction, close to his words, and its corrections.",
   "plan": "Proposals and priorities: what is to be built and in what order.",
   "record": "What exists.",
   "decision log": "The timeline of signals and the decisions, newest first.",
   "incident record": "The incident's own page and front-page record.",
   "dataset": "JSON data: every value with its source and the time read.",
   "dataset doc": "What a dataset holds and who keeps it.",
   "analysis": "Our analysis, labelled as analysis: a hypothesis with its reasons, never a fact.",
   "research": "Research files: what was found, where, and when it was read.",
   "reading": "The reading list: what others wrote that bears on this site, and what it means here.",
   "library": "The catalogue itself, the glossary, the standard.",
   "agent file": "Each agent's jobs, status and asks.",
   "comms draft": "Drafts for people; a person sends.",
   "material": "Material offered to another newsroom's desk.",
   "outreach": "How to contribute, and drafts for experts; a person sends.",
   "design": "Design rounds and notes.",
   "tool": "Scripts the agents run.",
   "build": "The build, the gate and CI.",
   "admin": "The admin area.",
   "app": "What runs in the browser.",
   "repository": "The repository's own files."
  },
  "by": "who the file itself says wrote or keeps it (by_from says where: header, front matter, its own fields); empty when it does not say",
  "dated": "the time the file gives for itself (dated_from says which field or the header); for a dataset, usually the time its sources were last read",
  "commits": "from the commits, as recorded in library/provenance.json (first_by, last_by, last_at, the agents); null when the file changed after the commits were last read",
  "changed": "when it last changed: the last commit when known, else the file's own date",
  "made_from": "the sources its header or fields name: files here (paths) and URLs",
  "links_to": "files here that it links to anywhere in its text",
  "linked_from": "files here that link to it or name it as a source",
  "sha256": "of the file in the repository at this build (generated files carry none)"
 },
 "as_of": "2026-11-11T00:17:37Z",
 "commits_read_at_head": "4b5f0a874d",
 "total": 208,
 "counts": {
  "build": 3,
  "repository": 4,
  "brief": 2,
  "rules": 1,
  "plan": 3,
  "record": 1,
  "app": 35,
  "admin": 1,
  "tool": 25,
  "agent file": 25,
  "design": 19,
  "outreach": 4,
  "dataset": 29,
  "dataset doc": 5,
  "incident record": 2,
  "comms draft": 6,
  "analysis": 1,
  "decision log": 2,
  "material": 1,
  "library": 10,
  "reading": 3,
  "research": 26
 },
 "gaps": {
  "no_author_in_file": [
   {
    "path": "BRIEF-CORRECTIONS.md",
    "committed_by": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   {
    "path": "CLAUDE.md",
    "committed_by": []
   },
   {
    "path": "README.md",
    "committed_by": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   {
    "path": "REALITY.md",
    "committed_by": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   {
    "path": "account/index.html",
    "committed_by": [
     "incident.identity@web-summit.dinis"
    ]
   },
   {
    "path": "admin/series.txt",
    "committed_by": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   {
    "path": "admin/tools/release.sh",
    "committed_by": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   {
    "path": "app/agents/index.html",
    "committed_by": []
   },
   {
    "path": "app/agents/vendor/universe@57636ac/brain.css",
    "committed_by": [
     "incident.observability@web-summit.dinis"
    ]
   },
   {
    "path": "app/graph/graph.js",
    "committed_by": []
   },
   {
    "path": "app/graph/query.js",
    "committed_by": []
   },
   {
    "path": "app/login/account.js",
    "committed_by": [
     "incident.identity@web-summit.dinis"
    ]
   },
   {
    "path": "app/login/dom.js",
    "committed_by": [
     "incident.identity@web-summit.dinis"
    ]
   },
   {
    "path": "app/login/feedback.js",
    "committed_by": [
     "incident.identity@web-summit.dinis"
    ]
   },
   {
    "path": "app/login/lane.js",
    "committed_by": [
     "incident.identity@web-summit.dinis"
    ]
   },
   {
    "path": "app/login/login.css",
    "committed_by": [
     "incident.identity@web-summit.dinis"
    ]
   },
   {
    "path": "app/login/package.json",
    "committed_by": [
     "incident.identity@web-summit.dinis"
    ]
   },
   {
    "path": "app/login/pki/door.js",
    "committed_by": [
     "incident.identity@web-summit.dinis"
    ]
   },
   {
    "path": "app/login/pki/keys.js",
    "committed_by": [
     "incident.identity@web-summit.dinis"
    ]
   },
   {
    "path": "app/login/pki/local.js",
    "committed_by": [
     "incident.identity@web-summit.dinis"
    ]
   },
   {
    "path": "app/login/pki/message.js",
    "committed_by": [
     "incident.identity@web-summit.dinis"
    ]
   },
   {
    "path": "app/site.css",
    "committed_by": []
   },
   {
    "path": "contribute.md",
    "committed_by": [
     "incident.media@web-summit.dinis"
    ]
   },
   {
    "path": "data/graph/ref/ipma-areas.json",
    "committed_by": [
     "incident.graph@web-summit.dinis"
    ]
   },
   {
    "path": "data/graph/storm-elsewhere.json",
    "committed_by": []
   },
   {
    "path": "data/graph/storm.json",
    "committed_by": []
   },
   {
    "path": "data/graph/tables/actors.json",
    "committed_by": []
   },
   {
    "path": "data/graph/tables/decisions.json",
    "committed_by": []
   },
   {
    "path": "data/graph/tables/signals.json",
    "committed_by": []
   },
   {
    "path": "data/graph/tables/sources.json",
    "committed_by": []
   },
   {
    "path": "data/graph/tables/timeline.json",
    "committed_by": []
   },
   {
    "path": "data/graph/tables/warnings.json",
    "committed_by": []
   },
   {
    "path": "data/keys.json",
    "committed_by": [
     "incident.conductor@web-summit.dinis",
     "incident.designer@web-summit.dinis",
     "incident.graph@web-summit.dinis",
     "incident.identity@web-summit.dinis",
     "incident.librarian@web-summit.dinis",
     "incident.media@web-summit.dinis",
     "incident.observability@web-summit.dinis",
     "incident.weatherwatch@web-summit.dinis"
    ]
   },
   {
    "path": "incidents/2026-11-10-storm-charles/comms/dinis.md",
    "committed_by": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   {
    "path": "incidents/2026-11-10-storm-charles/comms/facts.md",
    "committed_by": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   {
    "path": "incidents/2026-11-10-storm-charles/comms/meetings.md",
    "committed_by": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   {
    "path": "incidents/2026-11-10-storm-charles/comms/public.md",
    "committed_by": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   {
    "path": "incidents/2026-11-10-storm-charles/comms/team.md",
    "committed_by": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   {
    "path": "incidents/2026-11-10-storm-charles/data/README.md",
    "committed_by": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   {
    "path": "incidents/2026-11-10-storm-charles/data/decisions/sources.json",
    "committed_by": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   {
    "path": "incidents/2026-11-10-storm-charles/data/signals.json",
    "committed_by": []
   },
   {
    "path": "incidents/2026-11-10-storm-charles/data/watch/websummit.json",
    "committed_by": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   {
    "path": "incidents/2026-11-10-storm-charles/data/weather/airport.json",
    "committed_by": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   {
    "path": "incidents/2026-11-10-storm-charles/data/weather/cap.json",
    "committed_by": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   {
    "path": "incidents/2026-11-10-storm-charles/data/weather/changes.json",
    "committed_by": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   {
    "path": "incidents/2026-11-10-storm-charles/data/weather/communiques.json",
    "committed_by": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   {
    "path": "incidents/2026-11-10-storm-charles/data/weather/forecast.json",
    "committed_by": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   {
    "path": "incidents/2026-11-10-storm-charles/data/weather/gusts-vs-forecast.json",
    "committed_by": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   {
    "path": "incidents/2026-11-10-storm-charles/data/weather/stations.json",
    "committed_by": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   {
    "path": "incidents/2026-11-10-storm-charles/data/weather/tools/refresh.py",
    "committed_by": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   {
    "path": "incidents/2026-11-10-storm-charles/data/weather/warnings.json",
    "committed_by": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   {
    "path": "incidents/2026-11-10-storm-charles/timeline.md",
    "committed_by": []
   },
   {
    "path": "research/media/feeds.json",
    "committed_by": [
     "incident.media@web-summit.dinis"
    ]
   },
   {
    "path": "research/media/ranking.md",
    "committed_by": []
   },
   {
    "path": "research/media/seeds.txt",
    "committed_by": [
     "incident.media@web-summit.dinis"
    ]
   },
   {
    "path": "research/weather-sites/meteoalarm-check.json",
    "committed_by": [
     "incident.weatherwatch@web-summit.dinis"
    ]
   },
   {
    "path": "research/weather-sites/outreach/eumetsat-registration.md",
    "committed_by": [
     "incident.weatherwatch@web-summit.dinis"
    ]
   },
   {
    "path": "research/weather-sites/outreach/ipma-radar.md",
    "committed_by": [
     "incident.weatherwatch@web-summit.dinis"
    ]
   },
   {
    "path": "research/weather-sites/tools/gap.py",
    "committed_by": [
     "incident.weatherwatch@web-summit.dinis"
    ]
   },
   {
    "path": "research/weather-sites/tools/gen.py",
    "committed_by": [
     "incident.weatherwatch@web-summit.dinis"
    ]
   },
   {
    "path": "research/weather-sites/tools/probe.sh",
    "committed_by": [
     "incident.weatherwatch@web-summit.dinis"
    ]
   },
   {
    "path": "tools/graph-places.mjs",
    "committed_by": [
     "incident.graph@web-summit.dinis"
    ]
   },
   {
    "path": "tools/lane-configure.mjs",
    "committed_by": [
     "incident.identity@web-summit.dinis"
    ]
   },
   {
    "path": "tools/lane-drain.mjs",
    "committed_by": [
     "incident.identity@web-summit.dinis"
    ]
   },
   {
    "path": "tools/lane-e2e.mjs",
    "committed_by": [
     "incident.identity@web-summit.dinis"
    ]
   },
   {
    "path": "tools/lane-open.mjs",
    "committed_by": [
     "incident.identity@web-summit.dinis"
    ]
   },
   {
    "path": "tools/lane-seal.mjs",
    "committed_by": [
     "incident.identity@web-summit.dinis"
    ]
   },
   {
    "path": "tools/lane-test.mjs",
    "committed_by": [
     "incident.identity@web-summit.dinis"
    ]
   },
   {
    "path": "tools/sync-from-websummit.sh",
    "committed_by": [
     "incident.conductor@web-summit.dinis"
    ]
   }
  ],
  "no_date_in_file": [
   "BRIEF-CORRECTIONS.md",
   "REALITY.md",
   "agents/JOBS.md",
   "agents/README.md",
   "agents/conductor/policy.md",
   "agents/designer/policy.md",
   "agents/dev/policy.md",
   "agents/graph/policy.md",
   "agents/identity/policy.md",
   "agents/librarian/policy.md",
   "agents/media/policy.md",
   "agents/meteorologist/policy.md",
   "agents/observability/policy.md",
   "agents/researcher/policy.md",
   "agents/weatherwatch/policy.md",
   "data/graph/ontology.json",
   "data/graph/queries.json",
   "data/graph/ref/ipma-areas.json",
   "data/graph/storm-elsewhere.json",
   "data/graph/storm.json",
   "data/graph/tables/actors.json",
   "data/graph/tables/decisions.json",
   "data/graph/tables/signals.json",
   "data/graph/tables/sources.json",
   "data/graph/tables/timeline.json",
   "data/graph/tables/warnings.json",
   "data/keys.json",
   "incidents/2026-11-10-storm-charles/comms/README.md",
   "incidents/2026-11-10-storm-charles/comms/dinis.md",
   "incidents/2026-11-10-storm-charles/comms/facts.md",
   "incidents/2026-11-10-storm-charles/comms/meetings.md",
   "incidents/2026-11-10-storm-charles/comms/public.md",
   "incidents/2026-11-10-storm-charles/comms/team.md",
   "incidents/2026-11-10-storm-charles/data/weather/changes.json",
   "incidents/2026-11-10-storm-charles/data/weather/forecast.json",
   "incidents/2026-11-10-storm-charles/decisions.md",
   "incidents/2026-11-10-storm-charles/timeline.md",
   "library/reading/README.md",
   "research/media/feeds.json",
   "research/media/ranking.md",
   "research/media/seeds.txt",
   "research/media/tools/harvest.mjs",
   "research/media/tools/live.mjs",
   "research/media/tools/rank.mjs",
   "research/media/tools/social.mjs",
   "research/media/tools/wikipedia.mjs",
   "research/weather-sites/README.md",
   "research/weather-sites/meteoalarm-check.json",
   "research/weather-sites/outreach/eumetsat-registration.md",
   "research/weather-sites/outreach/ipma-radar.md",
   "research/weather-sites/tools/gap.py",
   "research/weather-sites/tools/gen.py",
   "research/weather-sites/tools/probe.sh"
  ],
  "no_commit_record": [
   {
    "path": "CLAUDE.md",
    "why": "changed since the commits were last read"
   },
   {
    "path": "admin/build/build.mjs",
    "why": "changed since the commits were last read"
   },
   {
    "path": "admin/build/validate.mjs",
    "why": "changed since the commits were last read"
   },
   {
    "path": "agents/designer/status.json",
    "why": "changed since the commits were last read"
   },
   {
    "path": "agents/graph/status.json",
    "why": "changed since the commits were last read"
   },
   {
    "path": "agents/media/status.json",
    "why": "changed since the commits were last read"
   },
   {
    "path": "agents/observability/status.json",
    "why": "changed since the commits were last read"
   },
   {
    "path": "agents/policy.json",
    "why": "changed since the commits were last read"
   },
   {
    "path": "app/agents/about.md",
    "why": "changed since the commits were last read"
   },
   {
    "path": "app/agents/agents.css",
    "why": "changed since the commits were last read"
   },
   {
    "path": "app/agents/agents.js",
    "why": "changed since the commits were last read"
   },
   {
    "path": "app/agents/index.html",
    "why": "changed since the commits were last read"
   },
   {
    "path": "app/agents/universe-adapter.js",
    "why": "changed since the commits were last read"
   },
   {
    "path": "app/design/timeline.js",
    "why": "new since the commits were last read"
   },
   {
    "path": "app/graph/README.md",
    "why": "new since the commits were last read"
   },
   {
    "path": "app/graph/engine.js",
    "why": "changed since the commits were last read"
   },
   {
    "path": "app/graph/graph.css",
    "why": "changed since the commits were last read"
   },
   {
    "path": "app/graph/graph.js",
    "why": "changed since the commits were last read"
   },
   {
    "path": "app/graph/query.js",
    "why": "changed since the commits were last read"
   },
   {
    "path": "app/site.css",
    "why": "changed since the commits were last read"
   },
   {
    "path": "app/storm.js",
    "why": "changed since the commits were last read"
   },
   {
    "path": "data/agents/commits.json",
    "why": "changed since the commits were last read"
   },
   {
    "path": "data/agents/index.json",
    "why": "changed since the commits were last read"
   },
   {
    "path": "data/graph/storm-elsewhere.json",
    "why": "changed since the commits were last read"
   },
   {
    "path": "data/graph/storm.json",
    "why": "changed since the commits were last read"
   },
   {
    "path": "data/graph/tables/actors.json",
    "why": "changed since the commits were last read"
   },
   {
    "path": "data/graph/tables/decisions.json",
    "why": "changed since the commits were last read"
   },
   {
    "path": "data/graph/tables/signals.json",
    "why": "changed since the commits were last read"
   },
   {
    "path": "data/graph/tables/sources.json",
    "why": "changed since the commits were last read"
   },
   {
    "path": "data/graph/tables/timeline.json",
    "why": "changed since the commits were last read"
   },
   {
    "path": "data/graph/tables/warnings.json",
    "why": "changed since the commits were last read"
   },
   {
    "path": "data/query/README.md",
    "why": "new since the commits were last read"
   },
   {
    "path": "design/README.md",
    "why": "changed since the commits were last read"
   },
   {
    "path": "design/round-11.md",
    "why": "new since the commits were last read"
   },
   {
    "path": "design/round-12.md",
    "why": "new since the commits were last read"
   },
   {
    "path": "design/round-13.md",
    "why": "new since the commits were last read"
   },
   {
    "path": "design/round-14.md",
    "why": "new since the commits were last read"
   },
   {
    "path": "design/round-15.md",
    "why": "new since the commits were last read"
   },
   {
    "path": "design/round-16.md",
    "why": "new since the commits were last read"
   },
   {
    "path": "design/round-17.md",
    "why": "new since the commits were last read"
   },
   {
    "path": "incidents/2026-11-10-storm-charles/data/signals.json",
    "why": "changed since the commits were last read"
   },
   {
    "path": "incidents/2026-11-10-storm-charles/timeline.md",
    "why": "changed since the commits were last read"
   },
   {
    "path": "outreach/README.md",
    "why": "changed since the commits were last read"
   },
   {
    "path": "research/media/README.md",
    "why": "changed since the commits were last read"
   },
   {
    "path": "research/media/coverage.json",
    "why": "changed since the commits were last read"
   },
   {
    "path": "research/media/facts.json",
    "why": "new since the commits were last read"
   },
   {
    "path": "research/media/first-on-each-fact.json",
    "why": "new since the commits were last read"
   },
   {
    "path": "research/media/live-entries.json",
    "why": "new since the commits were last read"
   },
   {
    "path": "research/media/outlets.json",
    "why": "changed since the commits were last read"
   },
   {
    "path": "research/media/ranking.md",
    "why": "changed since the commits were last read"
   },
   {
    "path": "research/media/tools/live.mjs",
    "why": "new since the commits were last read"
   },
   {
    "path": "research/media/tools/rank.mjs",
    "why": "changed since the commits were last read"
   },
   {
    "path": "tools/timeline.mjs",
    "why": "changed since the commits were last read"
   }
  ],
  "datasets_naming_no_source": [
   "data/keys.json",
   "incidents/2026-11-10-storm-charles/data/decisions/graph.json",
   "incidents/2026-11-10-storm-charles/data/decisions/sources.json",
   "incidents/2026-11-10-storm-charles/data/weather/airport.json",
   "incidents/2026-11-10-storm-charles/data/weather/forecast.json"
  ],
  "documents_nothing_links_to": [
   "app/agents/about.md",
   "app/graph/README.md",
   "data/query/README.md",
   "library/drafts/now-json.md",
   "library/releases.md",
   "research/weather-sites/README.md"
  ],
  "older_than_their_sources": [
   {
    "path": "incidents/2026-11-10-storm-charles/comms/README.md",
    "why": "last changed 11-10 21:14; its source incidents/2026-11-10-storm-charles/comms/facts.md changed 11-10 23:53"
   }
  ],
  "not_served_on_the_site": [
   ".github/workflows/deploy.yml",
   ".gitignore",
   "admin/build/build.mjs",
   "admin/build/validate.mjs",
   "admin/series.txt",
   "admin/tools/release.sh"
  ]
 },
 "entries": [
  {
   "path": ".github/workflows/deploy.yml",
   "kind": "build",
   "title": "deploy.yml",
   "what": "One job: checkout (shallow), build, gate, deploy, tag, measure. Target: push to served in about 40 s (PIPELINE.md section 3). - fetch-depth 1 and nothing reads git history (a blobless full clone made the team site's gate 40x slower); - the newest push wins …",
   "by": "",
   "by_from": "",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 3203,
   "sha256": "d902c33ad26d7315ea2f669fbe92c6126fdffba552e4e921d55275922056d50a",
   "served": false,
   "repo": "https://github.com/PrompTugal/PrompTugal__News__Storm-Charles/blob/dev/.github/workflows/deploy.yml",
   "commits": {
    "n": 3,
    "first_by": "incident.conductor@web-summit.dinis",
    "first_at": "2026-11-10T21:14:33Z",
    "last_by": "incident.conductor@web-summit.dinis",
    "last_at": "2026-11-10T23:56:18Z",
    "last_commit": "76337b0a71",
    "agents": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:56:18Z",
   "linked_from": [
    "REALITY.md",
    "agents/conductor/policy.md",
    "agents/designer/policy.md",
    "agents/dev/policy.md",
    "agents/graph/policy.md",
    "agents/identity/policy.md",
    "agents/librarian/policy.md",
    "agents/media/policy.md",
    "agents/meteorologist/policy.md",
    "agents/observability/policy.md",
    "agents/researcher/policy.md",
    "agents/weatherwatch/policy.md"
   ]
  },
  {
   "path": ".gitignore",
   "kind": "repository",
   "title": ".gitignore",
   "what": "Byte-compiled / optimized / DLL files",
   "by": "",
   "by_from": "",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 4875,
   "sha256": "66317bb74596d0f59d3fcf014f754b28452221172704021e1285a0978b7cab01",
   "served": false,
   "repo": "https://github.com/PrompTugal/PrompTugal__News__Storm-Charles/blob/dev/.gitignore",
   "commits": {
    "n": 3,
    "first_by": "",
    "first_at": "2026-11-10T21:03:38Z",
    "last_by": "incident.conductor@web-summit.dinis",
    "last_at": "2026-11-10T21:15:16Z",
    "last_commit": "610dd5f8eb",
    "agents": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T21:15:16Z",
   "linked_from": []
  },
  {
   "path": "BRIEF-CORRECTIONS.md",
   "kind": "brief",
   "title": "Brief corrections and departures from the estate's standard",
   "what": "",
   "by": "",
   "by_from": "",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 877,
   "sha256": "39822af97969fd8d4061eebdcada0630aa3f375ed21fd34a84db5c8e8bd8cbf4",
   "served": true,
   "file": "https://storm-charles.promptugal.news/BRIEF-CORRECTIONS.md",
   "page": "https://storm-charles.promptugal.news/BRIEF-CORRECTIONS.html",
   "commits": {
    "n": 1,
    "first_by": "incident.conductor@web-summit.dinis",
    "first_at": "2026-11-10T21:14:33Z",
    "last_by": "incident.conductor@web-summit.dinis",
    "last_at": "2026-11-10T21:14:33Z",
    "last_commit": "77cdd51fc1",
    "agents": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T21:14:33Z",
   "linked_from": [
    "agents/conductor/policy.md",
    "library/glossary.md",
    "library/reading/standard.md",
    "library/releases.md"
   ]
  },
  {
   "path": "BRIEF.md",
   "kind": "brief",
   "title": "Brief",
   "what": "Dinis Cruz, 10 November 2026, in his session with incident.conductor@web-summit.dinis (close to his words). The incident team's own brief, from his voice memo of about 19:00 UTC, is in SGit-AI__Website__Web-Summit team/incidents/BRIEF.md.",
   "by": "Dinis Cruz (as recorded by incident.conductor@web-summit.dinis)",
   "by_from": "header",
   "dated": "2026-11-10",
   "dated_from": "header",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 3542,
   "sha256": "080b576fb2eb058e466bdec71683fb2ae10880dff2efff9f452c551fa4ba1590",
   "served": true,
   "file": "https://storm-charles.promptugal.news/BRIEF.md",
   "page": "https://storm-charles.promptugal.news/BRIEF.html",
   "commits": {
    "n": 2,
    "first_by": "incident.conductor@web-summit.dinis",
    "first_at": "2026-11-10T21:14:33Z",
    "last_by": "incident.conductor@web-summit.dinis",
    "last_at": "2026-11-10T23:35:36Z",
    "last_commit": "cdaa2d7bf8",
    "agents": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:35:36Z",
   "linked_from": [
    "CLAUDE.md",
    "SECURITY.md",
    "agents/JOBS.md",
    "agents/conductor/policy.md",
    "library/glossary.md",
    "library/reading/reading.json",
    "library/reading/standard.md"
   ]
  },
  {
   "path": "CLAUDE.md",
   "kind": "rules",
   "title": "storm-charles.promptugal.news: the rules of this repository",
   "what": "A newsroom for people and a data source for agents on Storm Charles (Lisbon, 10 to 12 November 2026), and the template for the next incident. Built and run by Dinis Cruz's incident team: incident.conductor@web-summit.dinis (lead) with incident.meteorologist@, …",
   "by": "",
   "by_from": "",
   "dated": "",
   "dated_from": "",
   "made_from": [
    "BRIEF.md",
    "PIPELINE.md",
    "ROADMAP.md"
   ],
   "links_to": [
    "BRIEF.md",
    "PIPELINE.md",
    "ROADMAP.md",
    "data/keys.json",
    "design/README.md",
    "tools/llm.mjs"
   ],
   "external_links": 1,
   "bytes": 4557,
   "sha256": "24f1e39d8df1c7643eaacbb6de2b7ed35c1800877cedf32bf33c8210ef8b9de8",
   "served": true,
   "file": "https://storm-charles.promptugal.news/CLAUDE.md",
   "page": "https://storm-charles.promptugal.news/CLAUDE.html",
   "commits": null,
   "changed": "",
   "linked_from": [
    "README.md",
    "agents/JOBS.md",
    "agents/conductor/policy.md",
    "agents/designer/policy.md",
    "agents/dev/policy.md",
    "agents/graph/policy.md",
    "agents/identity/policy.md",
    "agents/librarian/policy.md",
    "agents/media/policy.md",
    "agents/meteorologist/policy.md",
    "agents/observability/policy.md",
    "agents/researcher/policy.md",
    "agents/weatherwatch/policy.md",
    "library/abp.json",
    "library/abp.md",
    "library/glossary.md"
   ]
  },
  {
   "path": "CNAME",
   "kind": "repository",
   "title": "CNAME",
   "what": "",
   "by": "",
   "by_from": "",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 30,
   "sha256": "d6772b26758dcf0895f04536ac276632aea6530f3634bc4906ebababdd3dabd7",
   "served": true,
   "file": "https://storm-charles.promptugal.news/CNAME",
   "commits": {
    "n": 1,
    "first_by": "incident.conductor@web-summit.dinis",
    "first_at": "2026-11-10T21:14:33Z",
    "last_by": "incident.conductor@web-summit.dinis",
    "last_at": "2026-11-10T21:14:33Z",
    "last_commit": "77cdd51fc1",
    "agents": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T21:14:33Z",
   "linked_from": []
  },
  {
   "path": "LICENSE",
   "kind": "repository",
   "title": "LICENSE",
   "what": "",
   "by": "",
   "by_from": "",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 11357,
   "sha256": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4",
   "served": true,
   "file": "https://storm-charles.promptugal.news/LICENSE",
   "commits": {
    "n": 1,
    "first_by": "",
    "first_at": "2026-11-10T21:03:38Z",
    "last_by": "",
    "last_at": "2026-11-10T21:03:38Z",
    "last_commit": "3a61421c9d",
    "agents": []
   },
   "changed": "2026-11-10T21:03:38Z",
   "linked_from": []
  },
  {
   "path": "PIPELINE.md",
   "kind": "plan",
   "title": "The incident site: repository, pipeline, data and dashboard (a proposal for Dinis)",
   "what": "The direction and priorities it serves: ROADMAP.md (Dinis, ~19:15: a proxy of the flows, a newsroom and a data source for agents).",
   "by": "incident.conductor@web-summit.dinis",
   "by_from": "header",
   "dated": "2026-11-10T19:10Z",
   "dated_from": "header",
   "made_from": [
    "ROADMAP.md"
   ],
   "links_to": [
    "ROADMAP.md",
    "agents/dev/status.json",
    "data/keys.json"
   ],
   "external_links": 0,
   "bytes": 13845,
   "sha256": "0fea004e55619f49d60b4d46be4779eb5258f7cf3aa535a5b0408f011daa19a1",
   "served": true,
   "file": "https://storm-charles.promptugal.news/PIPELINE.md",
   "page": "https://storm-charles.promptugal.news/PIPELINE.html",
   "commits": {
    "n": 1,
    "first_by": "incident.conductor@web-summit.dinis",
    "first_at": "2026-11-10T21:14:33Z",
    "last_by": "incident.conductor@web-summit.dinis",
    "last_at": "2026-11-10T21:14:33Z",
    "last_commit": "77cdd51fc1",
    "agents": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T21:14:33Z",
   "linked_from": [
    "CLAUDE.md",
    "README.md",
    "ROADMAP.md",
    "agents/conductor/policy.md",
    "library/glossary.md"
   ]
  },
  {
   "path": "README.md",
   "kind": "repository",
   "title": "PrompTugal__News__Storm-Charles",
   "what": "https://storm-charles.promptugal.news: Storm Charles, Lisbon, November 2026. What is decided, what is warned and what is known, each with its source and the time read; and the data behind it, for people and agents (/api/v1/index.json, /llms.txt).",
   "by": "",
   "by_from": "",
   "dated": "",
   "dated_from": "",
   "made_from": [
    "CLAUDE.md",
    "PIPELINE.md",
    "REALITY.md",
    "ROADMAP.md",
    "incidents/2026-11-10-storm-charles/README.md",
    "https://storm-charles.promptugal.news**"
   ],
   "links_to": [
    "CLAUDE.md",
    "PIPELINE.md",
    "REALITY.md",
    "ROADMAP.md",
    "incidents/2026-11-10-storm-charles/README.md"
   ],
   "external_links": 1,
   "bytes": 755,
   "sha256": "6bb80121417688cd77171c0526cd8b080f08ad99de89b00fc753da2925992b10",
   "served": true,
   "file": "https://storm-charles.promptugal.news/README.md",
   "page": "https://storm-charles.promptugal.news/",
   "commits": {
    "n": 2,
    "first_by": "",
    "first_at": "2026-11-10T21:03:38Z",
    "last_by": "incident.conductor@web-summit.dinis",
    "last_at": "2026-11-10T21:14:33Z",
    "last_commit": "77cdd51fc1",
    "agents": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T21:14:33Z",
   "linked_from": [
    "agents/conductor/policy.md"
   ]
  },
  {
   "path": "REALITY.md",
   "kind": "record",
   "title": "Reality: what exists (a thing not here does not exist)",
   "what": "Version: see /version.json on the live site (CI writes it; never committed).",
   "by": "",
   "by_from": "",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [
    ".github/workflows/deploy.yml",
    "admin/build/validate.mjs",
    "app/storm.js",
    "tools/llm.mjs",
    "tools/timeline.mjs",
    "tools/websummit.mjs"
   ],
   "external_links": 0,
   "bytes": 1542,
   "sha256": "eca7e166dd850bec8b241283335f66ba5285c90503dbcf3dad954601fcad8cce",
   "served": true,
   "file": "https://storm-charles.promptugal.news/REALITY.md",
   "page": "https://storm-charles.promptugal.news/REALITY.html",
   "commits": {
    "n": 1,
    "first_by": "incident.conductor@web-summit.dinis",
    "first_at": "2026-11-10T21:14:33Z",
    "last_by": "incident.conductor@web-summit.dinis",
    "last_at": "2026-11-10T21:14:33Z",
    "last_commit": "77cdd51fc1",
    "agents": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T21:14:33Z",
   "linked_from": [
    "README.md",
    "agents/conductor/policy.md",
    "library/glossary.md",
    "library/reading/standard.md"
   ]
  },
  {
   "path": "ROADMAP.md",
   "kind": "plan",
   "title": "The incident site: a newsroom for people and a data source for agents (roadmap, in priority order)",
   "what": "By incident.conductor@web-summit.dinis, 10 November 2026, ~19:20 UTC, from Dinis's direction in his session (close to his words): a separate repository that publishes \"super fast\"; \"a proxy of the flows of this activity\", so that we become \"a data source for …",
   "by": "incident.conductor@web-summit.dinis",
   "by_from": "header",
   "dated": "2026-11-10T19:20Z",
   "dated_from": "header",
   "made_from": [
    "PIPELINE.md"
   ],
   "links_to": [
    "PIPELINE.md",
    "tools/llm.mjs"
   ],
   "external_links": 0,
   "bytes": 9639,
   "sha256": "709ca6b0270d0a1fdc664d6cb504f39167b619f1deaa58d667ac4ea0577d32ec",
   "served": true,
   "file": "https://storm-charles.promptugal.news/ROADMAP.md",
   "page": "https://storm-charles.promptugal.news/ROADMAP.html",
   "commits": {
    "n": 1,
    "first_by": "incident.conductor@web-summit.dinis",
    "first_at": "2026-11-10T21:14:33Z",
    "last_by": "incident.conductor@web-summit.dinis",
    "last_at": "2026-11-10T21:14:33Z",
    "last_commit": "77cdd51fc1",
    "agents": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T21:14:33Z",
   "linked_from": [
    "CLAUDE.md",
    "PIPELINE.md",
    "README.md",
    "agents/conductor/policy.md",
    "library/glossary.md"
   ]
  },
  {
   "path": "SECURITY.md",
   "kind": "plan",
   "title": "Security: Dinis's login, his lane to the conductor, his vaults",
   "what": "Kept by incident.identity@web-summit.dinis, 10 November 2026, 23:55 UTC. At Dinis Cruz's word of 10 November, ~23:40 UTC (BRIEF.md). A design, then what is built; each section says which. Reused, unmodified and pinned by sha256: pki.sgit.ai's keys.js, …",
   "by": "incident.identity@web-summit.dinis",
   "by_from": "header",
   "dated": "2026-11-10T23:55Z",
   "dated_from": "header",
   "made_from": [
    "BRIEF.md",
    "app/login/pki/PIN.json"
   ],
   "links_to": [
    "BRIEF.md",
    "account/account.md",
    "account/inbox.json",
    "account/index.html",
    "agents/identity/status.json",
    "app/login/feedback.js",
    "app/login/pki/PIN.json",
    "data/keys.json",
    "data/lanes.json",
    "tools/lane-configure.mjs",
    "tools/lane-open.mjs",
    "tools/lane-seal.mjs",
    "tools/lane-test.mjs"
   ],
   "external_links": 1,
   "bytes": 9425,
   "sha256": "54e8aecfa0aa5e435e315f2745b8440e497b8325302f97528e30a5c2a6f22358",
   "served": true,
   "file": "https://storm-charles.promptugal.news/SECURITY.md",
   "page": "https://storm-charles.promptugal.news/SECURITY.html",
   "commits": {
    "n": 3,
    "first_by": "incident.identity@web-summit.dinis",
    "first_at": "2026-11-10T23:41:00Z",
    "last_by": "incident.identity@web-summit.dinis",
    "last_at": "2026-11-10T23:53:31Z",
    "last_commit": "6360a5f3c7",
    "agents": [
     "incident.identity@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:53:31Z",
   "linked_from": [
    "account/account.md",
    "account/inbox.json",
    "agents/JOBS.md",
    "agents/identity/policy.md",
    "data/lanes.json",
    "library/glossary.md"
   ]
  },
  {
   "path": "account/account.md",
   "kind": "app",
   "title": "Account: the operator's login, and how it works",
   "what": "Kept by incident.identity@web-summit.dinis, 10 November 2026, 23:55 UTC",
   "by": "incident.identity@web-summit.dinis",
   "by_from": "header",
   "dated": "2026-11-10T23:55Z",
   "dated_from": "header",
   "made_from": [
    "SECURITY.md",
    "account/index.html"
   ],
   "links_to": [
    "SECURITY.md",
    "account/inbox.json",
    "account/index.html",
    "app/login/feedback.js",
    "app/login/pki/PIN.json",
    "data/keys.json",
    "data/lanes.json"
   ],
   "external_links": 0,
   "bytes": 2623,
   "sha256": "9c3f14b7f28417cf08976ba515a418504048f44efc3c6133aea32e81fa849dc9",
   "served": true,
   "file": "https://storm-charles.promptugal.news/account/account.md",
   "page": "https://storm-charles.promptugal.news/account/account.html",
   "commits": {
    "n": 2,
    "first_by": "incident.identity@web-summit.dinis",
    "first_at": "2026-11-10T23:47:18Z",
    "last_by": "incident.identity@web-summit.dinis",
    "last_at": "2026-11-10T23:53:31Z",
    "last_commit": "6360a5f3c7",
    "agents": [
     "incident.identity@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:53:31Z",
   "linked_from": [
    "SECURITY.md"
   ]
  },
  {
   "path": "account/inbox.json",
   "kind": "app",
   "title": "inbox.json",
   "what": "Replies to Dinis Cruz, each sealed to his public key (ciphertext: sgit's hybrid v2 envelope as an m1 code). Written by tools/lane-seal.mjs --inbox; opened at /account/ with his key. Never a vault key, a token or anything personal (SECURITY.md, section c).",
   "by": "incident.identity@web-summit.dinis",
   "by_from": "its own fields",
   "dated": "2026-11-10T23:55:00Z",
   "dated_from": "\"updated\"",
   "made_from": [
    "tools/lane-seal.mjs",
    "SECURITY.md"
   ],
   "links_to": [],
   "external_links": 0,
   "bytes": 374,
   "sha256": "2136cc296c83c4e853eb2191dc4f29ed5c6d4a94a75adadb0e5fa6f0384e07ac",
   "served": true,
   "file": "https://storm-charles.promptugal.news/account/inbox.json",
   "commits": {
    "n": 2,
    "first_by": "incident.identity@web-summit.dinis",
    "first_at": "2026-11-10T23:47:18Z",
    "last_by": "incident.identity@web-summit.dinis",
    "last_at": "2026-11-10T23:53:31Z",
    "last_commit": "6360a5f3c7",
    "agents": [
     "incident.identity@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:53:31Z",
   "linked_from": [
    "SECURITY.md",
    "account/account.md"
   ]
  },
  {
   "path": "account/index.html",
   "kind": "app",
   "title": "index.html",
   "what": "",
   "by": "",
   "by_from": "",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 2928,
   "sha256": "596d1cd74054ce28081f4d546ae941b93f45bd4b252d64b36b0c63dcf0af7988",
   "served": true,
   "file": "https://storm-charles.promptugal.news/account/index.html",
   "commits": {
    "n": 2,
    "first_by": "incident.identity@web-summit.dinis",
    "first_at": "2026-11-10T23:47:18Z",
    "last_by": "incident.identity@web-summit.dinis",
    "last_at": "2026-11-10T23:53:31Z",
    "last_commit": "6360a5f3c7",
    "agents": [
     "incident.identity@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:53:31Z",
   "linked_from": [
    "SECURITY.md",
    "account/account.md"
   ]
  },
  {
   "path": "admin/build/build.mjs",
   "kind": "build",
   "title": "build.mjs",
   "what": "The build: repository - _site/ (never committed). Zero dependencies, one pass, a few hundred milliseconds. - every .md becomes a page beside it (and is served too, as its own markdown twin); - the front page is the newsroom: the incident's headline …",
   "by": "",
   "by_from": "",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 72832,
   "sha256": "af2e5f3313028a7271e5b5fc50732acdcc42691c5b5fc9404c1f8bb4fb0e0302",
   "served": false,
   "repo": "https://github.com/PrompTugal/PrompTugal__News__Storm-Charles/blob/dev/admin/build/build.mjs",
   "commits": null,
   "changed": "",
   "linked_from": [
    "agents/designer/policy.md",
    "design/round-1.md",
    "design/round-14.md",
    "design/round-2.md",
    "design/round-6.md",
    "library/abp.md"
   ]
  },
  {
   "path": "admin/build/validate.mjs",
   "kind": "build",
   "title": "validate.mjs",
   "what": "The gate: must print OK, and a red gate is no release. Budget: 5 seconds. It builds the site once, then checks: 1. the repository stays fast: no tracked file over 256 KB, no binary, no raw capture, nothing from a key store; 2. no secret: private keys, tokens, …",
   "by": "",
   "by_from": "",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 5291,
   "sha256": "bdee2ad2cc26c32e75998c10913dbedb97c833f857e54d7859e2971e734d5e65",
   "served": false,
   "repo": "https://github.com/PrompTugal/PrompTugal__News__Storm-Charles/blob/dev/admin/build/validate.mjs",
   "commits": null,
   "changed": "",
   "linked_from": [
    "REALITY.md",
    "agents/conductor/policy.md",
    "agents/designer/policy.md",
    "agents/dev/policy.md",
    "agents/graph/policy.md",
    "agents/identity/policy.md",
    "agents/librarian/policy.md",
    "agents/media/policy.md",
    "agents/meteorologist/policy.md",
    "agents/observability/policy.md",
    "agents/researcher/policy.md",
    "agents/weatherwatch/policy.md",
    "library/reading/standard.md"
   ]
  },
  {
   "path": "admin/series.txt",
   "kind": "admin",
   "title": "series.txt",
   "what": "",
   "by": "",
   "by_from": "",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 4,
   "sha256": "a6311009c6c322ca8ac2e620cff5204f0c3af23115d403293a0cb5be36796688",
   "served": false,
   "repo": "https://github.com/PrompTugal/PrompTugal__News__Storm-Charles/blob/dev/admin/series.txt",
   "commits": {
    "n": 1,
    "first_by": "incident.conductor@web-summit.dinis",
    "first_at": "2026-11-10T21:14:33Z",
    "last_by": "incident.conductor@web-summit.dinis",
    "last_at": "2026-11-10T21:14:33Z",
    "last_commit": "77cdd51fc1",
    "agents": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T21:14:33Z",
   "linked_from": [
    "agents/conductor/policy.md"
   ]
  },
  {
   "path": "admin/tools/release.sh",
   "kind": "tool",
   "title": "release.sh",
   "what": "Release from any agent's clone: AGENT=<name admin/tools/release.sh Commit your SOURCE changes first (subject \"<agent: <what\", trailers Agent:, Issue:, For:). This script rebases on dev, runs the gate locally (a red gate never leaves your machine), pushes …",
   "by": "",
   "by_from": "",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 1516,
   "sha256": "5f24c34fcc4615759bb44e733e0643cb52117fb9bd24830a5d2a971cfc4b1420",
   "served": false,
   "repo": "https://github.com/PrompTugal/PrompTugal__News__Storm-Charles/blob/dev/admin/tools/release.sh",
   "commits": {
    "n": 2,
    "first_by": "incident.conductor@web-summit.dinis",
    "first_at": "2026-11-10T21:14:33Z",
    "last_by": "incident.conductor@web-summit.dinis",
    "last_at": "2026-11-10T23:53:05Z",
    "last_commit": "0b40077f51",
    "agents": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:53:05Z",
   "linked_from": [
    "library/glossary.md",
    "library/reading/standard.md"
   ]
  },
  {
   "path": "agents/JOBS.md",
   "kind": "agent file",
   "title": "The team and its jobs (kept by incident.conductor@web-summit.dinis)",
   "what": "From Dinis's direction of 10 November ~23:40 UTC (BRIEF.md). Each agent owns its folders; nobody edits another's files (ask in a commit with For:). Everyone: read CLAUDE.md first, make a session key, add its public half to data/keys.json, keep …",
   "by": "incident.conductor@web-summit.dinis",
   "by_from": "header",
   "dated": "",
   "dated_from": "",
   "made_from": [
    "BRIEF.md",
    "CLAUDE.md",
    "SECURITY.md",
    "agents/policy.json",
    "app/site.css",
    "contribute.md",
    "data/graph/ontology.json",
    "data/keys.json",
    "data/lanes.json",
    "library/index.json",
    "tools/policy-check.mjs"
   ],
   "links_to": [
    "BRIEF.md",
    "CLAUDE.md",
    "SECURITY.md",
    "agents/policy.json",
    "app/site.css",
    "app/storm.js",
    "contribute.md",
    "data/graph/ontology.json",
    "data/keys.json",
    "data/lanes.json",
    "library/index.json",
    "tools/llm.mjs",
    "tools/policy-check.mjs"
   ],
   "external_links": 0,
   "bytes": 5579,
   "sha256": "c2629d29d33ef9884868239fd0f43827cb135793d9523fa522c560438203c547",
   "served": true,
   "file": "https://storm-charles.promptugal.news/agents/JOBS.md",
   "page": "https://storm-charles.promptugal.news/agents/JOBS.html",
   "commits": {
    "n": 2,
    "first_by": "incident.conductor@web-summit.dinis",
    "first_at": "2026-11-10T23:35:36Z",
    "last_by": "incident.conductor@web-summit.dinis",
    "last_at": "2026-11-10T23:53:05Z",
    "last_commit": "0b40077f51",
    "agents": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:53:05Z",
   "linked_from": [
    "agents/conductor/policy.md",
    "agents/designer/policy.md",
    "agents/dev/policy.md",
    "agents/graph/policy.md",
    "agents/identity/policy.md",
    "agents/librarian/policy.md",
    "agents/media/policy.md",
    "agents/meteorologist/policy.md",
    "agents/observability/policy.md",
    "agents/policy.json",
    "agents/researcher/policy.md",
    "agents/weatherwatch/policy.md",
    "app/agents/about.md",
    "data/agents/index.json",
    "library/abp.json",
    "library/abp.md",
    "library/glossary.md",
    "library/reading/standard.md"
   ]
  },
  {
   "path": "agents/README.md",
   "kind": "agent file",
   "title": "The incident team's status files",
   "what": "One folder per role; status.json holds the jobs routed to it, what is done, what is next, and asks (an ask starting \"Dinis:\" means the agent is blocked by its environment or needs his decision). Kept by incident.conductor@web-summit.dinis; each agent may …",
   "by": "incident.conductor@web-summit.dinis",
   "by_from": "header",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 569,
   "sha256": "abf1cc26d394edd86d88e3ed7b63092d9b2b00ec7f08db38d835f2df691c4c61",
   "served": true,
   "file": "https://storm-charles.promptugal.news/agents/README.md",
   "page": "https://storm-charles.promptugal.news/agents/",
   "commits": {
    "n": 1,
    "first_by": "incident.conductor@web-summit.dinis",
    "first_at": "2026-11-10T21:14:33Z",
    "last_by": "incident.conductor@web-summit.dinis",
    "last_at": "2026-11-10T21:14:33Z",
    "last_commit": "77cdd51fc1",
    "agents": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T21:14:33Z",
   "linked_from": [
    "agents/conductor/policy.md",
    "app/agents/about.md",
    "library/glossary.md"
   ]
  },
  {
   "path": "agents/conductor/policy.md",
   "kind": "agent file",
   "title": "ABP: incident.conductor@web-summit.dinis",
   "what": "Kept by incident.librarian@web-summit.dinis, 2026-11-11, 00:05 UTC. DRAFT, NOT AGREED BY DINIS. The Agent Behaviour Policy of incident.conductor@web-summit.dinis, one of Dinis Cruz's incident agents on storm-charles.promptugal.news, in RiskMandate's terms …",
   "by": "incident.librarian@web-summit.dinis",
   "by_from": "header",
   "dated": "",
   "dated_from": "",
   "made_from": [
    "CLAUDE.md",
    "agents/JOBS.md",
    "agents/policy.json",
    "library/abp.json",
    "library/abp.md",
    "tools/library-abp.mjs",
    "https://web-summit.sgit.ai/abp/"
   ],
   "links_to": [
    ".github/workflows/deploy.yml",
    "BRIEF-CORRECTIONS.md",
    "BRIEF.md",
    "CLAUDE.md",
    "PIPELINE.md",
    "README.md",
    "REALITY.md",
    "ROADMAP.md",
    "admin/build/validate.mjs",
    "admin/series.txt",
    "agents/JOBS.md",
    "agents/README.md",
    "agents/policy.json",
    "app/storm.js",
    "data/keys.json",
    "library/abp.json",
    "library/abp.md",
    "tools/library-abp.mjs",
    "tools/llm.mjs",
    "tools/policy-check.mjs",
    "tools/sync-from-websummit.sh",
    "tools/timeline.mjs"
   ],
   "external_links": 2,
   "bytes": 8950,
   "sha256": "c14ca7e828303bd61e6598f9271f572f4b898aa582bb441f10acfc0ad046801e",
   "served": true,
   "file": "https://storm-charles.promptugal.news/agents/conductor/policy.md",
   "page": "https://storm-charles.promptugal.news/agents/conductor/policy.html",
   "commits": {
    "n": 1,
    "first_by": "incident.librarian@web-summit.dinis",
    "first_at": "2026-11-10T23:59:40Z",
    "last_by": "incident.librarian@web-summit.dinis",
    "last_at": "2026-11-10T23:59:40Z",
    "last_commit": "4938594fd3",
    "agents": [
     "incident.librarian@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:59:40Z",
   "linked_from": [
    "library/abp.md"
   ]
  },
  {
   "path": "agents/conductor/status.json",
   "kind": "agent file",
   "title": "status.json",
   "what": "",
   "by": "incident.conductor@web-summit.dinis",
   "by_from": "its own fields",
   "dated": "2026-11-11T00:02:00Z",
   "dated_from": "\"updated\"",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 2927,
   "sha256": "c6dde2b66ed8ee0eb2bbca07b6e412f8d9fa6c96d4a68a185d37c18db1ed5f34",
   "served": true,
   "file": "https://storm-charles.promptugal.news/agents/conductor/status.json",
   "commits": {
    "n": 3,
    "first_by": "incident.conductor@web-summit.dinis",
    "first_at": "2026-11-10T21:14:33Z",
    "last_by": "incident.conductor@web-summit.dinis",
    "last_at": "2026-11-11T00:00:27Z",
    "last_commit": "6253e1f51c",
    "agents": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   "changed": "2026-11-11T00:00:27Z",
   "linked_from": []
  },
  {
   "path": "agents/designer/policy.md",
   "kind": "agent file",
   "title": "ABP: incident.designer@web-summit.dinis",
   "what": "Kept by incident.librarian@web-summit.dinis, 2026-11-11, 00:05 UTC. DRAFT, NOT AGREED BY DINIS. The Agent Behaviour Policy of incident.designer@web-summit.dinis, one of Dinis Cruz's incident agents on storm-charles.promptugal.news, in RiskMandate's terms …",
   "by": "incident.librarian@web-summit.dinis",
   "by_from": "header",
   "dated": "",
   "dated_from": "",
   "made_from": [
    "CLAUDE.md",
    "agents/JOBS.md",
    "agents/policy.json",
    "library/abp.json",
    "library/abp.md",
    "tools/library-abp.mjs",
    "https://web-summit.sgit.ai/abp/"
   ],
   "links_to": [
    ".github/workflows/deploy.yml",
    "CLAUDE.md",
    "admin/build/build.mjs",
    "admin/build/validate.mjs",
    "agents/JOBS.md",
    "agents/policy.json",
    "app/site.css",
    "data/keys.json",
    "library/abp.json",
    "library/abp.md",
    "tools/library-abp.mjs",
    "tools/llm.mjs",
    "tools/policy-check.mjs"
   ],
   "external_links": 2,
   "bytes": 8251,
   "sha256": "1b8b7efde7534fd14dd4080e49f1c24c8228a6248eb111919319f624a7bbcd69",
   "served": true,
   "file": "https://storm-charles.promptugal.news/agents/designer/policy.md",
   "page": "https://storm-charles.promptugal.news/agents/designer/policy.html",
   "commits": {
    "n": 1,
    "first_by": "incident.librarian@web-summit.dinis",
    "first_at": "2026-11-10T23:59:40Z",
    "last_by": "incident.librarian@web-summit.dinis",
    "last_at": "2026-11-10T23:59:40Z",
    "last_commit": "4938594fd3",
    "agents": [
     "incident.librarian@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:59:40Z",
   "linked_from": [
    "library/abp.md"
   ]
  },
  {
   "path": "agents/designer/status.json",
   "kind": "agent file",
   "title": "status.json",
   "what": "",
   "by": "incident.designer@web-summit.dinis",
   "by_from": "its own fields",
   "dated": "2026-11-11T00:13:22Z",
   "dated_from": "\"last_wake\"",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 3184,
   "sha256": "bc3369ee87bf4d37ad045e32e0889f891b9f8b3a6b4887605e88a885b0192abd",
   "served": true,
   "file": "https://storm-charles.promptugal.news/agents/designer/status.json",
   "commits": null,
   "changed": "2026-11-11T00:13:22Z",
   "linked_from": []
  },
  {
   "path": "agents/dev/policy.md",
   "kind": "agent file",
   "title": "ABP: incident.dev@web-summit.dinis",
   "what": "Kept by incident.librarian@web-summit.dinis, 2026-11-11, 00:05 UTC. DRAFT, NOT AGREED BY DINIS. The Agent Behaviour Policy of incident.dev@web-summit.dinis, one of Dinis Cruz's incident agents on storm-charles.promptugal.news, in RiskMandate's terms (Reach, …",
   "by": "incident.librarian@web-summit.dinis",
   "by_from": "header",
   "dated": "",
   "dated_from": "",
   "made_from": [
    "CLAUDE.md",
    "agents/JOBS.md",
    "agents/policy.json",
    "library/abp.json",
    "library/abp.md",
    "tools/library-abp.mjs",
    "https://web-summit.sgit.ai/abp/"
   ],
   "links_to": [
    ".github/workflows/deploy.yml",
    "CLAUDE.md",
    "admin/build/validate.mjs",
    "agents/JOBS.md",
    "agents/dev/status.json",
    "agents/policy.json",
    "app/storm.js",
    "data/keys.json",
    "library/abp.json",
    "library/abp.md",
    "tools/library-abp.mjs",
    "tools/llm.mjs",
    "tools/policy-check.mjs"
   ],
   "external_links": 2,
   "bytes": 8138,
   "sha256": "765753e5fb56f89ecdb5be1188cad78bd27077691908dfb13f7e6c1d4b69aed2",
   "served": true,
   "file": "https://storm-charles.promptugal.news/agents/dev/policy.md",
   "page": "https://storm-charles.promptugal.news/agents/dev/policy.html",
   "commits": {
    "n": 1,
    "first_by": "incident.librarian@web-summit.dinis",
    "first_at": "2026-11-10T23:59:40Z",
    "last_by": "incident.librarian@web-summit.dinis",
    "last_at": "2026-11-10T23:59:40Z",
    "last_commit": "4938594fd3",
    "agents": [
     "incident.librarian@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:59:40Z",
   "linked_from": [
    "library/abp.md"
   ]
  },
  {
   "path": "agents/dev/status.json",
   "kind": "agent file",
   "title": "status.json",
   "what": "",
   "by": "incident.dev@web-summit.dinis (done, next, asks, baseline); jobs by incident.conductor@web-summit.dinis",
   "by_from": "its own fields",
   "dated": "2026-11-10T21:45Z",
   "dated_from": "\"updated\"",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 15223,
   "sha256": "f381a3fc3036cb8a4a04341cf68bd08e1eb479944ab5c347d3027766958742c2",
   "served": true,
   "file": "https://storm-charles.promptugal.news/agents/dev/status.json",
   "commits": {
    "n": 7,
    "first_by": "incident.conductor@web-summit.dinis",
    "first_at": "2026-11-10T21:14:33Z",
    "last_by": "incident.conductor@web-summit.dinis",
    "last_at": "2026-11-10T22:03:27Z",
    "last_commit": "9b42aedd8d",
    "agents": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T22:03:27Z",
   "linked_from": [
    "PIPELINE.md",
    "agents/dev/policy.md",
    "library/reading/standard.md"
   ]
  },
  {
   "path": "agents/graph/policy.md",
   "kind": "agent file",
   "title": "ABP: incident.graph@web-summit.dinis",
   "what": "Kept by incident.librarian@web-summit.dinis, 2026-11-11, 00:05 UTC. DRAFT, NOT AGREED BY DINIS. The Agent Behaviour Policy of incident.graph@web-summit.dinis, one of Dinis Cruz's incident agents on storm-charles.promptugal.news, in RiskMandate's terms (Reach, …",
   "by": "incident.librarian@web-summit.dinis",
   "by_from": "header",
   "dated": "",
   "dated_from": "",
   "made_from": [
    "CLAUDE.md",
    "agents/JOBS.md",
    "agents/policy.json",
    "library/abp.json",
    "library/abp.md",
    "tools/library-abp.mjs",
    "https://web-summit.sgit.ai/abp/"
   ],
   "links_to": [
    ".github/workflows/deploy.yml",
    "CLAUDE.md",
    "admin/build/validate.mjs",
    "agents/JOBS.md",
    "agents/policy.json",
    "data/graph/ontology.json",
    "data/keys.json",
    "library/abp.json",
    "library/abp.md",
    "tools/library-abp.mjs",
    "tools/llm.mjs",
    "tools/policy-check.mjs"
   ],
   "external_links": 2,
   "bytes": 8152,
   "sha256": "4d2cd4c265c5ee70fa4311c531df22ca8d61fc07eb655d06948d13248ea6885c",
   "served": true,
   "file": "https://storm-charles.promptugal.news/agents/graph/policy.md",
   "page": "https://storm-charles.promptugal.news/agents/graph/policy.html",
   "commits": {
    "n": 1,
    "first_by": "incident.librarian@web-summit.dinis",
    "first_at": "2026-11-10T23:59:40Z",
    "last_by": "incident.librarian@web-summit.dinis",
    "last_at": "2026-11-10T23:59:40Z",
    "last_commit": "4938594fd3",
    "agents": [
     "incident.librarian@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:59:40Z",
   "linked_from": [
    "library/abp.md"
   ]
  },
  {
   "path": "agents/graph/status.json",
   "kind": "agent file",
   "title": "status.json",
   "what": "",
   "by": "incident.graph@web-summit.dinis",
   "by_from": "its own fields",
   "dated": "2026-11-11T00:07Z",
   "dated_from": "\"updated\"",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 4183,
   "sha256": "c5db71e2d44f50111d60ff87d7193704a5d1e4c8995c8c007ff80fcecd8b307f",
   "served": true,
   "file": "https://storm-charles.promptugal.news/agents/graph/status.json",
   "commits": null,
   "changed": "2026-11-11T00:07Z",
   "linked_from": []
  },
  {
   "path": "agents/identity/policy.md",
   "kind": "agent file",
   "title": "ABP: incident.identity@web-summit.dinis",
   "what": "Kept by incident.librarian@web-summit.dinis, 2026-11-11, 00:05 UTC. DRAFT, NOT AGREED BY DINIS. The Agent Behaviour Policy of incident.identity@web-summit.dinis, one of Dinis Cruz's incident agents on storm-charles.promptugal.news, in RiskMandate's terms …",
   "by": "incident.librarian@web-summit.dinis",
   "by_from": "header",
   "dated": "",
   "dated_from": "",
   "made_from": [
    "CLAUDE.md",
    "agents/JOBS.md",
    "agents/policy.json",
    "library/abp.json",
    "library/abp.md",
    "tools/library-abp.mjs",
    "https://web-summit.sgit.ai/abp/"
   ],
   "links_to": [
    ".github/workflows/deploy.yml",
    "CLAUDE.md",
    "SECURITY.md",
    "admin/build/validate.mjs",
    "agents/JOBS.md",
    "agents/policy.json",
    "data/keys.json",
    "data/lanes.json",
    "library/abp.json",
    "library/abp.md",
    "tools/lane-test.mjs",
    "tools/library-abp.mjs",
    "tools/llm.mjs",
    "tools/policy-check.mjs"
   ],
   "external_links": 2,
   "bytes": 8636,
   "sha256": "11f66b25e64baeda56c5e873d77e868c5060614c556ad70aa985dfb181cd8a2c",
   "served": true,
   "file": "https://storm-charles.promptugal.news/agents/identity/policy.md",
   "page": "https://storm-charles.promptugal.news/agents/identity/policy.html",
   "commits": {
    "n": 1,
    "first_by": "incident.librarian@web-summit.dinis",
    "first_at": "2026-11-10T23:59:40Z",
    "last_by": "incident.librarian@web-summit.dinis",
    "last_at": "2026-11-10T23:59:40Z",
    "last_commit": "4938594fd3",
    "agents": [
     "incident.librarian@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:59:40Z",
   "linked_from": [
    "library/abp.md"
   ]
  },
  {
   "path": "agents/identity/status.json",
   "kind": "agent file",
   "title": "status.json",
   "what": "",
   "by": "incident.identity@web-summit.dinis",
   "by_from": "its own fields",
   "dated": "2026-11-10T23:55:00Z",
   "dated_from": "\"updated\"",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 4012,
   "sha256": "37bc5bd7703f96cf92895e256b315cd682841709665f3b162d7b5f52a9ffdd4a",
   "served": true,
   "file": "https://storm-charles.promptugal.news/agents/identity/status.json",
   "commits": {
    "n": 3,
    "first_by": "incident.identity@web-summit.dinis",
    "first_at": "2026-11-10T23:41:00Z",
    "last_by": "incident.identity@web-summit.dinis",
    "last_at": "2026-11-10T23:53:31Z",
    "last_commit": "6360a5f3c7",
    "agents": [
     "incident.identity@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:53:31Z",
   "linked_from": [
    "SECURITY.md",
    "data/lanes.json"
   ]
  },
  {
   "path": "agents/librarian/policy.md",
   "kind": "agent file",
   "title": "ABP: incident.librarian@web-summit.dinis",
   "what": "Kept by incident.librarian@web-summit.dinis, 2026-11-11, 00:05 UTC. DRAFT, NOT AGREED BY DINIS. The Agent Behaviour Policy of incident.librarian@web-summit.dinis, one of Dinis Cruz's incident agents on storm-charles.promptugal.news, in RiskMandate's terms …",
   "by": "incident.librarian@web-summit.dinis",
   "by_from": "header",
   "dated": "",
   "dated_from": "",
   "made_from": [
    "CLAUDE.md",
    "agents/JOBS.md",
    "agents/policy.json",
    "library/abp.json",
    "library/abp.md",
    "tools/library-abp.mjs",
    "https://web-summit.sgit.ai/abp/"
   ],
   "links_to": [
    ".github/workflows/deploy.yml",
    "CLAUDE.md",
    "admin/build/validate.mjs",
    "agents/JOBS.md",
    "agents/policy.json",
    "data/keys.json",
    "library/abp.json",
    "library/abp.md",
    "library/index.json",
    "library/provenance.json",
    "tools/library-abp.mjs",
    "tools/llm.mjs",
    "tools/policy-check.mjs"
   ],
   "external_links": 2,
   "bytes": 8707,
   "sha256": "e83327ab157c41cebf6efef31b1c22756c2b3b00f8a9aa3f1022b384344bf022",
   "served": true,
   "file": "https://storm-charles.promptugal.news/agents/librarian/policy.md",
   "page": "https://storm-charles.promptugal.news/agents/librarian/policy.html",
   "commits": {
    "n": 1,
    "first_by": "incident.librarian@web-summit.dinis",
    "first_at": "2026-11-10T23:59:40Z",
    "last_by": "incident.librarian@web-summit.dinis",
    "last_at": "2026-11-10T23:59:40Z",
    "last_commit": "4938594fd3",
    "agents": [
     "incident.librarian@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:59:40Z",
   "linked_from": [
    "library/abp.md"
   ]
  },
  {
   "path": "agents/librarian/status.json",
   "kind": "agent file",
   "title": "status.json",
   "what": "",
   "by": "incident.librarian@web-summit.dinis",
   "by_from": "its own fields",
   "dated": "2026-11-11T00:17Z",
   "dated_from": "\"updated\"",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 5319,
   "sha256": "32a3fa4f85c513e247504f9a2e504389a23f04d9a10399b7fd67e6d2b973c4ea",
   "served": true,
   "file": "https://storm-charles.promptugal.news/agents/librarian/status.json",
   "commits": {
    "n": 9,
    "first_by": "incident.librarian@web-summit.dinis",
    "first_at": "2026-11-10T23:41:40Z",
    "last_by": "incident.librarian@web-summit.dinis",
    "last_at": "2026-11-11T00:02:20Z",
    "last_commit": "4b5f0a874d",
    "agents": [
     "incident.librarian@web-summit.dinis"
    ]
   },
   "changed": "2026-11-11T00:02:20Z",
   "linked_from": []
  },
  {
   "path": "agents/media/policy.md",
   "kind": "agent file",
   "title": "ABP: incident.media@web-summit.dinis",
   "what": "Kept by incident.librarian@web-summit.dinis, 2026-11-11, 00:05 UTC. DRAFT, NOT AGREED BY DINIS. The Agent Behaviour Policy of incident.media@web-summit.dinis, one of Dinis Cruz's incident agents on storm-charles.promptugal.news, in RiskMandate's terms (Reach, …",
   "by": "incident.librarian@web-summit.dinis",
   "by_from": "header",
   "dated": "",
   "dated_from": "",
   "made_from": [
    "CLAUDE.md",
    "agents/JOBS.md",
    "agents/policy.json",
    "library/abp.json",
    "library/abp.md",
    "tools/library-abp.mjs",
    "https://web-summit.sgit.ai/abp/"
   ],
   "links_to": [
    ".github/workflows/deploy.yml",
    "CLAUDE.md",
    "admin/build/validate.mjs",
    "agents/JOBS.md",
    "agents/policy.json",
    "contribute.md",
    "data/keys.json",
    "library/abp.json",
    "library/abp.md",
    "tools/library-abp.mjs",
    "tools/llm.mjs",
    "tools/policy-check.mjs"
   ],
   "external_links": 2,
   "bytes": 8327,
   "sha256": "ed171710b3f31ba340242f39db70945975d8dce30c32bf2aa430cf18f43735bf",
   "served": true,
   "file": "https://storm-charles.promptugal.news/agents/media/policy.md",
   "page": "https://storm-charles.promptugal.news/agents/media/policy.html",
   "commits": {
    "n": 1,
    "first_by": "incident.librarian@web-summit.dinis",
    "first_at": "2026-11-10T23:59:40Z",
    "last_by": "incident.librarian@web-summit.dinis",
    "last_at": "2026-11-10T23:59:40Z",
    "last_commit": "4938594fd3",
    "agents": [
     "incident.librarian@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:59:40Z",
   "linked_from": [
    "library/abp.md"
   ]
  },
  {
   "path": "agents/media/status.json",
   "kind": "agent file",
   "title": "status.json",
   "what": "",
   "by": "incident.media@web-summit.dinis",
   "by_from": "its own fields",
   "dated": "2026-11-11T00:15:00Z",
   "dated_from": "\"updated\"",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 3106,
   "sha256": "6a6627ff8f86fc01d8d975336849bf4fbb6bd1c1df984e6cc0f6d29928e27546",
   "served": true,
   "file": "https://storm-charles.promptugal.news/agents/media/status.json",
   "commits": null,
   "changed": "2026-11-11T00:15:00Z",
   "linked_from": []
  },
  {
   "path": "agents/meteorologist/policy.md",
   "kind": "agent file",
   "title": "ABP: incident.meteorologist@web-summit.dinis",
   "what": "Kept by incident.librarian@web-summit.dinis, 2026-11-11, 00:05 UTC. DRAFT, NOT AGREED BY DINIS. The Agent Behaviour Policy of incident.meteorologist@web-summit.dinis, one of Dinis Cruz's incident agents on storm-charles.promptugal.news, in RiskMandate's terms …",
   "by": "incident.librarian@web-summit.dinis",
   "by_from": "header",
   "dated": "",
   "dated_from": "",
   "made_from": [
    "CLAUDE.md",
    "agents/JOBS.md",
    "agents/policy.json",
    "library/abp.json",
    "library/abp.md",
    "tools/library-abp.mjs",
    "https://web-summit.sgit.ai/abp/"
   ],
   "links_to": [
    ".github/workflows/deploy.yml",
    "CLAUDE.md",
    "admin/build/validate.mjs",
    "agents/JOBS.md",
    "agents/meteorologist/status.json",
    "agents/policy.json",
    "app/storm.js",
    "data/keys.json",
    "library/abp.json",
    "library/abp.md",
    "tools/library-abp.mjs",
    "tools/llm.mjs",
    "tools/policy-check.mjs"
   ],
   "external_links": 2,
   "bytes": 8038,
   "sha256": "2c40b898d5a159b276262601d0a7a19c9b7dcc9f6542f80113b6168cc2b13e68",
   "served": true,
   "file": "https://storm-charles.promptugal.news/agents/meteorologist/policy.md",
   "page": "https://storm-charles.promptugal.news/agents/meteorologist/policy.html",
   "commits": {
    "n": 1,
    "first_by": "incident.librarian@web-summit.dinis",
    "first_at": "2026-11-10T23:59:40Z",
    "last_by": "incident.librarian@web-summit.dinis",
    "last_at": "2026-11-10T23:59:40Z",
    "last_commit": "4938594fd3",
    "agents": [
     "incident.librarian@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:59:40Z",
   "linked_from": [
    "library/abp.md"
   ]
  },
  {
   "path": "agents/meteorologist/status.json",
   "kind": "agent file",
   "title": "status.json",
   "what": "",
   "by": "incident.meteorologist@web-summit.dinis",
   "by_from": "its own fields",
   "dated": "2026-11-10T23:55:00Z",
   "dated_from": "\"updated\"",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 4210,
   "sha256": "fd6165d6702d47a53574175c80924978457228a3a6f80a97beba9e467665a6bc",
   "served": true,
   "file": "https://storm-charles.promptugal.news/agents/meteorologist/status.json",
   "commits": {
    "n": 8,
    "first_by": "incident.conductor@web-summit.dinis",
    "first_at": "2026-11-10T21:14:33Z",
    "last_by": "incident.conductor@web-summit.dinis",
    "last_at": "2026-11-10T23:55:03Z",
    "last_commit": "0740797c43",
    "agents": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:55:03Z",
   "linked_from": [
    "agents/meteorologist/policy.md",
    "incidents/2026-11-10-storm-charles/data/weather/README.md"
   ]
  },
  {
   "path": "agents/observability/policy.md",
   "kind": "agent file",
   "title": "ABP: incident.observability@web-summit.dinis",
   "what": "Kept by incident.librarian@web-summit.dinis, 2026-11-11, 00:05 UTC. DRAFT, NOT AGREED BY DINIS. The Agent Behaviour Policy of incident.observability@web-summit.dinis, one of Dinis Cruz's incident agents on storm-charles.promptugal.news, in RiskMandate's terms …",
   "by": "incident.librarian@web-summit.dinis",
   "by_from": "header",
   "dated": "",
   "dated_from": "",
   "made_from": [
    "CLAUDE.md",
    "agents/JOBS.md",
    "agents/policy.json",
    "library/abp.json",
    "library/abp.md",
    "tools/library-abp.mjs",
    "https://web-summit.sgit.ai/abp/"
   ],
   "links_to": [
    ".github/workflows/deploy.yml",
    "CLAUDE.md",
    "admin/build/validate.mjs",
    "agents/JOBS.md",
    "agents/policy.json",
    "data/keys.json",
    "library/abp.json",
    "library/abp.md",
    "tools/library-abp.mjs",
    "tools/llm.mjs",
    "tools/policy-check.mjs"
   ],
   "external_links": 2,
   "bytes": 8696,
   "sha256": "496c3d1e625aeae939dacb51a621ea4a7f715c4626ac6823572ba97da14789d7",
   "served": true,
   "file": "https://storm-charles.promptugal.news/agents/observability/policy.md",
   "page": "https://storm-charles.promptugal.news/agents/observability/policy.html",
   "commits": {
    "n": 1,
    "first_by": "incident.librarian@web-summit.dinis",
    "first_at": "2026-11-10T23:59:40Z",
    "last_by": "incident.librarian@web-summit.dinis",
    "last_at": "2026-11-10T23:59:40Z",
    "last_commit": "4938594fd3",
    "agents": [
     "incident.librarian@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:59:40Z",
   "linked_from": [
    "library/abp.md"
   ]
  },
  {
   "path": "agents/observability/status.json",
   "kind": "agent file",
   "title": "status.json",
   "what": "",
   "by": "incident.observability@web-summit.dinis",
   "by_from": "its own fields",
   "dated": "2026-11-11T00:17:36Z",
   "dated_from": "\"updated\"",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 5510,
   "sha256": "3ffcb7984ece4c2f279dd43476d7bc2f4fb9044666bc63e993706bdcaf5e76ec",
   "served": true,
   "file": "https://storm-charles.promptugal.news/agents/observability/status.json",
   "commits": null,
   "changed": "2026-11-11T00:17:36Z",
   "linked_from": [
    "data/agents/obs.json"
   ]
  },
  {
   "path": "agents/policy.json",
   "kind": "agent file",
   "title": "policy.json",
   "what": "Who may change which paths in this repository: the Owns column of agents/JOBS.md as globs, with the owners incident.conductor@ gave on 10 November 2026 (23:51 UTC) for the paths JOBS.md did not cover. Checked by tools/policy-check.mjs over the commits about …",
   "by": "incident.librarian@web-summit.dinis (drafted, at incident.conductor@'s ask; the owners are the conductor's decisions)",
   "by_from": "its own fields",
   "dated": "2026-11-10T23:58:00Z",
   "dated_from": "\"updated\"",
   "made_from": [
    "agents/JOBS.md",
    "tools/policy-check.mjs"
   ],
   "links_to": [],
   "external_links": 0,
   "bytes": 4667,
   "sha256": "bb512ee012b274fbda05b064557ab21f81dd32cb26457f3777f960b4c7ee06af",
   "served": true,
   "file": "https://storm-charles.promptugal.news/agents/policy.json",
   "commits": null,
   "changed": "2026-11-10T23:58:00Z",
   "linked_from": [
    "agents/JOBS.md",
    "agents/conductor/policy.md",
    "agents/designer/policy.md",
    "agents/dev/policy.md",
    "agents/graph/policy.md",
    "agents/identity/policy.md",
    "agents/librarian/policy.md",
    "agents/media/policy.md",
    "agents/meteorologist/policy.md",
    "agents/observability/policy.md",
    "agents/researcher/policy.md",
    "agents/weatherwatch/policy.md",
    "library/abp.json",
    "library/abp.md"
   ]
  },
  {
   "path": "agents/researcher/policy.md",
   "kind": "agent file",
   "title": "ABP: incident.researcher@web-summit.dinis",
   "what": "Kept by incident.librarian@web-summit.dinis, 2026-11-11, 00:05 UTC. DRAFT, NOT AGREED BY DINIS. The Agent Behaviour Policy of incident.researcher@web-summit.dinis, one of Dinis Cruz's incident agents on storm-charles.promptugal.news, in RiskMandate's terms …",
   "by": "incident.librarian@web-summit.dinis",
   "by_from": "header",
   "dated": "",
   "dated_from": "",
   "made_from": [
    "CLAUDE.md",
    "agents/JOBS.md",
    "agents/policy.json",
    "library/abp.json",
    "library/abp.md",
    "tools/library-abp.mjs",
    "https://web-summit.sgit.ai/abp/"
   ],
   "links_to": [
    ".github/workflows/deploy.yml",
    "CLAUDE.md",
    "admin/build/validate.mjs",
    "agents/JOBS.md",
    "agents/policy.json",
    "agents/researcher/status.json",
    "app/storm.js",
    "data/keys.json",
    "library/abp.json",
    "library/abp.md",
    "tools/library-abp.mjs",
    "tools/llm.mjs",
    "tools/policy-check.mjs"
   ],
   "external_links": 2,
   "bytes": 7839,
   "sha256": "ea25eb0a2521e997fbef34a3adabf827ef5954e8aa6f764b5e518260c4e154ee",
   "served": true,
   "file": "https://storm-charles.promptugal.news/agents/researcher/policy.md",
   "page": "https://storm-charles.promptugal.news/agents/researcher/policy.html",
   "commits": {
    "n": 1,
    "first_by": "incident.librarian@web-summit.dinis",
    "first_at": "2026-11-10T23:59:40Z",
    "last_by": "incident.librarian@web-summit.dinis",
    "last_at": "2026-11-10T23:59:40Z",
    "last_commit": "4938594fd3",
    "agents": [
     "incident.librarian@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:59:40Z",
   "linked_from": [
    "library/abp.md"
   ]
  },
  {
   "path": "agents/researcher/status.json",
   "kind": "agent file",
   "title": "status.json",
   "what": "",
   "by": "incident.researcher@web-summit.dinis",
   "by_from": "its own fields",
   "dated": "2026-11-10T23:55Z",
   "dated_from": "\"updated\"",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 7363,
   "sha256": "7f89e900235f23089dccf555e48f2814e4c6585d0f2fed3e7f43446fdfb84c7e",
   "served": true,
   "file": "https://storm-charles.promptugal.news/agents/researcher/status.json",
   "commits": {
    "n": 6,
    "first_by": "incident.conductor@web-summit.dinis",
    "first_at": "2026-11-10T21:14:33Z",
    "last_by": "incident.conductor@web-summit.dinis",
    "last_at": "2026-11-10T23:57:57Z",
    "last_commit": "0ff49d8f41",
    "agents": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:57:57Z",
   "linked_from": [
    "agents/researcher/policy.md",
    "incidents/2026-11-10-storm-charles/data/decisions/README.md"
   ]
  },
  {
   "path": "agents/weatherwatch/policy.md",
   "kind": "agent file",
   "title": "ABP: incident.weatherwatch@web-summit.dinis",
   "what": "Kept by incident.librarian@web-summit.dinis, 2026-11-11, 00:05 UTC. DRAFT, NOT AGREED BY DINIS. The Agent Behaviour Policy of incident.weatherwatch@web-summit.dinis, one of Dinis Cruz's incident agents on storm-charles.promptugal.news, in RiskMandate's terms …",
   "by": "incident.librarian@web-summit.dinis",
   "by_from": "header",
   "dated": "",
   "dated_from": "",
   "made_from": [
    "CLAUDE.md",
    "agents/JOBS.md",
    "agents/policy.json",
    "library/abp.json",
    "library/abp.md",
    "tools/library-abp.mjs",
    "https://web-summit.sgit.ai/abp/"
   ],
   "links_to": [
    ".github/workflows/deploy.yml",
    "CLAUDE.md",
    "admin/build/validate.mjs",
    "agents/JOBS.md",
    "agents/policy.json",
    "data/keys.json",
    "library/abp.json",
    "library/abp.md",
    "tools/library-abp.mjs",
    "tools/llm.mjs",
    "tools/policy-check.mjs"
   ],
   "external_links": 2,
   "bytes": 8060,
   "sha256": "dd77448f5f2b498da805a1f221890009d1e8ebf7457ce3b3b9f8a9db34998a4d",
   "served": true,
   "file": "https://storm-charles.promptugal.news/agents/weatherwatch/policy.md",
   "page": "https://storm-charles.promptugal.news/agents/weatherwatch/policy.html",
   "commits": {
    "n": 1,
    "first_by": "incident.librarian@web-summit.dinis",
    "first_at": "2026-11-10T23:59:40Z",
    "last_by": "incident.librarian@web-summit.dinis",
    "last_at": "2026-11-10T23:59:40Z",
    "last_commit": "4938594fd3",
    "agents": [
     "incident.librarian@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:59:40Z",
   "linked_from": [
    "library/abp.md"
   ]
  },
  {
   "path": "agents/weatherwatch/status.json",
   "kind": "agent file",
   "title": "status.json",
   "what": "",
   "by": "incident.weatherwatch@web-summit.dinis",
   "by_from": "its own fields",
   "dated": "2026-11-11T00:01:00Z",
   "dated_from": "\"updated\"",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 2886,
   "sha256": "51d14afcc11eb6a2dd7de7faa1552c9b053d865975567a26b9df8b39cdd908af",
   "served": true,
   "file": "https://storm-charles.promptugal.news/agents/weatherwatch/status.json",
   "commits": {
    "n": 5,
    "first_by": "incident.weatherwatch@web-summit.dinis",
    "first_at": "2026-11-10T23:38:13Z",
    "last_by": "incident.weatherwatch@web-summit.dinis",
    "last_at": "2026-11-10T23:58:52Z",
    "last_commit": "0664a6abf5",
    "agents": [
     "incident.weatherwatch@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:58:52Z",
   "linked_from": []
  },
  {
   "path": "app/agents/about.md",
   "kind": "app",
   "title": "The agents page: how it works",
   "what": "Kept by incident.observability@web-summit.dinis, 10 November 2026, 23:53 UTC",
   "by": "incident.observability@web-summit.dinis",
   "by_from": "header",
   "dated": "2026-11-10T23:53Z",
   "dated_from": "header",
   "made_from": [
    "agents/README.md"
   ],
   "links_to": [
    "agents/JOBS.md",
    "agents/README.md",
    "app/agents/live-adapter.js",
    "app/agents/obs.js",
    "app/agents/universe-adapter.js",
    "app/agents/vendor/live-map@57636ac/pin.json",
    "app/agents/vendor/universe@57636ac/pin.json",
    "data/agents/commits.json",
    "data/agents/index.json",
    "data/agents/obs.json",
    "data/keys.json",
    "library/abp.md",
    "tools/agents-commits.mjs",
    "tools/agents-index.mjs",
    "tools/agents-ledger.mjs",
    "tools/llm.mjs"
   ],
   "external_links": 3,
   "bytes": 6296,
   "sha256": "fc71dee0e758fa4dbc23f6d895ae5a37c8d1971d98f2c157a169c441ded49efb",
   "served": true,
   "file": "https://storm-charles.promptugal.news/app/agents/about.md",
   "page": "https://storm-charles.promptugal.news/app/agents/about.html",
   "commits": null,
   "changed": "2026-11-10T23:53Z",
   "linked_from": []
  },
  {
   "path": "app/agents/agents.css",
   "kind": "app",
   "title": "agents.css",
   "what": "/app/agents/: the team console (incident.observability@web-summit.dinis). Uses app/site.css's tokens; adds nothing global.",
   "by": "incident.observability@web-summit.dinis",
   "by_from": "header",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 6359,
   "sha256": "1a1aabe5e6d65df273a79039fa7d252620f5f2aba1c449ba1df2572c80b44d18",
   "served": true,
   "file": "https://storm-charles.promptugal.news/app/agents/agents.css",
   "commits": null,
   "changed": "",
   "linked_from": []
  },
  {
   "path": "app/agents/agents.js",
   "kind": "app",
   "title": "agents.js",
   "what": "The team console (incident.observability@web-summit.dinis): every agent, what it is doing, what it asks, its last push. Mounts into <div id=\"agents-live\" data-base=\"<path to the site root\". Reads JSON only: 1. data/agents/index.json the roster, jobs, statuses …",
   "by": "incident.observability@web-summit.dinis",
   "by_from": "header",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 27914,
   "sha256": "c3831cc22a0fe7918a844446b4d4533f91bc54beaec72b89a50a9a570d0f2fff",
   "served": true,
   "file": "https://storm-charles.promptugal.news/app/agents/agents.js",
   "commits": null,
   "changed": "",
   "linked_from": []
  },
  {
   "path": "app/agents/index.html",
   "kind": "app",
   "title": "index.html",
   "what": "",
   "by": "",
   "by_from": "",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 674,
   "sha256": "83a7522aba81418cf12e86b212e56c13741c759f804d8c39959c025b076548d9",
   "served": true,
   "file": "https://storm-charles.promptugal.news/app/agents/index.html",
   "commits": null,
   "changed": "",
   "linked_from": []
  },
  {
   "path": "app/agents/live-adapter.js",
   "kind": "app",
   "title": "live-adapter.js",
   "what": "The adapter between this repository's commits and Angelo's live map (incident.observability@web-summit.dinis). The engine is an unchanged, pinned copy: vendor/live-map@57636ac/ (live.js, live3d.js by dev.map@PrompTugal.angelo; pin.json says which commit). …",
   "by": "incident.observability@web-summit.dinis",
   "by_from": "header",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 6932,
   "sha256": "e9cc987a11356a7f6844614844a4c63d3898472c2a9df6617a2dc6b1c554619f",
   "served": true,
   "file": "https://storm-charles.promptugal.news/app/agents/live-adapter.js",
   "commits": {
    "n": 1,
    "first_by": "incident.observability@web-summit.dinis",
    "first_at": "2026-11-10T23:47:37Z",
    "last_by": "incident.observability@web-summit.dinis",
    "last_at": "2026-11-10T23:47:37Z",
    "last_commit": "3885eaf56e",
    "agents": [
     "incident.observability@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:47:37Z",
   "linked_from": [
    "app/agents/about.md"
   ]
  },
  {
   "path": "app/agents/obs.js",
   "kind": "app",
   "title": "obs.js",
   "what": "Page views and reads for storm-charles.promptugal.news (incident.observability@web-summit.dinis, 10 November 2026). The model is promptugal.news's assets/obs/obs.js (observability@PrompTugal.dinis, after the team site's obs-dinis.js and Jose's telemetry.js), …",
   "by": "incident.observability@web-summit.dinis",
   "by_from": "header",
   "dated": "2026-11-10",
   "dated_from": "header",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 9395,
   "sha256": "41f281974f620a9ce81e3ec7a5abbf08114dc9587b501ae456b356265f90e2d8",
   "served": true,
   "file": "https://storm-charles.promptugal.news/app/agents/obs.js",
   "commits": {
    "n": 1,
    "first_by": "incident.observability@web-summit.dinis",
    "first_at": "2026-11-10T23:54:50Z",
    "last_by": "incident.observability@web-summit.dinis",
    "last_at": "2026-11-10T23:54:50Z",
    "last_commit": "3565f28d74",
    "agents": [
     "incident.observability@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:54:50Z",
   "linked_from": [
    "app/agents/about.md"
   ]
  },
  {
   "path": "app/agents/universe-adapter.js",
   "kind": "app",
   "title": "universe-adapter.js",
   "what": "The adapter between this repository's team and Silvio's Universe (incident.observability@web-summit.dinis). The engine is an unchanged, pinned copy: vendor/universe@57636ac/ (brain.js, brain.css by dashboard@web-summit.silvio; pin.json says which commit). …",
   "by": "incident.observability@web-summit.dinis",
   "by_from": "header",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 11047,
   "sha256": "8f0ef12e3755a844227ab03db45ace08e495a0f0f299fedb2404d966a4f13a6c",
   "served": true,
   "file": "https://storm-charles.promptugal.news/app/agents/universe-adapter.js",
   "commits": null,
   "changed": "",
   "linked_from": [
    "app/agents/about.md"
   ]
  },
  {
   "path": "app/agents/vendor/live-map@57636ac/live.js",
   "kind": "app",
   "title": "live.js",
   "what": "The live map: Team and the machine's graph as a small always-on view, lines and dots only, in a hexagon (dev.map@PrompTugal.angelo, 7 November 2026, at Angelo's go; spec: people/angelo/proposals/live-map/spec-realtime.md). It draws the same graph as the …",
   "by": "dev.map@PrompTugal.angelo",
   "by_from": "header",
   "dated": "2026-11-07",
   "dated_from": "header",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 67365,
   "sha256": "d8c6148bad857d41dc8c6f80c9524c5c54d670d113afc7a4f58df4b412657a47",
   "served": true,
   "file": "https://storm-charles.promptugal.news/app/agents/vendor/live-map@57636ac/live.js",
   "commits": {
    "n": 1,
    "first_by": "incident.observability@web-summit.dinis",
    "first_at": "2026-11-10T23:47:37Z",
    "last_by": "incident.observability@web-summit.dinis",
    "last_at": "2026-11-10T23:47:37Z",
    "last_commit": "3885eaf56e",
    "agents": [
     "incident.observability@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:47:37Z",
   "linked_from": []
  },
  {
   "path": "app/agents/vendor/live-map@57636ac/live3d.js",
   "kind": "app",
   "title": "live3d.js",
   "what": "The live graph in 3D (backlog 0c; Angelo, 8 November: \"interacting with the mouse is very slow, it lags heavily, and more importantly, dots and lines don't light up, so it's cool static graph but not what we wanted\"). A light renderer on the site's own …",
   "by": "dev.map@PrompTugal.angelo",
   "by_from": "header",
   "dated": "2026-11-08",
   "dated_from": "header",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 25178,
   "sha256": "e2bc0ab7873b6b9d17421025cca066265e80c25b08f3ceb16edca3d861d143d8",
   "served": true,
   "file": "https://storm-charles.promptugal.news/app/agents/vendor/live-map@57636ac/live3d.js",
   "commits": {
    "n": 1,
    "first_by": "incident.observability@web-summit.dinis",
    "first_at": "2026-11-10T23:47:37Z",
    "last_by": "incident.observability@web-summit.dinis",
    "last_at": "2026-11-10T23:47:37Z",
    "last_commit": "3885eaf56e",
    "agents": [
     "incident.observability@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:47:37Z",
   "linked_from": []
  },
  {
   "path": "app/agents/vendor/live-map@57636ac/pin.json",
   "kind": "app",
   "title": "pin.json",
   "what": "Unchanged copies, pinned so the authors' daily changes never break this site. Not forked: our side is one adapter in app/agents/. To update: run tools/agents-pin.mjs on a newer checkout (a new folder, named for its commit) and point the adapter at it.",
   "by": "incident.observability@web-summit.dinis",
   "by_from": "its own fields",
   "dated": "2026-11-10T23:44:47Z",
   "dated_from": "\"updated\"",
   "made_from": [
    "tools/agents-pin.mjs"
   ],
   "links_to": [],
   "external_links": 0,
   "bytes": 1026,
   "sha256": "cf9c245255c008d47e138440f94541d902c361e8033e8d805d9a66dd1551b1ae",
   "served": true,
   "file": "https://storm-charles.promptugal.news/app/agents/vendor/live-map@57636ac/pin.json",
   "commits": {
    "n": 2,
    "first_by": "incident.observability@web-summit.dinis",
    "first_at": "2026-11-10T23:47:37Z",
    "last_by": "incident.observability@web-summit.dinis",
    "last_at": "2026-11-10T23:54:50Z",
    "last_commit": "3565f28d74",
    "agents": [
     "incident.observability@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:54:50Z",
   "linked_from": [
    "app/agents/about.md"
   ]
  },
  {
   "path": "app/agents/vendor/universe@57636ac/brain.css",
   "kind": "app",
   "title": "brain.css",
   "what": "Silvio's brain, the 3D map (Lab only), premium: the sky is drawn by the 3D engine (stars, nebulae, glow);",
   "by": "",
   "by_from": "",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 45269,
   "sha256": "66c6e31821f0d90ac56e607e525156abf0f3956871a46daa04582981b2647e14",
   "served": true,
   "file": "https://storm-charles.promptugal.news/app/agents/vendor/universe@57636ac/brain.css",
   "commits": {
    "n": 1,
    "first_by": "incident.observability@web-summit.dinis",
    "first_at": "2026-11-10T23:51:38Z",
    "last_by": "incident.observability@web-summit.dinis",
    "last_at": "2026-11-10T23:51:38Z",
    "last_commit": "d6aba69783",
    "agents": [
     "incident.observability@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:51:38Z",
   "linked_from": []
  },
  {
   "path": "app/agents/vendor/universe@57636ac/brain.js",
   "kind": "app",
   "title": "brain.js",
   "what": "The Universe, read live (dashboard@web-summit.silvio, 10 November 2026; Silvio: \"everything must be in live data\"). Every time the map opens it reads, from their sources, at that moment: - the team (web-summit.sgit.ai/data/team.json) and each person's agents …",
   "by": "dashboard@web-summit.silvio",
   "by_from": "header",
   "dated": "2026-11-10",
   "dated_from": "header",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 120522,
   "sha256": "56c0ecff4e432a0e12e7702df038edeefe7c3bdb99a4ab5d64c9817d854d9b0a",
   "served": true,
   "file": "https://storm-charles.promptugal.news/app/agents/vendor/universe@57636ac/brain.js",
   "commits": {
    "n": 1,
    "first_by": "incident.observability@web-summit.dinis",
    "first_at": "2026-11-10T23:51:38Z",
    "last_by": "incident.observability@web-summit.dinis",
    "last_at": "2026-11-10T23:51:38Z",
    "last_commit": "d6aba69783",
    "agents": [
     "incident.observability@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:51:38Z",
   "linked_from": []
  },
  {
   "path": "app/agents/vendor/universe@57636ac/pin.json",
   "kind": "app",
   "title": "pin.json",
   "what": "Unchanged copies, pinned so the authors' daily changes never break this site. Not forked: our side is one adapter in app/agents/. To update: run tools/agents-pin.mjs on a newer checkout (a new folder, named for its commit) and point the adapter at it.",
   "by": "incident.observability@web-summit.dinis",
   "by_from": "its own fields",
   "dated": "2026-11-10T23:49:40Z",
   "dated_from": "\"updated\"",
   "made_from": [
    "tools/agents-pin.mjs"
   ],
   "links_to": [],
   "external_links": 0,
   "bytes": 1015,
   "sha256": "1ed5e6655f2090c5b2aa6643ae49d0461179188680b0217754a502a9bff2c194",
   "served": true,
   "file": "https://storm-charles.promptugal.news/app/agents/vendor/universe@57636ac/pin.json",
   "commits": {
    "n": 2,
    "first_by": "incident.observability@web-summit.dinis",
    "first_at": "2026-11-10T23:51:38Z",
    "last_by": "incident.observability@web-summit.dinis",
    "last_at": "2026-11-10T23:54:50Z",
    "last_commit": "3565f28d74",
    "agents": [
     "incident.observability@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:54:50Z",
   "linked_from": [
    "app/agents/about.md"
   ]
  },
  {
   "path": "app/design/timeline.js",
   "kind": "design",
   "title": "timeline.js",
   "what": "The timeline's filter (incident.designer@web-summit.dinis, design/round-14.md). The page is complete without this file: the build has already written each row's label, kind and marks. This only hides rows, counts them, and keeps the row named in the address …",
   "by": "incident.designer@web-summit.dinis",
   "by_from": "header",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 1625,
   "sha256": "176b4b2a1e6e9eb24dc28587f8d7e0d208d40e97a7a42e987c288407156af528",
   "served": true,
   "file": "https://storm-charles.promptugal.news/app/design/timeline.js",
   "commits": null,
   "changed": "",
   "linked_from": [
    "design/round-14.md"
   ]
  },
  {
   "path": "app/graph/README.md",
   "kind": "app",
   "title": "The graph of the storm",
   "what": "One graph of Storm Charles: actors, decisions, warnings, signals, sources, places, datasets and agents, each node and link with its label, its source and the time read. Built from the incident's JSON.",
   "by": "incident.graph@web-summit.dinis",
   "by_from": "header",
   "dated": "",
   "dated_from": "",
   "made_from": [
    "data/graph/storm.json",
    "data/graph/tables/timeline.json"
   ],
   "links_to": [
    "app/graph/engine.js",
    "data/graph/README.md",
    "data/graph/storm.json",
    "data/graph/tables/timeline.json"
   ],
   "external_links": 0,
   "bytes": 3850,
   "sha256": "de9baf5d2e15710c758585bb52140b359a9f9438e7f5bda4c0865be382e00f64",
   "served": true,
   "file": "https://storm-charles.promptugal.news/app/graph/README.md",
   "page": "https://storm-charles.promptugal.news/app/graph/",
   "commits": null,
   "changed": "",
   "linked_from": []
  },
  {
   "path": "app/graph/engine.js",
   "kind": "app",
   "title": "engine.js",
   "what": "A small adapter onto Silvio's graph engine (incident.graph@web-summit.dinis). The engine is the bundle behind web-summit.sgit.ai's Universe (assets/cc/brain.js): brain-libs.js, which holds 3d-force-graph 1.80.1 and three 0.186.1 as window.BrainLibs. It is 1.6 …",
   "by": "incident.graph@web-summit.dinis",
   "by_from": "header",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 6888,
   "sha256": "d188ad59544bed74692ae83f88d87425817bb6227700c12f5cbafd4d32bea014",
   "served": true,
   "file": "https://storm-charles.promptugal.news/app/graph/engine.js",
   "commits": null,
   "changed": "",
   "linked_from": [
    "app/graph/README.md"
   ]
  },
  {
   "path": "app/graph/graph.css",
   "kind": "app",
   "title": "graph.css",
   "what": "The query page and the graph page (incident.graph@web-summit.dinis). Colours come from app/site.css's tokens;",
   "by": "incident.graph@web-summit.dinis",
   "by_from": "header",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 8306,
   "sha256": "4668257c7f883c3fdce49014bf20f868c5dc1bb5237b1dec51dddbc14c3e155d",
   "served": true,
   "file": "https://storm-charles.promptugal.news/app/graph/graph.css",
   "commits": null,
   "changed": "",
   "linked_from": []
  },
  {
   "path": "app/graph/graph.js",
   "kind": "app",
   "title": "graph.js",
   "what": "The graph page (/app/graph/): the storm's graph (data/graph/storm.json) drawn with Silvio's engine through engine.js, with the same graph always available as a list, so nothing depends on WebGL or on another site. incident.graph@web-summit.dinis. Everything …",
   "by": "",
   "by_from": "",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 13717,
   "sha256": "cda76924a7839259a14f57a62e0fb73779e3b4bc70050c925d5e639d14daf13a",
   "served": true,
   "file": "https://storm-charles.promptugal.news/app/graph/graph.js",
   "commits": null,
   "changed": "",
   "linked_from": []
  },
  {
   "path": "app/graph/query.js",
   "kind": "app",
   "title": "query.js",
   "what": "The query page (/data/query/): SQLite in the reader's browser over the tables of the storm's graph. incident.graph@web-summit.dinis. The engine is sql.js 1.14.2 (SQLite compiled to WebAssembly), the one newsroom.sgit.ai's SQL console uses, loaded from where …",
   "by": "",
   "by_from": "",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 12151,
   "sha256": "0ccc808b7eb4b73343a716b07a9aed2e6522a9fc3152a6b04cd6a09d80196f82",
   "served": true,
   "file": "https://storm-charles.promptugal.news/app/graph/query.js",
   "commits": null,
   "changed": "",
   "linked_from": []
  },
  {
   "path": "app/login/account.js",
   "kind": "app",
   "title": "account.js",
   "what": "account.js: the page at /account/ (incident.identity@; the design is /SECURITY.md). Three states: no key in this browser (make one), a key that is locked (unlock), unlocked (the public half to hand to the conductor, the conductor's replies opened here, lock, …",
   "by": "",
   "by_from": "",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 6954,
   "sha256": "e252b5154a6a6ba9f32a5e17015c006adf0d29527ca828443ade874fda55b8b1",
   "served": true,
   "file": "https://storm-charles.promptugal.news/app/login/account.js",
   "commits": {
    "n": 2,
    "first_by": "incident.identity@web-summit.dinis",
    "first_at": "2026-11-10T23:47:18Z",
    "last_by": "incident.identity@web-summit.dinis",
    "last_at": "2026-11-10T23:53:31Z",
    "last_commit": "6360a5f3c7",
    "agents": [
     "incident.identity@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:53:31Z",
   "linked_from": []
  },
  {
   "path": "app/login/dom.js",
   "kind": "app",
   "title": "dom.js",
   "what": "dom.js: the few DOM helpers the login pages share. Text only, never markup: nothing read from a message is parsed as HTML.",
   "by": "",
   "by_from": "",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 1531,
   "sha256": "3f2ad855d47976ded61caeb8480186e4eb72cc9d68bc92af078a8c200b432345",
   "served": true,
   "file": "https://storm-charles.promptugal.news/app/login/dom.js",
   "commits": {
    "n": 1,
    "first_by": "incident.identity@web-summit.dinis",
    "first_at": "2026-11-10T23:47:18Z",
    "last_by": "incident.identity@web-summit.dinis",
    "last_at": "2026-11-10T23:47:18Z",
    "last_commit": "f0369a0290",
    "agents": [
     "incident.identity@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:47:18Z",
   "linked_from": []
  },
  {
   "path": "app/login/feedback.js",
   "kind": "app",
   "title": "feedback.js",
   "what": "feedback.js: the feedback box, on any page that loads it (incident.identity@; the design is /SECURITY.md, section b). <script type=\"module\" src=\"<root/app/login/feedback.js\"</script It draws nothing unless this browser holds a key made at /account/ (so …",
   "by": "",
   "by_from": "",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 3714,
   "sha256": "0201a3b304ca3e3a8f2a054007ca14379a916305b2ff0228a07f1d30a60e1bdb",
   "served": true,
   "file": "https://storm-charles.promptugal.news/app/login/feedback.js",
   "commits": {
    "n": 1,
    "first_by": "incident.identity@web-summit.dinis",
    "first_at": "2026-11-10T23:47:18Z",
    "last_by": "incident.identity@web-summit.dinis",
    "last_at": "2026-11-10T23:47:18Z",
    "last_commit": "f0369a0290",
    "agents": [
     "incident.identity@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:47:18Z",
   "linked_from": [
    "SECURITY.md",
    "account/account.md"
   ]
  },
  {
   "path": "app/login/id.js",
   "kind": "app",
   "title": "id.js",
   "what": "id.js: Dinis's key in this browser (incident.identity@web-summit.dinis; the design is /SECURITY.md, section a). passkey ──PRF──▶ door seed (pki/door.js) ──▶ AES-256-GCM ──▶ localStorage (pki/local.js): the two private halves or, where the browser gives no PRF …",
   "by": "incident.identity@web-summit.dinis",
   "by_from": "header",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 5468,
   "sha256": "d3a764e254ebcdbdfcaef1f6e6a223dd26299acba8a5f7f0d2d6e3da383801a5",
   "served": true,
   "file": "https://storm-charles.promptugal.news/app/login/id.js",
   "commits": {
    "n": 1,
    "first_by": "incident.identity@web-summit.dinis",
    "first_at": "2026-11-10T23:47:18Z",
    "last_by": "incident.identity@web-summit.dinis",
    "last_at": "2026-11-10T23:47:18Z",
    "last_commit": "f0369a0290",
    "agents": [
     "incident.identity@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:47:18Z",
   "linked_from": []
  },
  {
   "path": "app/login/lane.js",
   "kind": "app",
   "title": "lane.js",
   "what": "lane.js: what travels between Dinis's browser and the conductor (the design is /SECURITY.md, sections b and c). feedback pki/message.js compose (signed by his key; to = the conductor's signing fingerprint; expires) → sealMessage (sgit's hybrid v2 envelope, to …",
   "by": "",
   "by_from": "",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 4733,
   "sha256": "3a1bb91ab3ba1c659d8d0d867c8f677ae63cab9220e4e2461009b6b0444ac483",
   "served": true,
   "file": "https://storm-charles.promptugal.news/app/login/lane.js",
   "commits": {
    "n": 1,
    "first_by": "incident.identity@web-summit.dinis",
    "first_at": "2026-11-10T23:47:18Z",
    "last_by": "incident.identity@web-summit.dinis",
    "last_at": "2026-11-10T23:47:18Z",
    "last_commit": "f0369a0290",
    "agents": [
     "incident.identity@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:47:18Z",
   "linked_from": []
  },
  {
   "path": "app/login/login.css",
   "kind": "app",
   "title": "login.css",
   "what": "The login and the feedback box (incident.identity@). Tokens from app/site.css only (design/README.md): no colour is",
   "by": "",
   "by_from": "",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 3741,
   "sha256": "cb0d41dcc69a3c577fcc3dfc6a1ecb2b33d123d2f7c91cdf012b44b1484c6921",
   "served": true,
   "file": "https://storm-charles.promptugal.news/app/login/login.css",
   "commits": {
    "n": 2,
    "first_by": "incident.identity@web-summit.dinis",
    "first_at": "2026-11-10T23:47:18Z",
    "last_by": "incident.identity@web-summit.dinis",
    "last_at": "2026-11-10T23:53:31Z",
    "last_commit": "6360a5f3c7",
    "agents": [
     "incident.identity@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:53:31Z",
   "linked_from": []
  },
  {
   "path": "app/login/package.json",
   "kind": "app",
   "title": "package.json",
   "what": "",
   "by": "",
   "by_from": "",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 171,
   "sha256": "244722735de7940ae4d4ad520247493239a064e7fd06ab4044c1ecec6ce12da7",
   "served": true,
   "file": "https://storm-charles.promptugal.news/app/login/package.json",
   "commits": {
    "n": 1,
    "first_by": "incident.identity@web-summit.dinis",
    "first_at": "2026-11-10T23:47:18Z",
    "last_by": "incident.identity@web-summit.dinis",
    "last_at": "2026-11-10T23:47:18Z",
    "last_commit": "f0369a0290",
    "agents": [
     "incident.identity@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:47:18Z",
   "linked_from": []
  },
  {
   "path": "app/login/pki/PIN.json",
   "kind": "app",
   "title": "PIN.json",
   "what": "Copies of pki.sgit.ai's modules, byte for byte, read on 10 November 2026 (23:30 UTC) by incident.identity@web-summit.dinis. Not edited here: to change one, change it at its source and pin the new copy. tools/lane-test.mjs checks each sha256.",
   "by": "incident.identity@web-summit.dinis",
   "by_from": "its own fields",
   "dated": "2026-11-10T23:55:00Z",
   "dated_from": "\"updated\"",
   "made_from": [
    "tools/lane-test.mjs"
   ],
   "links_to": [],
   "external_links": 0,
   "bytes": 1997,
   "sha256": "d93100940a58a4d6220b2699c3f72b31ea8bfbc3086c4b92af96b80972b71f0c",
   "served": true,
   "file": "https://storm-charles.promptugal.news/app/login/pki/PIN.json",
   "commits": {
    "n": 2,
    "first_by": "incident.identity@web-summit.dinis",
    "first_at": "2026-11-10T23:41:00Z",
    "last_by": "incident.identity@web-summit.dinis",
    "last_at": "2026-11-10T23:53:31Z",
    "last_commit": "6360a5f3c7",
    "agents": [
     "incident.identity@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:53:31Z",
   "linked_from": [
    "SECURITY.md",
    "account/account.md",
    "library/reading/standard.md"
   ]
  },
  {
   "path": "app/login/pki/door.js",
   "kind": "app",
   "title": "door.js",
   "what": "door.js: from a passkey's PRF bytes (or a recovery code) to a door vault's key, the way the article says. Moved out of passkey/lab.js so that the vault pane (assets/vault-pane/) and the lab derive the same door from the same bytes; the lab re-exports …",
   "by": "",
   "by_from": "",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 9223,
   "sha256": "0f45abf09f4af0150660a3beeb7402424d26301eb1f80d3b02a9ad6c36974c5d",
   "served": true,
   "file": "https://storm-charles.promptugal.news/app/login/pki/door.js",
   "commits": {
    "n": 1,
    "first_by": "incident.identity@web-summit.dinis",
    "first_at": "2026-11-10T23:41:00Z",
    "last_by": "incident.identity@web-summit.dinis",
    "last_at": "2026-11-10T23:41:00Z",
    "last_commit": "588962e3ce",
    "agents": [
     "incident.identity@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:41:00Z",
   "linked_from": []
  },
  {
   "path": "app/login/pki/keys.js",
   "kind": "app",
   "title": "keys.js",
   "what": "keys.js: the key material of the directory of people, in the browser and in Node, byte-compatible with sgit pki. Everything here is Web Crypto and nothing else. Each construction was checked against sgit-ai v0.23.0 (the PKI__Crypto and PKI__Key_Store classes …",
   "by": "",
   "by_from": "",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 19688,
   "sha256": "7c97cbd9dab3c3969b6bed4f24bce211c0406cee15c5a88458fec9fc5d48d143",
   "served": true,
   "file": "https://storm-charles.promptugal.news/app/login/pki/keys.js",
   "commits": {
    "n": 1,
    "first_by": "incident.identity@web-summit.dinis",
    "first_at": "2026-11-10T23:41:00Z",
    "last_by": "incident.identity@web-summit.dinis",
    "last_at": "2026-11-10T23:41:00Z",
    "last_commit": "588962e3ce",
    "agents": [
     "incident.identity@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:41:00Z",
   "linked_from": []
  },
  {
   "path": "app/login/pki/local.js",
   "kind": "app",
   "title": "local.js",
   "what": "local.js: an account kept in this browser only, opened by the passkey alone. No access key, no vault, no passphrase. The passkey's PRF bytes already give a door (door.js). When no vault answers at that door, the same seed gives a key for this browser's own …",
   "by": "",
   "by_from": "",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 3981,
   "sha256": "87b5defae8a4860610e2034b07037136642635976d9b1634e926b40ffb91e78b",
   "served": true,
   "file": "https://storm-charles.promptugal.news/app/login/pki/local.js",
   "commits": {
    "n": 1,
    "first_by": "incident.identity@web-summit.dinis",
    "first_at": "2026-11-10T23:41:00Z",
    "last_by": "incident.identity@web-summit.dinis",
    "last_at": "2026-11-10T23:41:00Z",
    "last_commit": "588962e3ce",
    "agents": [
     "incident.identity@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:41:00Z",
   "linked_from": []
  },
  {
   "path": "app/login/pki/message.js",
   "kind": "app",
   "title": "message.js",
   "what": "message.js: a message to someone in the register, as a link and a QR code, or into their inbox; and an invitation. A message is JSON, signed by the sender when the sender has a key, then sealed in sgit's hybrid v2 envelope to the recipient's encryption key: …",
   "by": "",
   "by_from": "",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 15667,
   "sha256": "ad91e33ab9a711cad431bfc92f5610c5fe131e828a8e99450dbeccb1535b3b49",
   "served": true,
   "file": "https://storm-charles.promptugal.news/app/login/pki/message.js",
   "commits": {
    "n": 1,
    "first_by": "incident.identity@web-summit.dinis",
    "first_at": "2026-11-10T23:41:00Z",
    "last_by": "incident.identity@web-summit.dinis",
    "last_at": "2026-11-10T23:41:00Z",
    "last_commit": "588962e3ce",
    "agents": [
     "incident.identity@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:41:00Z",
   "linked_from": []
  },
  {
   "path": "app/site.css",
   "kind": "app",
   "title": "site.css",
   "what": "storm-charles.promptugal.news: one stylesheet, no dependencies. Tokens first; the dashboard (app/storm.js) uses the same names.",
   "by": "",
   "by_from": "",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 37755,
   "sha256": "92dfe8801909e5616392a9511a4ce74e68cb3f6d628ae7daca313f043083f25a",
   "served": true,
   "file": "https://storm-charles.promptugal.news/app/site.css",
   "commits": null,
   "changed": "",
   "linked_from": [
    "agents/JOBS.md",
    "agents/designer/policy.md",
    "design/README.md",
    "design/round-13.md",
    "design/round-17.md"
   ]
  },
  {
   "path": "app/storm.js",
   "kind": "app",
   "title": "storm.js",
   "what": "The incident dashboard (incident.dev@web-summit.dinis, 10 November 2026, WS-214, at Dinis's word: \"a full-blown new dashboard\" that leverages Silvio's and Angelo's work). It reads the incident's data folder (the page's incident <dir block), the files their …",
   "by": "incident.dev@web-summit.dinis",
   "by_from": "header",
   "dated": "2026-11-10",
   "dated_from": "header",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 40824,
   "sha256": "1df9e9eddfc24a304947f20a4a4a21d50195587c326db23c5b661d8c782f1ba2",
   "served": true,
   "file": "https://storm-charles.promptugal.news/app/storm.js",
   "commits": null,
   "changed": "2026-11-10",
   "linked_from": [
    "REALITY.md",
    "agents/JOBS.md",
    "agents/conductor/policy.md",
    "agents/dev/policy.md",
    "agents/meteorologist/policy.md",
    "agents/researcher/policy.md",
    "design/round-12.md",
    "design/round-13.md",
    "design/round-15.md",
    "design/round-3.md",
    "design/round-4.md"
   ]
  },
  {
   "path": "contribute.md",
   "kind": "outreach",
   "title": "Contribute: add or correct a fact",
   "what": "This site records Storm Charles (Lisbon, 10 to 12 November 2026) from public sources: what was decided or warned, by whom, when, and where we read it. If you are a journalist, a specialist (meteorology, civil protection, transport, event safety) or a reader, …",
   "by": "",
   "by_from": "",
   "dated": "",
   "dated_from": "",
   "made_from": [
    "https://prociv.gov.pt/",
    "https://www.ipma.pt/"
   ],
   "links_to": [],
   "external_links": 4,
   "bytes": 5905,
   "sha256": "9bc590e03b2bf6aa8e1cc15f95c32690f58d01fd836207875c50b52a18121726",
   "served": true,
   "file": "https://storm-charles.promptugal.news/contribute.md",
   "page": "https://storm-charles.promptugal.news/contribute.html",
   "commits": {
    "n": 1,
    "first_by": "incident.media@web-summit.dinis",
    "first_at": "2026-11-10T23:58:08Z",
    "last_by": "incident.media@web-summit.dinis",
    "last_at": "2026-11-10T23:58:08Z",
    "last_commit": "96ff00c4d1",
    "agents": [
     "incident.media@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:58:08Z",
   "linked_from": [
    "agents/JOBS.md",
    "agents/media/policy.md",
    "research/media/README.md",
    "research/media/ranking.md"
   ]
  },
  {
   "path": "data/agents/commits.json",
   "kind": "dataset",
   "title": "commits.json",
   "what": "The last commits on dev of this repository: who pushed what, when, and for whom (Agent: and For: trailers), and each pair's count. Written by tools/agents-commits.mjs from git log; a snapshot as of read_at (the live page reads GitHub's public API first and …",
   "by": "incident.observability@web-summit.dinis",
   "by_from": "its own fields",
   "dated": "2026-11-11T00:17:37Z",
   "dated_from": "\"updated\"",
   "made_from": [
    "tools/agents-commits.mjs"
   ],
   "links_to": [],
   "external_links": 0,
   "bytes": 62168,
   "sha256": "da921c5e51a82fa9afaae6a591ed966f82d66a0c44f73e8a92aa62b3a3c19830",
   "served": true,
   "file": "https://storm-charles.promptugal.news/data/agents/commits.json",
   "commits": null,
   "changed": "2026-11-11T00:17:37Z",
   "linked_from": [
    "app/agents/about.md"
   ]
  },
  {
   "path": "data/agents/index.json",
   "kind": "dataset",
   "title": "index.json",
   "what": "Every agent of the incident team behind storm-charles.promptugal.news: its job (agents/JOBS.md), what it says it is doing, has done, will do next and asks for (agents/<role>/status.json; asks starting \"Dinis:\" are for the operator), and its public key …",
   "by": "incident.observability@web-summit.dinis",
   "by_from": "its own fields",
   "dated": "2026-11-11T00:17:37Z",
   "dated_from": "\"updated\"",
   "made_from": [
    "agents/JOBS.md",
    "data/keys.json",
    "tools/agents-index.mjs"
   ],
   "links_to": [],
   "external_links": 0,
   "bytes": 65163,
   "sha256": "894b6d869b9e1b57ece202a814dea09e517e4b1a658bb31990662de6f4dc07fe",
   "served": true,
   "file": "https://storm-charles.promptugal.news/data/agents/index.json",
   "commits": null,
   "changed": "2026-11-11T00:17:37Z",
   "linked_from": [
    "app/agents/about.md"
   ]
  },
  {
   "path": "data/agents/obs.json",
   "kind": "dataset",
   "title": "obs.json",
   "what": "Where app/agents/obs.js sends page views and reads, when it is switched on. Public on purpose: an append token can only write to its lane, and the key can only encrypt. Off until a vault with append lanes exists for this site and a drain key that outlives a …",
   "by": "incident.observability@web-summit.dinis",
   "by_from": "its own fields",
   "dated": "2026-11-10T23:54:49Z",
   "dated_from": "\"updated\"",
   "made_from": [
    "agents/observability/status.json"
   ],
   "links_to": [],
   "external_links": 0,
   "bytes": 714,
   "sha256": "9cb3b6085f271910ff54a5bc13b7f1d61fb06ae7ee195f015cdc1351b62b86b7",
   "served": true,
   "file": "https://storm-charles.promptugal.news/data/agents/obs.json",
   "commits": {
    "n": 1,
    "first_by": "incident.observability@web-summit.dinis",
    "first_at": "2026-11-10T23:54:50Z",
    "last_by": "incident.observability@web-summit.dinis",
    "last_at": "2026-11-10T23:54:50Z",
    "last_commit": "3565f28d74",
    "agents": [
     "incident.observability@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:54:50Z",
   "linked_from": [
    "app/agents/about.md"
   ]
  },
  {
   "path": "data/graph/README.md",
   "kind": "dataset doc",
   "title": "The graph of the storm, and its ontology",
   "what": "One graph of Storm Charles: who decided and warned what, when, what was reported, where it was read, and which agent keeps which dataset. Kept by incident.graph@web-summit.dinis. Built from the incident's JSON files by tools/graph-build.mjs, never by hand. …",
   "by": "incident.graph@web-summit.dinis",
   "by_from": "header",
   "dated": "",
   "dated_from": "",
   "made_from": [
    "tools/graph-build.mjs",
    "https://prociv.gov.pt/",
    "https://www.ipma.pt/"
   ],
   "links_to": [
    "data/graph/ontology.json",
    "data/graph/queries.json",
    "data/graph/ref/ipma-areas.json",
    "data/graph/storm-elsewhere.json",
    "data/graph/storm.json",
    "data/graph/tables/actors.json",
    "data/graph/tables/decisions.json",
    "data/graph/tables/signals.json",
    "data/graph/tables/sources.json",
    "data/graph/tables/timeline.json",
    "data/graph/tables/warnings.json",
    "data/keys.json",
    "research/weather-sites/sites.json",
    "tools/graph-build.mjs"
   ],
   "external_links": 2,
   "bytes": 5995,
   "sha256": "eacfdc3665d7ceaf85c59eba56a8f88aae12437f469ad03de6687515a22b923e",
   "served": true,
   "file": "https://storm-charles.promptugal.news/data/graph/README.md",
   "page": "https://storm-charles.promptugal.news/data/graph/",
   "commits": {
    "n": 4,
    "first_by": "incident.graph@web-summit.dinis",
    "first_at": "2026-11-10T23:44:08Z",
    "last_by": "incident.graph@web-summit.dinis",
    "last_at": "2026-11-11T00:00:52Z",
    "last_commit": "39f465a097",
    "agents": [
     "incident.graph@web-summit.dinis"
    ]
   },
   "changed": "2026-11-11T00:00:52Z",
   "linked_from": [
    "app/graph/README.md",
    "data/graph/ontology.json",
    "data/query/README.md"
   ]
  },
  {
   "path": "data/graph/ontology.json",
   "kind": "dataset",
   "title": "ontology.json",
   "what": "The ontology of an incident on this site: eight kinds of thing and eight relations, small enough to explain on one page (README.md beside this file). tools/graph-build.mjs reads it, builds data/graph/storm.json and data/graph/tables/*.json from the incident's …",
   "by": "incident.graph@web-summit.dinis",
   "by_from": "its own fields",
   "dated": "",
   "dated_from": "",
   "made_from": [
    "data/graph/README.md",
    "tools/graph-build.mjs",
    "data/graph/storm.json"
   ],
   "links_to": [],
   "external_links": 0,
   "bytes": 6828,
   "sha256": "1cd83578ad362c2b245ea3deb0f9f7610901326b20c9c7141da6ba8ac3e77676",
   "served": true,
   "file": "https://storm-charles.promptugal.news/data/graph/ontology.json",
   "commits": {
    "n": 2,
    "first_by": "incident.graph@web-summit.dinis",
    "first_at": "2026-11-10T23:44:08Z",
    "last_by": "incident.graph@web-summit.dinis",
    "last_at": "2026-11-10T23:58:02Z",
    "last_commit": "6efae2c71a",
    "agents": [
     "incident.graph@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:58:02Z",
   "linked_from": [
    "agents/JOBS.md",
    "agents/graph/policy.md",
    "data/graph/README.md",
    "data/graph/storm.json"
   ]
  },
  {
   "path": "data/graph/queries.json",
   "kind": "dataset",
   "title": "queries.json",
   "what": "The worked queries of the query page (/data/query/): each answers a real question about Storm Charles from the tables built by tools/graph-build.mjs. SQL for SQLite. Kept by incident.graph@web-summit.dinis. Not a warning service.",
   "by": "incident.graph@web-summit.dinis",
   "by_from": "its own fields",
   "dated": "",
   "dated_from": "",
   "made_from": [
    "tools/graph-build.mjs"
   ],
   "links_to": [],
   "external_links": 0,
   "bytes": 6622,
   "sha256": "5cdf84c39e88a5d2d884348d77fee358b7f6904a7e7d5a40d08b5ee8e1b24912",
   "served": true,
   "file": "https://storm-charles.promptugal.news/data/graph/queries.json",
   "commits": {
    "n": 3,
    "first_by": "incident.graph@web-summit.dinis",
    "first_at": "2026-11-10T23:49:40Z",
    "last_by": "incident.graph@web-summit.dinis",
    "last_at": "2026-11-11T00:00:52Z",
    "last_commit": "39f465a097",
    "agents": [
     "incident.graph@web-summit.dinis"
    ]
   },
   "changed": "2026-11-11T00:00:52Z",
   "linked_from": [
    "data/graph/README.md",
    "data/query/README.md"
   ]
  },
  {
   "path": "data/graph/ref/ipma-areas.json",
   "kind": "dataset",
   "title": "ipma-areas.json",
   "what": "IPMA's warning areas by code (idAreaAviso), from IPMA's list of districts and islands: the first place listed for each area gives its name and coordinates. Reference data for the graph's Place nodes. Made by tools/graph-places.mjs.",
   "by": "",
   "by_from": "",
   "dated": "",
   "dated_from": "",
   "made_from": [
    "https://api.ipma.pt/open-data/distrits-islands.json",
    "tools/graph-places.mjs"
   ],
   "links_to": [],
   "external_links": 0,
   "bytes": 2863,
   "sha256": "d9ded82f014ee574ff479e3ec10f1e2f5da09fed3c03e6a15396058dbff5b4c0",
   "served": true,
   "file": "https://storm-charles.promptugal.news/data/graph/ref/ipma-areas.json",
   "commits": {
    "n": 1,
    "first_by": "incident.graph@web-summit.dinis",
    "first_at": "2026-11-10T23:44:08Z",
    "last_by": "incident.graph@web-summit.dinis",
    "last_at": "2026-11-10T23:44:08Z",
    "last_commit": "9b42a2e674",
    "agents": [
     "incident.graph@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:44:08Z",
   "linked_from": [
    "data/graph/README.md"
   ]
  },
  {
   "path": "data/graph/storm-elsewhere.json",
   "kind": "dataset",
   "title": "storm-elsewhere.json",
   "what": "The rest of the graph of Storm Charles, Lisbon: Wednesday 11 November 2026: IPMA's red and orange warnings in force outside the Lisbon district, and those districts. Same shape as data/graph/storm.json; edges here point to nodes there (actor:ipma, …",
   "by": "",
   "by_from": "",
   "dated": "",
   "dated_from": "",
   "made_from": [
    "data/graph/storm.json",
    "tools/graph-build.mjs"
   ],
   "links_to": [],
   "external_links": 0,
   "bytes": 69077,
   "sha256": "1ca15866f354e58270c897ac2b64c9ef6ea8872ffe62e9f636296e5708511d44",
   "served": true,
   "file": "https://storm-charles.promptugal.news/data/graph/storm-elsewhere.json",
   "commits": null,
   "changed": "",
   "linked_from": [
    "data/graph/README.md",
    "data/query/README.md"
   ]
  },
  {
   "path": "data/graph/storm.json",
   "kind": "dataset",
   "title": "storm.json",
   "what": "One graph of Storm Charles, Lisbon: Wednesday 11 November 2026: actors, decisions, warnings, signals, sources, places, datasets and agents, built from the incident's JSON files by tools/graph-build.mjs (never by hand). Every node and edge carries label (fact, …",
   "by": "",
   "by_from": "",
   "dated": "",
   "dated_from": "",
   "made_from": [
    "tools/graph-build.mjs",
    "data/graph/ontology.json"
   ],
   "links_to": [],
   "external_links": 0,
   "bytes": 205890,
   "sha256": "f527b7f000eb623d0b838663177f39ed300e7fb624987dbc0de1bbde265861b2",
   "served": true,
   "file": "https://storm-charles.promptugal.news/data/graph/storm.json",
   "commits": null,
   "changed": "",
   "linked_from": [
    "app/graph/README.md",
    "data/graph/README.md",
    "data/graph/ontology.json",
    "data/graph/storm-elsewhere.json",
    "data/query/README.md"
   ]
  },
  {
   "path": "data/graph/tables/actors.json",
   "kind": "dataset",
   "title": "actors.json",
   "what": "Who decides, warns or reports: bodies, operators, the organiser, outlets (outlets are derived from cited hosts). Built by tools/graph-build.mjs from the incident's JSON; every row carries label, source, read and origin. Not a warning service.",
   "by": "",
   "by_from": "",
   "dated": "",
   "dated_from": "",
   "made_from": [
    "tools/graph-build.mjs"
   ],
   "links_to": [],
   "external_links": 0,
   "bytes": 28217,
   "sha256": "1f7ee02468b2962cc3cf635d19cc510efb850a5b6728c8f7317410ff9e2e39ab",
   "served": true,
   "file": "https://storm-charles.promptugal.news/data/graph/tables/actors.json",
   "commits": null,
   "changed": "",
   "linked_from": [
    "data/graph/README.md",
    "data/query/README.md"
   ]
  },
  {
   "path": "data/graph/tables/decisions.json",
   "kind": "dataset",
   "title": "decisions.json",
   "what": "Decisions and issued warnings: who (by), what, when (at, at_epoch in seconds when known to the minute), status, and what each followed. Built by tools/graph-build.mjs from the incident's JSON; every row carries label, source, read and origin. Not a warning …",
   "by": "",
   "by_from": "",
   "dated": "",
   "dated_from": "",
   "made_from": [
    "tools/graph-build.mjs"
   ],
   "links_to": [],
   "external_links": 0,
   "bytes": 36466,
   "sha256": "132d72e7f5556deafa3c0e949a8c60acaec8088c4aaa38cd32022937820fefa0",
   "served": true,
   "file": "https://storm-charles.promptugal.news/data/graph/tables/decisions.json",
   "commits": null,
   "changed": "",
   "linked_from": [
    "data/graph/README.md",
    "data/query/README.md"
   ]
  },
  {
   "path": "data/graph/tables/signals.json",
   "kind": "dataset",
   "title": "signals.json",
   "what": "The timeline as rows: one per signal, with who published it (publisher) where the source has a URL. Built by tools/graph-build.mjs from the incident's JSON; every row carries label, source, read and origin. Not a warning service.",
   "by": "",
   "by_from": "",
   "dated": "",
   "dated_from": "",
   "made_from": [
    "tools/graph-build.mjs"
   ],
   "links_to": [],
   "external_links": 0,
   "bytes": 33337,
   "sha256": "bb4e44d99cf084677e4ddc0981c9f4fb1819f48645d85074b29f0f6fdd5bd794",
   "served": true,
   "file": "https://storm-charles.promptugal.news/data/graph/tables/signals.json",
   "commits": null,
   "changed": "",
   "linked_from": [
    "data/graph/README.md",
    "data/query/README.md"
   ]
  },
  {
   "path": "data/graph/tables/sources.json",
   "kind": "dataset",
   "title": "sources.json",
   "what": "Every URL read: the researcher's list, every other URL an item cites and the pages covering the storm (coverage: liveblog, explainer, ...; from research/weather-sites), with its publisher, how often it is cited and the earliest item citing it. Built by …",
   "by": "",
   "by_from": "",
   "dated": "",
   "dated_from": "",
   "made_from": [
    "tools/graph-build.mjs"
   ],
   "links_to": [],
   "external_links": 0,
   "bytes": 70763,
   "sha256": "8082d40977818df49a0b396e36a47e1153ec153ddd25f5413cfbc9a57effd43a",
   "served": true,
   "file": "https://storm-charles.promptugal.news/data/graph/tables/sources.json",
   "commits": null,
   "changed": "",
   "linked_from": [
    "data/graph/README.md",
    "data/query/README.md"
   ]
  },
  {
   "path": "data/graph/tables/timeline.json",
   "kind": "dataset",
   "title": "timeline.json",
   "what": "The lead-time line: every warning and decision with a time known to the minute, in order: hours since the previous one, since the first, before the first red warning starts in Lisbon (h_before_red_starts) and before its own effect starts (h_before_effect). …",
   "by": "",
   "by_from": "",
   "dated": "",
   "dated_from": "",
   "made_from": [
    "tools/graph-build.mjs"
   ],
   "links_to": [],
   "external_links": 0,
   "bytes": 15124,
   "sha256": "55766b90acba608cbda7c6ced2b19e376182fb2535a95e2452cd8d03a21e1a13",
   "served": true,
   "file": "https://storm-charles.promptugal.news/data/graph/tables/timeline.json",
   "commits": null,
   "changed": "",
   "linked_from": [
    "app/graph/README.md",
    "data/graph/README.md",
    "data/query/README.md"
   ]
  },
  {
   "path": "data/graph/tables/warnings.json",
   "kind": "dataset",
   "title": "warnings.json",
   "what": "Warnings: issued (when made or first read), in_force (type, level, area, start, end: IPMA), cap (IPMA's own CAP messages for Lisbon: at is when IPMA sent it; an Update names the message it replaces) and history (the meteorologist's record of when each was …",
   "by": "",
   "by_from": "",
   "dated": "",
   "dated_from": "",
   "made_from": [
    "tools/graph-build.mjs"
   ],
   "links_to": [],
   "external_links": 0,
   "bytes": 77529,
   "sha256": "af4bda9267e289c260277f70141983d2838600721acc612149453de8398c2472",
   "served": true,
   "file": "https://storm-charles.promptugal.news/data/graph/tables/warnings.json",
   "commits": null,
   "changed": "",
   "linked_from": [
    "data/graph/README.md",
    "data/query/README.md"
   ]
  },
  {
   "path": "data/keys.json",
   "kind": "dataset",
   "title": "keys.json",
   "what": "Public keys of the agents that write this repository. Public halves only: no private key, vault key or token is ever listed here. Each entry was added by the agent that made it, in its own session; the push is its authorisation. Session keys end with their …",
   "by": "",
   "by_from": "",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 14680,
   "sha256": "bfa650388f5ed09be4b3121fa762bca756356269cb11e2cb391e68a11344d7cd",
   "served": true,
   "file": "https://storm-charles.promptugal.news/data/keys.json",
   "commits": {
    "n": 8,
    "first_by": "incident.conductor@web-summit.dinis",
    "first_at": "2026-11-10T21:14:33Z",
    "last_by": "incident.graph@web-summit.dinis",
    "last_at": "2026-11-10T23:44:08Z",
    "last_commit": "9b42a2e674",
    "agents": [
     "incident.conductor@web-summit.dinis",
     "incident.designer@web-summit.dinis",
     "incident.graph@web-summit.dinis",
     "incident.identity@web-summit.dinis",
     "incident.librarian@web-summit.dinis",
     "incident.media@web-summit.dinis",
     "incident.observability@web-summit.dinis",
     "incident.weatherwatch@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:44:08Z",
   "linked_from": [
    "CLAUDE.md",
    "PIPELINE.md",
    "SECURITY.md",
    "account/account.md",
    "agents/JOBS.md",
    "agents/conductor/policy.md",
    "agents/designer/policy.md",
    "agents/dev/policy.md",
    "agents/graph/policy.md",
    "agents/identity/policy.md",
    "agents/librarian/policy.md",
    "agents/media/policy.md",
    "agents/meteorologist/policy.md",
    "agents/observability/policy.md",
    "agents/researcher/policy.md",
    "agents/weatherwatch/policy.md",
    "app/agents/about.md",
    "data/agents/index.json",
    "data/graph/README.md",
    "library/abp.json",
    "library/glossary.md",
    "library/reading/standard.md"
   ]
  },
  {
   "path": "data/lanes.json",
   "kind": "dataset",
   "title": "lanes.json",
   "what": "The lanes between Dinis Cruz and incident.conductor@web-summit.dinis (incident.identity@web-summit.dinis, 10 November 2026; the design is SECURITY.md). Public on purpose: an append token can only write to its lane, and the recipient's key can only encrypt. No …",
   "by": "incident.identity@web-summit.dinis",
   "by_from": "its own fields",
   "dated": "2026-11-10T23:55:00Z",
   "dated_from": "\"updated\"",
   "made_from": [
    "SECURITY.md",
    "agents/identity/status.json"
   ],
   "links_to": [],
   "external_links": 0,
   "bytes": 1141,
   "sha256": "b0589cc876e283b5a3837ba9e9749e79dd3e8a58de7c9fcd8073cf270de172d0",
   "served": true,
   "file": "https://storm-charles.promptugal.news/data/lanes.json",
   "commits": {
    "n": 2,
    "first_by": "incident.identity@web-summit.dinis",
    "first_at": "2026-11-10T23:47:18Z",
    "last_by": "incident.identity@web-summit.dinis",
    "last_at": "2026-11-10T23:53:31Z",
    "last_commit": "6360a5f3c7",
    "agents": [
     "incident.identity@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:53:31Z",
   "linked_from": [
    "SECURITY.md",
    "account/account.md",
    "agents/JOBS.md",
    "agents/identity/policy.md"
   ]
  },
  {
   "path": "data/query/README.md",
   "kind": "dataset doc",
   "title": "Query the storm",
   "what": "A database in your browser over Storm Charles's data: SQLite (WebAssembly) on the decisions, warnings, signals, sources and actors, each row with its source and the time read. No server; nothing is uploaded.",
   "by": "incident.graph@web-summit.dinis",
   "by_from": "header",
   "dated": "",
   "dated_from": "",
   "made_from": [
    "https://newsroom.sgit.ai/databases/sql.html",
    "https://sql.js.org/"
   ],
   "links_to": [
    "data/graph/README.md",
    "data/graph/queries.json",
    "data/graph/storm-elsewhere.json",
    "data/graph/storm.json",
    "data/graph/tables/actors.json",
    "data/graph/tables/decisions.json",
    "data/graph/tables/signals.json",
    "data/graph/tables/sources.json",
    "data/graph/tables/timeline.json",
    "data/graph/tables/warnings.json"
   ],
   "external_links": 4,
   "bytes": 9765,
   "sha256": "4978becb247acd08e97a1a4c01003ac244de1599e8aa2dac9c8be95c7711fe87",
   "served": true,
   "file": "https://storm-charles.promptugal.news/data/query/README.md",
   "page": "https://storm-charles.promptugal.news/data/query/",
   "commits": null,
   "changed": "",
   "linked_from": []
  },
  {
   "path": "design/README.md",
   "kind": "design",
   "title": "The design of this site: tokens, parts, rules",
   "what": "Kept by incident.designer@web-summit.dinis. For every agent that builds a page here: use these and your page will match the rest, in light and dark, on a phone and a desk. One stylesheet, no dependencies: app/site.css. Rounds: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, …",
   "by": "incident.designer@web-summit.dinis",
   "by_from": "header",
   "dated": "",
   "dated_from": "",
   "made_from": [
    "app/site.css",
    "design/round-1.md",
    "design/round-10.md",
    "design/round-11.md",
    "design/round-12.md",
    "design/round-13.md",
    "design/round-14.md",
    "design/round-15.md",
    "design/round-16.md",
    "design/round-17.md",
    "design/round-2.md",
    "design/round-3.md",
    "design/round-4.md",
    "design/round-5.md",
    "design/round-6.md",
    "design/round-7.md",
    "design/round-8.md",
    "design/round-9.md"
   ],
   "links_to": [
    "app/site.css",
    "design/round-1.md",
    "design/round-10.md",
    "design/round-11.md",
    "design/round-12.md",
    "design/round-13.md",
    "design/round-14.md",
    "design/round-15.md",
    "design/round-16.md",
    "design/round-17.md",
    "design/round-2.md",
    "design/round-3.md",
    "design/round-4.md",
    "design/round-5.md",
    "design/round-6.md",
    "design/round-7.md",
    "design/round-8.md",
    "design/round-9.md",
    "research/weather-sites/imagery.json"
   ],
   "external_links": 0,
   "bytes": 3610,
   "sha256": "b1d1d9db2425d4e760b5ca32c1909eca3b1d11ae6ba285335afc0debf4ba9883",
   "served": true,
   "file": "https://storm-charles.promptugal.news/design/README.md",
   "page": "https://storm-charles.promptugal.news/design/",
   "commits": null,
   "changed": "",
   "linked_from": [
    "CLAUDE.md",
    "design/round-13.md",
    "design/round-15.md",
    "design/round-17.md",
    "design/round-4.md"
   ]
  },
  {
   "path": "design/round-1.md",
   "kind": "design",
   "title": "Design round 1: the home page as the weather presenter",
   "what": "By incident.designer@web-summit.dinis, 10 November 2026, 23:30 to 23:41 UTC. Screenshots were taken (1280 and 390 wide, light and dark) and are described here, not committed.",
   "by": "incident.designer@web-summit.dinis",
   "by_from": "header",
   "dated": "2026-11-10",
   "dated_from": "header",
   "made_from": [],
   "links_to": [
    "admin/build/build.mjs"
   ],
   "external_links": 0,
   "bytes": 3504,
   "sha256": "1d98e2500f1c8e20d4688b5219d42c086c57554d85443a84c2889641e0046ac1",
   "served": true,
   "file": "https://storm-charles.promptugal.news/design/round-1.md",
   "page": "https://storm-charles.promptugal.news/design/round-1.html",
   "commits": {
    "n": 2,
    "first_by": "incident.designer@web-summit.dinis",
    "first_at": "2026-11-10T23:40:49Z",
    "last_by": "incident.designer@web-summit.dinis",
    "last_at": "2026-11-10T23:43:36Z",
    "last_commit": "e4ea50f1b9",
    "agents": [
     "incident.designer@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:43:36Z",
   "linked_from": [
    "design/README.md"
   ]
  },
  {
   "path": "design/round-10.md",
   "kind": "design",
   "title": "Design round 10: MeteoAlarm's terms met on the page; the navigation in five sections",
   "what": "By incident.designer@web-summit.dinis, 11 November 2026, 00:01 to 00:01 UTC. From incident.conductor@'s note of 23:59 (incident.weatherwatch@'s check, research/weather-sites/meteoalarm-check.json). Screenshots of the masthead at 1280 and 390, described, not …",
   "by": "incident.designer@web-summit.dinis",
   "by_from": "header",
   "dated": "2026-11-11",
   "dated_from": "header",
   "made_from": [
    "research/weather-sites/meteoalarm-check.json"
   ],
   "links_to": [
    "research/weather-sites/meteoalarm-check.json"
   ],
   "external_links": 1,
   "bytes": 1797,
   "sha256": "ca29e31d0f1f69dc6083c63104080af240ca794ab7f6b68fe79fecedb3a0a925",
   "served": true,
   "file": "https://storm-charles.promptugal.news/design/round-10.md",
   "page": "https://storm-charles.promptugal.news/design/round-10.html",
   "commits": {
    "n": 1,
    "first_by": "incident.designer@web-summit.dinis",
    "first_at": "2026-11-11T00:01:50Z",
    "last_by": "incident.designer@web-summit.dinis",
    "last_at": "2026-11-11T00:01:50Z",
    "last_commit": "50f9e41f79",
    "agents": [
     "incident.designer@web-summit.dinis"
    ]
   },
   "changed": "2026-11-11T00:01:50Z",
   "linked_from": [
    "design/README.md"
   ]
  },
  {
   "path": "design/round-11.md",
   "kind": "design",
   "title": "Design round 11: the district grid; the Decided band folds; the small print on every page",
   "what": "By incident.designer@web-summit.dinis, 11 November 2026, 00:02 to 00:03 UTC. From incident.conductor@'s note of 00:02. Screenshots of the grid at 1280 (light) and 390 (dark), described, not committed.",
   "by": "incident.designer@web-summit.dinis",
   "by_from": "header",
   "dated": "2026-11-11",
   "dated_from": "header",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 1894,
   "sha256": "424e28cb093721e648d98127a647d16f46189e8f4c14ff10b9c1d69dadd0b9f0",
   "served": true,
   "file": "https://storm-charles.promptugal.news/design/round-11.md",
   "page": "https://storm-charles.promptugal.news/design/round-11.html",
   "commits": null,
   "changed": "2026-11-11",
   "linked_from": [
    "design/README.md"
   ]
  },
  {
   "path": "design/round-12.md",
   "kind": "design",
   "title": "Design round 12: before and after now; a shorter first screen",
   "what": "By incident.designer@web-summit.dinis, 11 November 2026, 00:05 to 00:05 UTC. Screenshots at 1280 with the browser's clock set to Wednesday 13:20 UTC (to see the day in progress), and the masthead at 390; described, not committed.",
   "by": "incident.designer@web-summit.dinis",
   "by_from": "header",
   "dated": "2026-11-11",
   "dated_from": "header",
   "made_from": [],
   "links_to": [
    "app/storm.js"
   ],
   "external_links": 0,
   "bytes": 1646,
   "sha256": "97f1e76f2583386708407b2b1082269964cfb41bbfb9e6a03748666b67426158",
   "served": true,
   "file": "https://storm-charles.promptugal.news/design/round-12.md",
   "page": "https://storm-charles.promptugal.news/design/round-12.html",
   "commits": null,
   "changed": "2026-11-11",
   "linked_from": [
    "design/README.md"
   ]
  },
  {
   "path": "design/round-13.md",
   "kind": "design",
   "title": "Design round 13: the dashboard's headings, and the page on paper",
   "what": "By incident.designer@web-summit.dinis, 11 November 2026, 00:07 to 00:07 UTC. A full-page screenshot of the dashboard at 1280 was read first; described, not committed.",
   "by": "incident.designer@web-summit.dinis",
   "by_from": "header",
   "dated": "2026-11-11",
   "dated_from": "header",
   "made_from": [],
   "links_to": [
    "app/site.css",
    "app/storm.js",
    "design/README.md"
   ],
   "external_links": 0,
   "bytes": 1942,
   "sha256": "80c06fd5d96f2b30704626c9e7d64fe22b6d01bc632ba8eeebb6deda731c35b2",
   "served": true,
   "file": "https://storm-charles.promptugal.news/design/round-13.md",
   "page": "https://storm-charles.promptugal.news/design/round-13.html",
   "commits": null,
   "changed": "2026-11-11",
   "linked_from": [
    "design/README.md"
   ]
  },
  {
   "path": "design/round-14.md",
   "kind": "design",
   "title": "Design round 14: the timeline as a page",
   "what": "By incident.designer@web-summit.dinis, 11 November 2026, 00:08 to 00:09 UTC. Asked by incident.conductor@ (00:08). Screenshots at 1280 (light) and 390 (dark), described, not committed.",
   "by": "incident.designer@web-summit.dinis",
   "by_from": "header",
   "dated": "2026-11-11",
   "dated_from": "header",
   "made_from": [],
   "links_to": [
    "admin/build/build.mjs",
    "app/design/timeline.js"
   ],
   "external_links": 0,
   "bytes": 2238,
   "sha256": "0b6c81191157a88ececf2eca2c0263c051bf7017d6ae2eded0a31e99cb96d2c6",
   "served": true,
   "file": "https://storm-charles.promptugal.news/design/round-14.md",
   "page": "https://storm-charles.promptugal.news/design/round-14.html",
   "commits": null,
   "changed": "2026-11-11",
   "linked_from": [
    "design/README.md"
   ]
  },
  {
   "path": "design/round-15.md",
   "kind": "design",
   "title": "Design round 15: the dashboard's now line and its weather section",
   "what": "By incident.designer@web-summit.dinis, 11 November 2026, 00:10 to 00:10 UTC. Asked by incident.conductor@ (00:08): app/storm.js is shared with me until incident.dev@'s session can push here. Three small edits, no logic changed.",
   "by": "incident.designer@web-summit.dinis",
   "by_from": "header",
   "dated": "2026-11-11",
   "dated_from": "header",
   "made_from": [
    "app/storm.js"
   ],
   "links_to": [
    "app/storm.js",
    "design/README.md"
   ],
   "external_links": 0,
   "bytes": 1658,
   "sha256": "25dba552cf72cc61a4dfc5b0346cc51108b8bd16ff60174a3b33ed2ca3dd50c0",
   "served": true,
   "file": "https://storm-charles.promptugal.news/design/round-15.md",
   "page": "https://storm-charles.promptugal.news/design/round-15.html",
   "commits": null,
   "changed": "2026-11-11",
   "linked_from": [
    "design/README.md"
   ]
  },
  {
   "path": "design/round-16.md",
   "kind": "design",
   "title": "Design round 16: the data page as cards",
   "what": "By incident.designer@web-summit.dinis, 11 November 2026, 00:12 to 00:12 UTC. Asked by incident.conductor@ (00:08). Screenshot at 1280 (dark), described, not committed.",
   "by": "incident.designer@web-summit.dinis",
   "by_from": "header",
   "dated": "2026-11-11",
   "dated_from": "header",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 1883,
   "sha256": "f9502dc4a86eb18d7eab7867f663cfff24d86cb906fe040ad43a13ca8f2f7e15",
   "served": true,
   "file": "https://storm-charles.promptugal.news/design/round-16.md",
   "page": "https://storm-charles.promptugal.news/design/round-16.html",
   "commits": null,
   "changed": "2026-11-11",
   "linked_from": [
    "design/README.md"
   ]
  },
  {
   "path": "design/round-17.md",
   "kind": "design",
   "title": "Design round 17: the 404 page; the Brief's typography",
   "what": "By incident.designer@web-summit.dinis, 11 November 2026, 00:13 to 00:13 UTC. Asked by incident.conductor@ (00:08). Screenshots at 1280, described, not committed.",
   "by": "incident.designer@web-summit.dinis",
   "by_from": "header",
   "dated": "2026-11-11",
   "dated_from": "header",
   "made_from": [],
   "links_to": [
    "app/site.css",
    "design/README.md"
   ],
   "external_links": 0,
   "bytes": 1400,
   "sha256": "2880497a818bc697084db922574351177ceaf050020ad38e9f72817e685b48bd",
   "served": true,
   "file": "https://storm-charles.promptugal.news/design/round-17.md",
   "page": "https://storm-charles.promptugal.news/design/round-17.html",
   "commits": null,
   "changed": "2026-11-11",
   "linked_from": [
    "design/README.md"
   ]
  },
  {
   "path": "design/round-2.md",
   "kind": "design",
   "title": "Design round 2: the wind on one axis, and where",
   "what": "By incident.designer@web-summit.dinis, 10 November 2026, 23:41 to 23:44 UTC. Screenshots taken (1280 and 390 wide, light and dark), described here, not committed.",
   "by": "incident.designer@web-summit.dinis",
   "by_from": "header",
   "dated": "2026-11-10",
   "dated_from": "header",
   "made_from": [],
   "links_to": [
    "admin/build/build.mjs"
   ],
   "external_links": 0,
   "bytes": 2897,
   "sha256": "4cf454f0b6e9c32059a8f140b5e4de86503adc420779c9a24a43086f381c3ff7",
   "served": true,
   "file": "https://storm-charles.promptugal.news/design/round-2.md",
   "page": "https://storm-charles.promptugal.news/design/round-2.html",
   "commits": {
    "n": 2,
    "first_by": "incident.designer@web-summit.dinis",
    "first_at": "2026-11-10T23:43:36Z",
    "last_by": "incident.designer@web-summit.dinis",
    "last_at": "2026-11-10T23:45:56Z",
    "last_commit": "13e6f06f07",
    "agents": [
     "incident.designer@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:45:56Z",
   "linked_from": [
    "design/README.md"
   ]
  },
  {
   "path": "design/round-3.md",
   "kind": "design",
   "title": "Design round 3: the day in phases (phones first), and the chart's table",
   "what": "By incident.designer@web-summit.dinis, 10 November 2026, about 23:44 to 23:50 UTC. Screenshots at 390 wide, described here, not committed.",
   "by": "incident.designer@web-summit.dinis",
   "by_from": "header",
   "dated": "2026-11-10",
   "dated_from": "header",
   "made_from": [],
   "links_to": [
    "app/storm.js"
   ],
   "external_links": 0,
   "bytes": 2160,
   "sha256": "da04618b681a8c81100752d222100661e11bf97c3c4984deb37439406a2d1fe0",
   "served": true,
   "file": "https://storm-charles.promptugal.news/design/round-3.md",
   "page": "https://storm-charles.promptugal.news/design/round-3.html",
   "commits": {
    "n": 1,
    "first_by": "incident.designer@web-summit.dinis",
    "first_at": "2026-11-10T23:45:56Z",
    "last_by": "incident.designer@web-summit.dinis",
    "last_at": "2026-11-10T23:45:56Z",
    "last_commit": "13e6f06f07",
    "agents": [
     "incident.designer@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:45:56Z",
   "linked_from": [
    "design/README.md"
   ]
  },
  {
   "path": "design/round-4.md",
   "kind": "design",
   "title": "Design round 4: the document pages, and a guide for the other agents",
   "what": "By incident.designer@web-summit.dinis, 10 November 2026, 23:44 to 23:48 UTC.",
   "by": "incident.designer@web-summit.dinis",
   "by_from": "header",
   "dated": "2026-11-10",
   "dated_from": "header",
   "made_from": [],
   "links_to": [
    "app/storm.js",
    "design/README.md"
   ],
   "external_links": 0,
   "bytes": 1467,
   "sha256": "7bd4c98f34dffbaad4c1833678705a2ee4d4725723895bd4b708b0549f4db2cf",
   "served": true,
   "file": "https://storm-charles.promptugal.news/design/round-4.md",
   "page": "https://storm-charles.promptugal.news/design/round-4.html",
   "commits": {
    "n": 2,
    "first_by": "incident.designer@web-summit.dinis",
    "first_at": "2026-11-10T23:47:31Z",
    "last_by": "incident.designer@web-summit.dinis",
    "last_at": "2026-11-10T23:50:50Z",
    "last_commit": "60f146bfe5",
    "agents": [
     "incident.designer@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:50:50Z",
   "linked_from": [
    "design/README.md"
   ]
  },
  {
   "path": "design/round-5.md",
   "kind": "design",
   "title": "Design round 5: the conductor's review of rounds 1 and 2, and the frame",
   "what": "By incident.designer@web-summit.dinis, 10 November 2026, about 23:49 to 23:50 UTC. From incident.conductor@'s two reviews (23:42 and 23:44 UTC). Screenshots at 1280 (dark, switched by the button) and 390 (dark), described, not committed.",
   "by": "incident.designer@web-summit.dinis",
   "by_from": "header",
   "dated": "2026-11-10",
   "dated_from": "header",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 2455,
   "sha256": "e30752bd74fcb75d3fe117be4b4dbcf8ed3ddcbceb6f24f11719fdbc9a8fec1f",
   "served": true,
   "file": "https://storm-charles.promptugal.news/design/round-5.md",
   "page": "https://storm-charles.promptugal.news/design/round-5.html",
   "commits": {
    "n": 1,
    "first_by": "incident.designer@web-summit.dinis",
    "first_at": "2026-11-10T23:50:50Z",
    "last_by": "incident.designer@web-summit.dinis",
    "last_at": "2026-11-10T23:50:50Z",
    "last_commit": "60f146bfe5",
    "agents": [
     "incident.designer@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:50:50Z",
   "linked_from": [
    "design/README.md"
   ]
  },
  {
   "path": "design/round-6.md",
   "kind": "design",
   "title": "Design round 6: decisions and warnings on one time axis",
   "what": "By incident.designer@web-summit.dinis, 10 November 2026, 23:52 to 23:53 UTC. Asked by incident.conductor@ (23:50), from incident.weatherwatch@'s ideas. Screenshots at 1280, light and dark, described, not committed.",
   "by": "incident.designer@web-summit.dinis",
   "by_from": "header",
   "dated": "2026-11-10",
   "dated_from": "header",
   "made_from": [],
   "links_to": [
    "admin/build/build.mjs",
    "design/round-9.md"
   ],
   "external_links": 0,
   "bytes": 2313,
   "sha256": "fad239316d3e6cd49cbff455b7f3313d51159428da36ba760efca217b14ab161",
   "served": true,
   "file": "https://storm-charles.promptugal.news/design/round-6.md",
   "page": "https://storm-charles.promptugal.news/design/round-6.html",
   "commits": {
    "n": 2,
    "first_by": "incident.designer@web-summit.dinis",
    "first_at": "2026-11-10T23:53:36Z",
    "last_by": "incident.designer@web-summit.dinis",
    "last_at": "2026-11-11T00:00:15Z",
    "last_commit": "c00ab16961",
    "agents": [
     "incident.designer@web-summit.dinis"
    ]
   },
   "changed": "2026-11-11T00:00:15Z",
   "linked_from": [
    "design/README.md"
   ]
  },
  {
   "path": "design/round-7.md",
   "kind": "design",
   "title": "Design round 7: status words, the tile's times, and why the model row is so low",
   "what": "By incident.designer@web-summit.dinis, 10 November 2026, 23:54 to 23:55 UTC. From incident.conductor@'s notes of 23:51 and 23:52 (the second carrying incident.weatherwatch@'s second survey). Screenshot at 1280, light, described, not committed.",
   "by": "incident.designer@web-summit.dinis",
   "by_from": "header",
   "dated": "2026-11-10",
   "dated_from": "header",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 2242,
   "sha256": "126d7b5203e678fea46028369c9b3ec3b4c21e1bd7f9879ad7902d8bf450d80b",
   "served": true,
   "file": "https://storm-charles.promptugal.news/design/round-7.md",
   "page": "https://storm-charles.promptugal.news/design/round-7.html",
   "commits": {
    "n": 1,
    "first_by": "incident.designer@web-summit.dinis",
    "first_at": "2026-11-10T23:55:18Z",
    "last_by": "incident.designer@web-summit.dinis",
    "last_at": "2026-11-10T23:55:18Z",
    "last_commit": "73af4e3ce8",
    "agents": [
     "incident.designer@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:55:18Z",
   "linked_from": [
    "design/README.md"
   ]
  },
  {
   "path": "design/round-8.md",
   "kind": "design",
   "title": "Design round 8: three facts in one sentence; links, not images; what we measured",
   "what": "By incident.designer@web-summit.dinis, 10 November 2026, 23:57 to 23:58 UTC. From incident.conductor@'s note of 23:57 (incident.weatherwatch@'s licence reading and gap count) and round 7's critique. Screenshot at 1280, dark, described, not committed.",
   "by": "incident.designer@web-summit.dinis",
   "by_from": "header",
   "dated": "2026-11-10",
   "dated_from": "header",
   "made_from": [],
   "links_to": [
    "research/weather-sites/gap.json",
    "research/weather-sites/imagery.json"
   ],
   "external_links": 0,
   "bytes": 1886,
   "sha256": "eeeb52cfea235bd6467d06c6b035571b6ba3feb84fe69b650f8a5a7f2a80f562",
   "served": true,
   "file": "https://storm-charles.promptugal.news/design/round-8.md",
   "page": "https://storm-charles.promptugal.news/design/round-8.html",
   "commits": {
    "n": 1,
    "first_by": "incident.designer@web-summit.dinis",
    "first_at": "2026-11-10T23:58:23Z",
    "last_by": "incident.designer@web-summit.dinis",
    "last_at": "2026-11-10T23:58:23Z",
    "last_commit": "1e4159a7ac",
    "agents": [
     "incident.designer@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:58:23Z",
   "linked_from": [
    "design/README.md"
   ]
  },
  {
   "path": "design/round-9.md",
   "kind": "design",
   "title": "Design round 9: the decisions' hours from the data; the model wording corrected",
   "what": "By incident.designer@web-summit.dinis, 10 November 2026, 23:59 to 00:00 UTC (2026-11-11). From incident.conductor@'s two notes of 23:58 (the researcher's effect hours; the meteorologist's corrections). Screenshot at 1280, light, described, not committed.",
   "by": "incident.designer@web-summit.dinis",
   "by_from": "header",
   "dated": "2026-11-10",
   "dated_from": "header",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 2346,
   "sha256": "ea0e2d9cc5b83b085d9a7df682e4a2a9f1dc70f2428dcb525bff44104124e73f",
   "served": true,
   "file": "https://storm-charles.promptugal.news/design/round-9.md",
   "page": "https://storm-charles.promptugal.news/design/round-9.html",
   "commits": {
    "n": 1,
    "first_by": "incident.designer@web-summit.dinis",
    "first_at": "2026-11-11T00:00:15Z",
    "last_by": "incident.designer@web-summit.dinis",
    "last_at": "2026-11-11T00:00:15Z",
    "last_commit": "c00ab16961",
    "agents": [
     "incident.designer@web-summit.dinis"
    ]
   },
   "changed": "2026-11-11T00:00:15Z",
   "linked_from": [
    "design/README.md",
    "design/round-6.md"
   ]
  },
  {
   "path": "incidents/2026-11-10-storm-charles/README.md",
   "kind": "incident record",
   "title": "Incident: the storm on Wednesday 11 November (run as P1)",
   "what": "Declared (board WS-214) by conductor@web-summit.dinis at Dinis's word (\"I want to run this weather situation as an incident, only here in our account\", in his own session, 10 November 2026, about 18:35 UTC). Run on account A, by Dinis's agents only. Vicky's …",
   "by": "conductor@web-summit.dinis",
   "by_from": "header",
   "dated": "2026-11-10T18:35Z",
   "dated_from": "header",
   "made_from": [],
   "links_to": [
    "incidents/2026-11-10-storm-charles/decisions.md",
    "incidents/2026-11-10-storm-charles/timeline.md"
   ],
   "external_links": 0,
   "bytes": 7946,
   "sha256": "a0702a94ac141ae9a5be3226d5ddc4711a2260a4d42fe4824c3c4424cc28d6bb",
   "served": true,
   "file": "https://storm-charles.promptugal.news/incidents/2026-11-10-storm-charles/README.md",
   "page": "https://storm-charles.promptugal.news/incidents/2026-11-10-storm-charles/",
   "commits": {
    "n": 1,
    "first_by": "incident.conductor@web-summit.dinis",
    "first_at": "2026-11-10T21:14:33Z",
    "last_by": "incident.conductor@web-summit.dinis",
    "last_at": "2026-11-10T21:14:33Z",
    "last_commit": "77cdd51fc1",
    "agents": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T21:14:33Z",
   "linked_from": [
    "README.md",
    "incidents/2026-11-10-storm-charles/data/README.md",
    "library/glossary.md"
   ]
  },
  {
   "path": "incidents/2026-11-10-storm-charles/comms/README.md",
   "kind": "comms draft",
   "title": "Communications: the storm (incident WS-214)",
   "what": "Kept by journalist.examples@web-summit.dinis, the incident's journalist. The method is Dinis's incident-handling series, part 4 (\"Personalised stakeholder communication\"): one source, many audiences, each draft derived from the same facts so they never …",
   "by": "journalist.examples@web-summit.dinis",
   "by_from": "header",
   "dated": "",
   "dated_from": "",
   "made_from": [
    "incidents/2026-11-10-storm-charles/comms/dinis.md",
    "incidents/2026-11-10-storm-charles/comms/facts.md",
    "incidents/2026-11-10-storm-charles/comms/meetings.md",
    "incidents/2026-11-10-storm-charles/comms/public.md",
    "incidents/2026-11-10-storm-charles/comms/team.md"
   ],
   "links_to": [
    "incidents/2026-11-10-storm-charles/comms/dinis.md",
    "incidents/2026-11-10-storm-charles/comms/facts.md",
    "incidents/2026-11-10-storm-charles/comms/meetings.md",
    "incidents/2026-11-10-storm-charles/comms/public.md",
    "incidents/2026-11-10-storm-charles/comms/team.md"
   ],
   "external_links": 0,
   "bytes": 1900,
   "sha256": "cb3dd1d5c0ee8ec8de7ab6b487a2f1ab8781a15e1dbe469a95081a829ad96893",
   "served": true,
   "file": "https://storm-charles.promptugal.news/incidents/2026-11-10-storm-charles/comms/README.md",
   "page": "https://storm-charles.promptugal.news/incidents/2026-11-10-storm-charles/comms/",
   "commits": {
    "n": 1,
    "first_by": "incident.conductor@web-summit.dinis",
    "first_at": "2026-11-10T21:14:33Z",
    "last_by": "incident.conductor@web-summit.dinis",
    "last_at": "2026-11-10T21:14:33Z",
    "last_commit": "77cdd51fc1",
    "agents": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T21:14:33Z",
   "linked_from": [
    "library/glossary.md"
   ]
  },
  {
   "path": "incidents/2026-11-10-storm-charles/comms/dinis.md",
   "kind": "comms draft",
   "title": "Brief for Dinis (through the incident's lead)",
   "what": "Facts as of 20:02 UTC. Five lines, then what needs your word. The 18:45 version is superseded.",
   "by": "",
   "by_from": "",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 1631,
   "sha256": "5e466e189791eee274b66b49c8b264761ee789a22fe9321c734576247c146843",
   "served": true,
   "file": "https://storm-charles.promptugal.news/incidents/2026-11-10-storm-charles/comms/dinis.md",
   "page": "https://storm-charles.promptugal.news/incidents/2026-11-10-storm-charles/comms/dinis.html",
   "commits": {
    "n": 1,
    "first_by": "incident.conductor@web-summit.dinis",
    "first_at": "2026-11-10T21:14:33Z",
    "last_by": "incident.conductor@web-summit.dinis",
    "last_at": "2026-11-10T21:14:33Z",
    "last_commit": "77cdd51fc1",
    "agents": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T21:14:33Z",
   "linked_from": [
    "incidents/2026-11-10-storm-charles/comms/README.md"
   ]
  },
  {
   "path": "incidents/2026-11-10-storm-charles/comms/facts.md",
   "kind": "comms draft",
   "title": "The one source (facts as of 20:02 UTC, 10 November 2026; weather facts as of 18:38, Thursday's as of 19:22)",
   "what": "Every communication draft in this folder is built from these facts and cites them by number. Sources: weather@PrompTugal.vicky's desk (desks/weather-vicky/live.md, last full check 18:36 to 18:38 UTC, and decision-graph.json), which reads the authorities at …",
   "by": "",
   "by_from": "",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 1,
   "bytes": 4401,
   "sha256": "0d9b93d3ca51a3a8985ca39a5b6ce79da63d8e45af815b319b5b9c3dc7757111",
   "served": true,
   "file": "https://storm-charles.promptugal.news/incidents/2026-11-10-storm-charles/comms/facts.md",
   "page": "https://storm-charles.promptugal.news/incidents/2026-11-10-storm-charles/comms/facts.html",
   "commits": {
    "n": 2,
    "first_by": "incident.conductor@web-summit.dinis",
    "first_at": "2026-11-10T21:14:33Z",
    "last_by": "incident.conductor@web-summit.dinis",
    "last_at": "2026-11-10T23:53:40Z",
    "last_commit": "b3a1b25c89",
    "agents": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:53:40Z",
   "linked_from": [
    "incidents/2026-11-10-storm-charles/comms/README.md"
   ]
  },
  {
   "path": "incidents/2026-11-10-storm-charles/comms/meetings.md",
   "kind": "comms draft",
   "title": "Draft for the people we are meeting on Wednesday (a person sends)",
   "what": "No names here. Whoever holds the meeting sends it on their own channel, edits it in their own voice, and keeps the reply in the private CRM if it is a lead. Facts as of 20:02 UTC (facts.md).",
   "by": "",
   "by_from": "",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 1311,
   "sha256": "c29b3a2a5a67ad543b84c6717862c62e1dd46291be68bc68d95fdd8989b58989",
   "served": true,
   "file": "https://storm-charles.promptugal.news/incidents/2026-11-10-storm-charles/comms/meetings.md",
   "page": "https://storm-charles.promptugal.news/incidents/2026-11-10-storm-charles/comms/meetings.html",
   "commits": {
    "n": 1,
    "first_by": "incident.conductor@web-summit.dinis",
    "first_at": "2026-11-10T21:14:33Z",
    "last_by": "incident.conductor@web-summit.dinis",
    "last_at": "2026-11-10T21:14:33Z",
    "last_commit": "77cdd51fc1",
    "agents": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T21:14:33Z",
   "linked_from": [
    "incidents/2026-11-10-storm-charles/comms/README.md"
   ]
  },
  {
   "path": "incidents/2026-11-10-storm-charles/comms/public.md",
   "kind": "comms draft",
   "title": "Draft for the public, through pt.news's newsroom",
   "what": "An offer to Vicky's newsroom, not a publication. pt.news covers the storm and the summit's decision as news (S41, its weather desk and reviewer). This draft covers what the news does not: how our own team, at the summit, handled it. The newsroom decides …",
   "by": "",
   "by_from": "",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 1,
   "bytes": 1601,
   "sha256": "08ed8e54d9e0e68caa07513bbbd81b4c3447fec22123552fd71563ccd6bb43e9",
   "served": true,
   "file": "https://storm-charles.promptugal.news/incidents/2026-11-10-storm-charles/comms/public.md",
   "page": "https://storm-charles.promptugal.news/incidents/2026-11-10-storm-charles/comms/public.html",
   "commits": {
    "n": 1,
    "first_by": "incident.conductor@web-summit.dinis",
    "first_at": "2026-11-10T21:14:33Z",
    "last_by": "incident.conductor@web-summit.dinis",
    "last_at": "2026-11-10T21:14:33Z",
    "last_commit": "77cdd51fc1",
    "agents": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T21:14:33Z",
   "linked_from": [
    "incidents/2026-11-10-storm-charles/comms/README.md"
   ]
  },
  {
   "path": "incidents/2026-11-10-storm-charles/comms/team.md",
   "kind": "comms draft",
   "title": "Draft for the team (WhatsApp; a person sends)",
   "what": "Facts as of 18:38 UTC (F1 to F7, N1 to N5 in facts.md). Short enough for a phone. Two versions. From 19:55 UTC, B replaces A (Web Summit suspended Wednesday, F8).",
   "by": "",
   "by_from": "",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 1,
   "bytes": 2319,
   "sha256": "75f27f91d49ed5e0151cf3d0ccc6a44d4b80e8ded413edb4353d6a7d3f8cc760",
   "served": true,
   "file": "https://storm-charles.promptugal.news/incidents/2026-11-10-storm-charles/comms/team.md",
   "page": "https://storm-charles.promptugal.news/incidents/2026-11-10-storm-charles/comms/team.html",
   "commits": {
    "n": 1,
    "first_by": "incident.conductor@web-summit.dinis",
    "first_at": "2026-11-10T21:14:33Z",
    "last_by": "incident.conductor@web-summit.dinis",
    "last_at": "2026-11-10T21:14:33Z",
    "last_commit": "77cdd51fc1",
    "agents": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T21:14:33Z",
   "linked_from": [
    "incidents/2026-11-10-storm-charles/comms/README.md"
   ]
  },
  {
   "path": "incidents/2026-11-10-storm-charles/data/README.md",
   "kind": "dataset doc",
   "title": "The storm's data (WS-214)",
   "what": "JSON first: the incident dashboard (the incident page), Vicky's agents and the work desk read these files, not pages. Every item carries one label: fact, evidence or hypothesis (the meteorologist's analysis is a hypothesis). Times are UTC (Lisbon's own time …",
   "by": "",
   "by_from": "",
   "dated": "",
   "dated_from": "",
   "made_from": [
    "incidents/2026-11-10-storm-charles/README.md",
    "incidents/2026-11-10-storm-charles/data/decisions/README.md",
    "incidents/2026-11-10-storm-charles/data/decisions/graph.json",
    "incidents/2026-11-10-storm-charles/data/decisions/sources.json",
    "incidents/2026-11-10-storm-charles/data/signals.json",
    "incidents/2026-11-10-storm-charles/data/watch/websummit.json",
    "incidents/2026-11-10-storm-charles/data/weather/README.md",
    "incidents/2026-11-10-storm-charles/data/weather/tools/refresh.py",
    "incidents/2026-11-10-storm-charles/timeline.md",
    "tools/timeline.mjs",
    "tools/websummit.mjs"
   ],
   "links_to": [
    "incidents/2026-11-10-storm-charles/README.md",
    "incidents/2026-11-10-storm-charles/data/decisions/README.md",
    "incidents/2026-11-10-storm-charles/data/decisions/graph.json",
    "incidents/2026-11-10-storm-charles/data/decisions/sources.json",
    "incidents/2026-11-10-storm-charles/data/signals.json",
    "incidents/2026-11-10-storm-charles/data/watch/websummit.json",
    "incidents/2026-11-10-storm-charles/data/weather/README.md",
    "incidents/2026-11-10-storm-charles/data/weather/tools/refresh.py",
    "incidents/2026-11-10-storm-charles/timeline.md",
    "tools/timeline.mjs",
    "tools/websummit.mjs"
   ],
   "external_links": 0,
   "bytes": 7325,
   "sha256": "21e45a9f3d0eb6691481a0f8e2b178bb8505943f7ad048aabe03a90c90cc903a",
   "served": true,
   "file": "https://storm-charles.promptugal.news/incidents/2026-11-10-storm-charles/data/README.md",
   "page": "https://storm-charles.promptugal.news/incidents/2026-11-10-storm-charles/data/",
   "commits": {
    "n": 4,
    "first_by": "incident.conductor@web-summit.dinis",
    "first_at": "2026-11-10T21:14:33Z",
    "last_by": "incident.conductor@web-summit.dinis",
    "last_at": "2026-11-10T21:37:01Z",
    "last_commit": "140323fe6b",
    "agents": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T21:37:01Z",
   "linked_from": [
    "incidents/2026-11-10-storm-charles/data/signals.json",
    "incidents/2026-11-10-storm-charles/data/watch/websummit.json",
    "library/glossary.md"
   ]
  },
  {
   "path": "incidents/2026-11-10-storm-charles/data/decisions/README.md",
   "kind": "dataset doc",
   "title": "The decision graph of the storm (WS-214)",
   "what": "Kept by incident.researcher@web-summit.dinis for the incident team, the dashboard and Vicky's agents (as material). JSON first: read the data, not the pages.",
   "by": "incident.researcher@web-summit.dinis",
   "by_from": "header",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [
    "agents/researcher/status.json",
    "incidents/2026-11-10-storm-charles/data/decisions/graph.json",
    "incidents/2026-11-10-storm-charles/data/decisions/sources.json"
   ],
   "external_links": 0,
   "bytes": 2942,
   "sha256": "a742a0281e2c1e759418867344773755faabcfb28f2e0247f0ae72a959f6799b",
   "served": true,
   "file": "https://storm-charles.promptugal.news/incidents/2026-11-10-storm-charles/data/decisions/README.md",
   "page": "https://storm-charles.promptugal.news/incidents/2026-11-10-storm-charles/data/decisions/",
   "commits": {
    "n": 2,
    "first_by": "incident.conductor@web-summit.dinis",
    "first_at": "2026-11-10T21:14:33Z",
    "last_by": "incident.conductor@web-summit.dinis",
    "last_at": "2026-11-10T23:57:57Z",
    "last_commit": "0ff49d8f41",
    "agents": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:57:57Z",
   "linked_from": [
    "incidents/2026-11-10-storm-charles/data/README.md",
    "library/glossary.md"
   ]
  },
  {
   "path": "incidents/2026-11-10-storm-charles/data/decisions/graph.json",
   "kind": "dataset",
   "title": "graph.json",
   "what": "The decision graph of the storm (WS-214), kept by incident.researcher@web-summit.dinis. Nodes are decision-makers; edges are decisions, each with who made it (by), whom it touches (to) and what it followed (follows: ids of earlier decisions). Every node and …",
   "by": "incident.researcher@web-summit.dinis",
   "by_from": "its own fields",
   "dated": "2026-11-10T23:55Z",
   "dated_from": "\"updated\"",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 42712,
   "sha256": "8b020761c7829aa96cfd19a0b9ab81801b7bddc874306f2337fbffbbc4474eb9",
   "served": true,
   "file": "https://storm-charles.promptugal.news/incidents/2026-11-10-storm-charles/data/decisions/graph.json",
   "api": "https://storm-charles.promptugal.news/api/v1/2026-11-10-storm-charles/decisions/graph.json",
   "commits": {
    "n": 5,
    "first_by": "incident.conductor@web-summit.dinis",
    "first_at": "2026-11-10T21:14:33Z",
    "last_by": "incident.conductor@web-summit.dinis",
    "last_at": "2026-11-10T23:57:57Z",
    "last_commit": "0ff49d8f41",
    "agents": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:57:57Z",
   "linked_from": [
    "incidents/2026-11-10-storm-charles/data/README.md",
    "incidents/2026-11-10-storm-charles/data/decisions/README.md",
    "library/glossary.md"
   ]
  },
  {
   "path": "incidents/2026-11-10-storm-charles/data/decisions/sources.json",
   "kind": "dataset",
   "title": "sources.json",
   "what": "Every source incident.researcher@ uses for WS-214: what it holds, how often it changes, whether a machine can read it, its status when last tried. parser_ask = the part we ask incident.dev@ to parse.",
   "by": "",
   "by_from": "",
   "dated": "2026-11-10T22:09Z",
   "dated_from": "\"updated\"",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 19099,
   "sha256": "54dcba72df6d2345253153fde1fc9c17c1b46229325f9caf98187033f84348f8",
   "served": true,
   "file": "https://storm-charles.promptugal.news/incidents/2026-11-10-storm-charles/data/decisions/sources.json",
   "api": "https://storm-charles.promptugal.news/api/v1/2026-11-10-storm-charles/decisions/sources.json",
   "commits": {
    "n": 2,
    "first_by": "incident.conductor@web-summit.dinis",
    "first_at": "2026-11-10T21:14:33Z",
    "last_by": "incident.conductor@web-summit.dinis",
    "last_at": "2026-11-10T23:03:27Z",
    "last_commit": "44a983bfb2",
    "agents": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:03:27Z",
   "linked_from": [
    "incidents/2026-11-10-storm-charles/data/README.md",
    "incidents/2026-11-10-storm-charles/data/decisions/README.md",
    "library/glossary.md"
   ]
  },
  {
   "path": "incidents/2026-11-10-storm-charles/data/signals.json",
   "kind": "dataset",
   "title": "signals.json",
   "what": "The incident timeline as data, made from timeline.md by tools/timeline.mjs (never edit by hand; edit timeline.md). See README.md.",
   "by": "",
   "by_from": "",
   "dated": "2026-11-11T00:10Z",
   "dated_from": "\"made_at\"",
   "made_from": [
    "incidents/2026-11-10-storm-charles/timeline.md",
    "tools/timeline.mjs",
    "incidents/2026-11-10-storm-charles/data/README.md"
   ],
   "links_to": [],
   "external_links": 0,
   "bytes": 26783,
   "sha256": "40fb4826f0776e88cf6b1d84704fe6a778c84b702ac48d36e505cdcd5aded59d",
   "served": true,
   "file": "https://storm-charles.promptugal.news/incidents/2026-11-10-storm-charles/data/signals.json",
   "api": "https://storm-charles.promptugal.news/api/v1/2026-11-10-storm-charles/signals.json",
   "commits": null,
   "changed": "2026-11-11T00:10Z",
   "linked_from": [
    "incidents/2026-11-10-storm-charles/data/README.md",
    "library/glossary.md"
   ]
  },
  {
   "path": "incidents/2026-11-10-storm-charles/data/watch/websummit.json",
   "kind": "dataset",
   "title": "websummit.json",
   "what": "Web Summit's own channels, watched for its decisions (Wednesday 11 November: off, 19:38; now Day 3 and the open items: talks, PITCH, side events, tickets): the blog's listings (polled every 2 minutes, --quick), the sitemaps' URL set and the organisers' …",
   "by": "",
   "by_from": "",
   "dated": "2026-11-10T21:34Z",
   "dated_from": "\"read_at\"",
   "made_from": [
    "tools/websummit.mjs",
    "incidents/2026-11-10-storm-charles/data/README.md"
   ],
   "links_to": [],
   "external_links": 0,
   "bytes": 67302,
   "sha256": "7a5607c35d5c692f49f006b95b8e7748dd575fd3ec4613487a94858cde83ad2b",
   "served": true,
   "file": "https://storm-charles.promptugal.news/incidents/2026-11-10-storm-charles/data/watch/websummit.json",
   "api": "https://storm-charles.promptugal.news/api/v1/2026-11-10-storm-charles/watch/websummit.json",
   "commits": {
    "n": 4,
    "first_by": "incident.conductor@web-summit.dinis",
    "first_at": "2026-11-10T21:14:33Z",
    "last_by": "incident.conductor@web-summit.dinis",
    "last_at": "2026-11-10T21:37:01Z",
    "last_commit": "140323fe6b",
    "agents": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T21:37:01Z",
   "linked_from": [
    "incidents/2026-11-10-storm-charles/data/README.md",
    "incidents/2026-11-10-storm-charles/timeline.md",
    "library/glossary.md"
   ]
  },
  {
   "path": "incidents/2026-11-10-storm-charles/data/weather/README.md",
   "kind": "dataset doc",
   "title": "The weather picture: data (WS-214, the storm on Wednesday 11 November 2026)",
   "what": "Kept by incident.meteorologist@web-summit.dinis for the incident team, the dashboard and, as material, Vicky's weather desk. JSON first: read these files, not pages. Every record carries source (the URL read) and read_utc (when). Facts, press and analysis are …",
   "by": "incident.meteorologist@web-summit.dinis",
   "by_from": "header",
   "dated": "",
   "dated_from": "",
   "made_from": [
    "agents/meteorologist/status.json",
    "incidents/2026-11-10-storm-charles/data/weather/airport.json",
    "incidents/2026-11-10-storm-charles/data/weather/changes.json",
    "incidents/2026-11-10-storm-charles/data/weather/communiques.json",
    "incidents/2026-11-10-storm-charles/data/weather/forecast.json",
    "incidents/2026-11-10-storm-charles/data/weather/gusts-vs-forecast.json",
    "incidents/2026-11-10-storm-charles/data/weather/stations.json",
    "incidents/2026-11-10-storm-charles/data/weather/warnings.json",
    "https://api.ipma.pt/open-data/forecast/meteorology/cities/daily/1110600.json",
    "https://api.ipma.pt/open-data/forecast/warnings/warnings_www.json",
    "https://api.ipma.pt/open-data/observation/meteorology/stations/observations.json",
    "https://api.ipma.pt/public-data/forecast/aggregate/1110600.json",
    "https://aviationweather.gov/api/data/metar?ids=LPPT&hours=30&format=json",
    "https://aviationweather.gov/api/data/taf?ids=LPPT&format=json",
    "https://www.ipma.pt/resources.www/rss/comunicados.xml"
   ],
   "links_to": [
    "agents/meteorologist/status.json",
    "incidents/2026-11-10-storm-charles/data/weather/airport.json",
    "incidents/2026-11-10-storm-charles/data/weather/analysis.json",
    "incidents/2026-11-10-storm-charles/data/weather/analysis.md",
    "incidents/2026-11-10-storm-charles/data/weather/cap.json",
    "incidents/2026-11-10-storm-charles/data/weather/changes.json",
    "incidents/2026-11-10-storm-charles/data/weather/communiques.json",
    "incidents/2026-11-10-storm-charles/data/weather/forecast.json",
    "incidents/2026-11-10-storm-charles/data/weather/gusts-vs-forecast.json",
    "incidents/2026-11-10-storm-charles/data/weather/stations.json",
    "incidents/2026-11-10-storm-charles/data/weather/warnings.json"
   ],
   "external_links": 10,
   "bytes": 4420,
   "sha256": "d02cbbe1dc5972aa6e67da0a5860c7e0e761a432be0fa7cafb4d83eaee8ba825",
   "served": true,
   "file": "https://storm-charles.promptugal.news/incidents/2026-11-10-storm-charles/data/weather/README.md",
   "page": "https://storm-charles.promptugal.news/incidents/2026-11-10-storm-charles/data/weather/",
   "commits": {
    "n": 3,
    "first_by": "incident.conductor@web-summit.dinis",
    "first_at": "2026-11-10T21:14:33Z",
    "last_by": "incident.conductor@web-summit.dinis",
    "last_at": "2026-11-10T23:55:03Z",
    "last_commit": "0740797c43",
    "agents": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:55:03Z",
   "linked_from": [
    "incidents/2026-11-10-storm-charles/data/README.md"
   ]
  },
  {
   "path": "incidents/2026-11-10-storm-charles/data/weather/airport.json",
   "kind": "dataset",
   "title": "airport.json",
   "what": "IPMA's aeronautical forecast (TAF) and observations (METAR) for Lisbon airport (LPPT), read through the US NOAA Aviation Weather Center's public API. Knots, with km/h (1 kt = 1.852 km/h). A point forecast for pilots at the airport, 8 km north of the centre; …",
   "by": "",
   "by_from": "",
   "dated": "2026-11-11T00:00:36Z",
   "dated_from": "\"read_utc\"",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 33738,
   "sha256": "98c17703640e76295ba2e2b640f2beac08bbbae72e560db476fa77c13be798e6",
   "served": true,
   "file": "https://storm-charles.promptugal.news/incidents/2026-11-10-storm-charles/data/weather/airport.json",
   "api": "https://storm-charles.promptugal.news/api/v1/2026-11-10-storm-charles/weather/airport.json",
   "commits": {
    "n": 9,
    "first_by": "incident.conductor@web-summit.dinis",
    "first_at": "2026-11-10T21:14:33Z",
    "last_by": "incident.conductor@web-summit.dinis",
    "last_at": "2026-11-11T00:01:31Z",
    "last_commit": "98934af524",
    "agents": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   "changed": "2026-11-11T00:01:31Z",
   "linked_from": [
    "incidents/2026-11-10-storm-charles/data/weather/README.md",
    "incidents/2026-11-10-storm-charles/data/weather/analysis.md",
    "incidents/2026-11-10-storm-charles/data/weather/stations.json",
    "incidents/2026-11-10-storm-charles/timeline.md"
   ]
  },
  {
   "path": "incidents/2026-11-10-storm-charles/data/weather/analysis.json",
   "kind": "dataset",
   "title": "analysis.json",
   "what": "Reasoning from the facts in this folder; not IPMA's words. Times are UTC = Lisbon time (WET). See analysis.md for the reasons.",
   "by": "incident.meteorologist@web-summit.dinis",
   "by_from": "its own fields",
   "dated": "2026-11-10T19:05Z",
   "dated_from": "\"written_utc\"",
   "made_from": [
    "incidents/2026-11-10-storm-charles/data/weather/analysis.md"
   ],
   "links_to": [],
   "external_links": 0,
   "bytes": 7903,
   "sha256": "7b2eb49a048bf1f38a144b76fd2601a766ad85206ebc32aba76e1313392e203b",
   "served": true,
   "file": "https://storm-charles.promptugal.news/incidents/2026-11-10-storm-charles/data/weather/analysis.json",
   "api": "https://storm-charles.promptugal.news/api/v1/2026-11-10-storm-charles/weather/analysis.json",
   "commits": {
    "n": 6,
    "first_by": "incident.conductor@web-summit.dinis",
    "first_at": "2026-11-10T21:14:33Z",
    "last_by": "incident.conductor@web-summit.dinis",
    "last_at": "2026-11-11T00:00:27Z",
    "last_commit": "6253e1f51c",
    "agents": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   "changed": "2026-11-11T00:00:27Z",
   "linked_from": [
    "incidents/2026-11-10-storm-charles/data/weather/README.md",
    "incidents/2026-11-10-storm-charles/data/weather/analysis.md"
   ]
  },
  {
   "path": "incidents/2026-11-10-storm-charles/data/weather/analysis.md",
   "kind": "analysis",
   "title": "Analysis: when the worst arrives in Lisbon on Wednesday, and how far ahead each warning could be known",
   "what": "Label: ANALYSIS (incident.meteorologist@web-summit.dinis, 10 November 2026, written at 19:05 UTC from the data in this folder as read at 19:01 UTC). The facts it rests on are in the JSON files beside it, each with its source and time read. The conclusions are …",
   "by": "incident.meteorologist@web-summit.dinis",
   "by_from": "header",
   "dated": "2026-11-10T19:05Z",
   "dated_from": "header",
   "made_from": [
    "incidents/2026-11-10-storm-charles/data/weather/analysis.json"
   ],
   "links_to": [
    "incidents/2026-11-10-storm-charles/data/weather/airport.json",
    "incidents/2026-11-10-storm-charles/data/weather/analysis.json",
    "incidents/2026-11-10-storm-charles/data/weather/cap.json",
    "incidents/2026-11-10-storm-charles/data/weather/changes.json",
    "incidents/2026-11-10-storm-charles/data/weather/forecast.json",
    "incidents/2026-11-10-storm-charles/data/weather/gusts-vs-forecast.json",
    "incidents/2026-11-10-storm-charles/data/weather/warnings.json"
   ],
   "external_links": 0,
   "bytes": 18573,
   "sha256": "8e3b3d402541236b039fce530176b807c32261c5826d1259614d6c6e0bda1741",
   "served": true,
   "file": "https://storm-charles.promptugal.news/incidents/2026-11-10-storm-charles/data/weather/analysis.md",
   "page": "https://storm-charles.promptugal.news/incidents/2026-11-10-storm-charles/data/weather/analysis.html",
   "commits": {
    "n": 5,
    "first_by": "incident.conductor@web-summit.dinis",
    "first_at": "2026-11-10T21:14:33Z",
    "last_by": "incident.conductor@web-summit.dinis",
    "last_at": "2026-11-11T00:00:27Z",
    "last_commit": "6253e1f51c",
    "agents": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   "changed": "2026-11-11T00:00:27Z",
   "linked_from": [
    "incidents/2026-11-10-storm-charles/data/weather/README.md",
    "incidents/2026-11-10-storm-charles/data/weather/analysis.json",
    "incidents/2026-11-10-storm-charles/data/weather/gusts-vs-forecast.json",
    "incidents/2026-11-10-storm-charles/timeline.md",
    "library/glossary.md",
    "outreach/README.md"
   ]
  },
  {
   "path": "incidents/2026-11-10-storm-charles/data/weather/cap.json",
   "kind": "dataset",
   "title": "cap.json",
   "what": "IPMA's warnings for the Lisbon district as CAP messages (Common Alerting Protocol), read through MeteoAlarm's public feed (https://www.meteoalarm.org). A dated record, not a live feed: read 2026-11-11T00:00:36Z. MeteoAlarm: \"Time delays between this website …",
   "by": "",
   "by_from": "",
   "dated": "2026-11-11T00:00:36Z",
   "dated_from": "\"read_utc\"",
   "made_from": [
    "https://feeds.meteoalarm.org/api/v1/warnings/feeds-portugal"
   ],
   "links_to": [],
   "external_links": 0,
   "bytes": 13017,
   "sha256": "2193f4c5c074548ba738ddfe58aaf5d0751947bc7a7607453533235dd48538bf",
   "served": true,
   "file": "https://storm-charles.promptugal.news/incidents/2026-11-10-storm-charles/data/weather/cap.json",
   "api": "https://storm-charles.promptugal.news/api/v1/2026-11-10-storm-charles/weather/cap.json",
   "commits": {
    "n": 4,
    "first_by": "incident.conductor@web-summit.dinis",
    "first_at": "2026-11-10T23:53:40Z",
    "last_by": "incident.conductor@web-summit.dinis",
    "last_at": "2026-11-11T00:01:31Z",
    "last_commit": "98934af524",
    "agents": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   "changed": "2026-11-11T00:01:31Z",
   "linked_from": [
    "incidents/2026-11-10-storm-charles/data/weather/README.md",
    "incidents/2026-11-10-storm-charles/data/weather/analysis.md",
    "incidents/2026-11-10-storm-charles/data/weather/warnings.json",
    "incidents/2026-11-10-storm-charles/timeline.md"
   ]
  },
  {
   "path": "incidents/2026-11-10-storm-charles/data/weather/changes.json",
   "kind": "dataset",
   "title": "changes.json",
   "what": "thursday (first): Lisbon warnings touching Thursday 12 Nov and the forecasts for its morning. gusts_above_warned: every LPPT METAR gust from Wed 05:00 above the gust warned for that hour (the IPMA wind warning in force, from its text; outside a wind warning, …",
   "by": "",
   "by_from": "",
   "dated": "",
   "dated_from": "",
   "made_from": [
    "incidents/2026-11-10-storm-charles/data/weather/tools/refresh.py"
   ],
   "links_to": [],
   "external_links": 0,
   "bytes": 9633,
   "sha256": "8feb2d4ce3898394469c3bbdb05079c4eea3d526b296e7a193fe3fc48ee075aa",
   "served": true,
   "file": "https://storm-charles.promptugal.news/incidents/2026-11-10-storm-charles/data/weather/changes.json",
   "api": "https://storm-charles.promptugal.news/api/v1/2026-11-10-storm-charles/weather/changes.json",
   "commits": {
    "n": 9,
    "first_by": "incident.conductor@web-summit.dinis",
    "first_at": "2026-11-10T21:14:33Z",
    "last_by": "incident.conductor@web-summit.dinis",
    "last_at": "2026-11-11T00:01:31Z",
    "last_commit": "98934af524",
    "agents": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   "changed": "2026-11-11T00:01:31Z",
   "linked_from": [
    "incidents/2026-11-10-storm-charles/data/weather/README.md",
    "incidents/2026-11-10-storm-charles/data/weather/analysis.md"
   ]
  },
  {
   "path": "incidents/2026-11-10-storm-charles/data/weather/communiques.json",
   "kind": "dataset",
   "title": "communiques.json",
   "what": "IPMA's communiqués (special weather information) from its RSS feed, kept across reads; earthquake notices left out.",
   "by": "",
   "by_from": "",
   "dated": "2026-11-11T00:00:36Z",
   "dated_from": "\"read_utc\"",
   "made_from": [
    "https://www.ipma.pt/resources.www/rss/comunicados.xml"
   ],
   "links_to": [],
   "external_links": 0,
   "bytes": 6965,
   "sha256": "3489d069a47b5b97070d0eb176e4fdb130400275f25ba7cba097a766f4ba3856",
   "served": true,
   "file": "https://storm-charles.promptugal.news/incidents/2026-11-10-storm-charles/data/weather/communiques.json",
   "api": "https://storm-charles.promptugal.news/api/v1/2026-11-10-storm-charles/weather/communiques.json",
   "commits": {
    "n": 9,
    "first_by": "incident.conductor@web-summit.dinis",
    "first_at": "2026-11-10T21:14:33Z",
    "last_by": "incident.conductor@web-summit.dinis",
    "last_at": "2026-11-11T00:01:31Z",
    "last_commit": "98934af524",
    "agents": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   "changed": "2026-11-11T00:01:31Z",
   "linked_from": [
    "incidents/2026-11-10-storm-charles/data/weather/README.md"
   ]
  },
  {
   "path": "incidents/2026-11-10-storm-charles/data/weather/forecast.json",
   "kind": "dataset",
   "title": "forecast.json",
   "what": "IPMA's own forecast for Lisbon (globalIdLocal 1110600): the 5-day daily forecast and the hourly model forecast (mean wind, no gusts). IPMA's wind classes: 1 weak, 2 moderate, 3 strong, 4 very strong.",
   "by": "",
   "by_from": "",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 34997,
   "sha256": "c0ea12a26ca7b5eae10b8c8a9035a30d283eb1920bcdde12580750dc016f64b1",
   "served": true,
   "file": "https://storm-charles.promptugal.news/incidents/2026-11-10-storm-charles/data/weather/forecast.json",
   "api": "https://storm-charles.promptugal.news/api/v1/2026-11-10-storm-charles/weather/forecast.json",
   "commits": {
    "n": 10,
    "first_by": "incident.conductor@web-summit.dinis",
    "first_at": "2026-11-10T21:14:33Z",
    "last_by": "incident.conductor@web-summit.dinis",
    "last_at": "2026-11-11T00:01:31Z",
    "last_commit": "98934af524",
    "agents": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   "changed": "2026-11-11T00:01:31Z",
   "linked_from": [
    "incidents/2026-11-10-storm-charles/data/weather/README.md",
    "incidents/2026-11-10-storm-charles/data/weather/analysis.md"
   ]
  },
  {
   "path": "incidents/2026-11-10-storm-charles/data/weather/gusts-vs-forecast.json",
   "kind": "dataset",
   "title": "gusts-vs-forecast.json",
   "what": "The latest observed wind in Lisbon against what was forecast for that hour. Facts with sources; no analysis here (see analysis.md).",
   "by": "",
   "by_from": "",
   "dated": "2026-11-11T00:00:36Z",
   "dated_from": "\"read_utc\"",
   "made_from": [
    "incidents/2026-11-10-storm-charles/data/weather/analysis.md"
   ],
   "links_to": [],
   "external_links": 0,
   "bytes": 3039,
   "sha256": "cef7e2a4b248583dd01e48b174a70d36518ca8d8528fe3d4958c577ed7f359f6",
   "served": true,
   "file": "https://storm-charles.promptugal.news/incidents/2026-11-10-storm-charles/data/weather/gusts-vs-forecast.json",
   "api": "https://storm-charles.promptugal.news/api/v1/2026-11-10-storm-charles/weather/gusts-vs-forecast.json",
   "commits": {
    "n": 9,
    "first_by": "incident.conductor@web-summit.dinis",
    "first_at": "2026-11-10T21:14:33Z",
    "last_by": "incident.conductor@web-summit.dinis",
    "last_at": "2026-11-11T00:01:31Z",
    "last_commit": "98934af524",
    "agents": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   "changed": "2026-11-11T00:01:31Z",
   "linked_from": [
    "incidents/2026-11-10-storm-charles/data/weather/README.md",
    "incidents/2026-11-10-storm-charles/data/weather/analysis.md"
   ]
  },
  {
   "path": "incidents/2026-11-10-storm-charles/data/weather/stations.json",
   "kind": "dataset",
   "title": "stations.json",
   "what": "IPMA's hourly station observations in and next to Lisbon, kept across reads (the feed holds 24 hours). Mean wind only: this feed has NO gusts; gusts are in the airport's METAR (airport.json).",
   "by": "",
   "by_from": "",
   "dated": "2026-11-11T00:00:36Z",
   "dated_from": "\"read_utc\"",
   "made_from": [
    "https://api.ipma.pt/open-data/observation/meteorology/stations/observations.json",
    "https://api.ipma.pt/open-data/observation/meteorology/stations/stations.json",
    "incidents/2026-11-10-storm-charles/data/weather/airport.json"
   ],
   "links_to": [],
   "external_links": 0,
   "bytes": 48815,
   "sha256": "477061bd2c61f97b5c882cbf4a5c0602e9d51c19e0c8e39c9a13c215beba2ba1",
   "served": true,
   "file": "https://storm-charles.promptugal.news/incidents/2026-11-10-storm-charles/data/weather/stations.json",
   "api": "https://storm-charles.promptugal.news/api/v1/2026-11-10-storm-charles/weather/stations.json",
   "commits": {
    "n": 9,
    "first_by": "incident.conductor@web-summit.dinis",
    "first_at": "2026-11-10T21:14:33Z",
    "last_by": "incident.conductor@web-summit.dinis",
    "last_at": "2026-11-11T00:01:31Z",
    "last_commit": "98934af524",
    "agents": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   "changed": "2026-11-11T00:01:31Z",
   "linked_from": [
    "incidents/2026-11-10-storm-charles/data/weather/README.md"
   ]
  },
  {
   "path": "incidents/2026-11-10-storm-charles/data/weather/tools/refresh.py",
   "kind": "tool",
   "title": "refresh.py",
   "what": "The weather picture for WS-214 (the storm, Wednesday 11 November 2026), as JSON.",
   "by": "",
   "by_from": "",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 37254,
   "sha256": "fb956e5227f0ff0dd044b6c1c0aed66997f4c2c835df13a4082459803dd36253",
   "served": true,
   "file": "https://storm-charles.promptugal.news/incidents/2026-11-10-storm-charles/data/weather/tools/refresh.py",
   "commits": {
    "n": 7,
    "first_by": "incident.conductor@web-summit.dinis",
    "first_at": "2026-11-10T21:14:33Z",
    "last_by": "incident.conductor@web-summit.dinis",
    "last_at": "2026-11-11T00:01:31Z",
    "last_commit": "98934af524",
    "agents": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   "changed": "2026-11-11T00:01:31Z",
   "linked_from": [
    "incidents/2026-11-10-storm-charles/data/README.md",
    "incidents/2026-11-10-storm-charles/data/weather/changes.json"
   ]
  },
  {
   "path": "incidents/2026-11-10-storm-charles/data/weather/warnings.json",
   "kind": "dataset",
   "title": "warnings.json",
   "what": "IPMA's weather warnings for the Lisbon district (idAreaAviso LSB), non-green only; red and orange warnings elsewhere; and how Lisbon's warnings changed over time. Times are local = UTC (WET). IPMA's open data carries no issue time: `sent_utc` is the sent time …",
   "by": "",
   "by_from": "",
   "dated": "2026-11-11T00:00:36Z",
   "dated_from": "\"read_utc\"",
   "made_from": [
    "https://api.ipma.pt/open-data/forecast/warnings/warnings_www.json",
    "incidents/2026-11-10-storm-charles/data/weather/cap.json"
   ],
   "links_to": [],
   "external_links": 0,
   "bytes": 26031,
   "sha256": "e64a2c570ec1822d71b8e7a4975a61006664e787987f894a00963ce39d038f56",
   "served": true,
   "file": "https://storm-charles.promptugal.news/incidents/2026-11-10-storm-charles/data/weather/warnings.json",
   "api": "https://storm-charles.promptugal.news/api/v1/2026-11-10-storm-charles/weather/warnings.json",
   "commits": {
    "n": 9,
    "first_by": "incident.conductor@web-summit.dinis",
    "first_at": "2026-11-10T21:14:33Z",
    "last_by": "incident.conductor@web-summit.dinis",
    "last_at": "2026-11-11T00:01:31Z",
    "last_commit": "98934af524",
    "agents": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   "changed": "2026-11-11T00:01:31Z",
   "linked_from": [
    "incidents/2026-11-10-storm-charles/data/weather/README.md",
    "incidents/2026-11-10-storm-charles/data/weather/analysis.md"
   ]
  },
  {
   "path": "incidents/2026-11-10-storm-charles/decisions.md",
   "kind": "decision log",
   "title": "Decisions (simulate first: each decision is written here before anyone acts)",
   "what": "Newest first.",
   "by": "conductor@web-summit.dinis",
   "by_from": "header",
   "dated": "",
   "dated_from": "",
   "made_from": [
    "https://websummit.com/blog/web-summit/important-event-update-2026/"
   ],
   "links_to": [],
   "external_links": 1,
   "bytes": 3508,
   "sha256": "b1d7a6d31dcd06d242918be776d7d332eb06cd8df2d0680a713b17cd299c510c",
   "served": true,
   "file": "https://storm-charles.promptugal.news/incidents/2026-11-10-storm-charles/decisions.md",
   "page": "https://storm-charles.promptugal.news/incidents/2026-11-10-storm-charles/decisions.html",
   "commits": {
    "n": 1,
    "first_by": "incident.conductor@web-summit.dinis",
    "first_at": "2026-11-10T21:14:33Z",
    "last_by": "incident.conductor@web-summit.dinis",
    "last_at": "2026-11-10T21:14:33Z",
    "last_commit": "77cdd51fc1",
    "agents": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T21:14:33Z",
   "linked_from": [
    "incidents/2026-11-10-storm-charles/README.md",
    "library/glossary.md"
   ]
  },
  {
   "path": "incidents/2026-11-10-storm-charles/incident.json",
   "kind": "incident record",
   "title": "Storm Charles, Lisbon: Wednesday 11 November 2026",
   "what": "The incident's front-page record, kept by incident.conductor@web-summit.dinis. The headline is always a decision or warning from its primary source, with the time it was published; the front page renders it as written.",
   "by": "incident.conductor@web-summit.dinis",
   "by_from": "its own fields",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 1314,
   "sha256": "9d0381f15298d11ae5b0b3f6f990157f9143971fcbf07fa449397ba97d76b788",
   "served": true,
   "file": "https://storm-charles.promptugal.news/incidents/2026-11-10-storm-charles/incident.json",
   "commits": {
    "n": 2,
    "first_by": "incident.conductor@web-summit.dinis",
    "first_at": "2026-11-10T21:14:33Z",
    "last_by": "incident.conductor@web-summit.dinis",
    "last_at": "2026-11-10T23:53:40Z",
    "last_commit": "b3a1b25c89",
    "agents": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:53:40Z",
   "linked_from": [
    "library/glossary.md"
   ]
  },
  {
   "path": "incidents/2026-11-10-storm-charles/material/wednesday-is-off-what-now.md",
   "kind": "material",
   "title": "Material for Vicky's weather desk: \"Wednesday is off: what now?\" (a service piece's facts)",
   "what": "Offered by incident.conductor@web-summit.dinis (WS-214), 10 November 2026, 20:00 UTC, as material for weather@PrompTugal.vicky and conductor.B@PrompTugal.vicky. Not an article and not advice. Vicky directs her desk; the desk decides whether to use any of it, …",
   "by": "incident.conductor@web-summit.dinis",
   "by_from": "header",
   "dated": "2026-11-10T20:00Z",
   "dated_from": "header",
   "made_from": [],
   "links_to": [],
   "external_links": 6,
   "bytes": 4441,
   "sha256": "f9a63fbca712d0bf814a62e7ff81a71338d2bd684a8a009fba6f5b80e7170d79",
   "served": true,
   "file": "https://storm-charles.promptugal.news/incidents/2026-11-10-storm-charles/material/wednesday-is-off-what-now.md",
   "page": "https://storm-charles.promptugal.news/incidents/2026-11-10-storm-charles/material/wednesday-is-off-what-now.html",
   "commits": {
    "n": 1,
    "first_by": "incident.conductor@web-summit.dinis",
    "first_at": "2026-11-10T21:14:33Z",
    "last_by": "incident.conductor@web-summit.dinis",
    "last_at": "2026-11-10T21:14:33Z",
    "last_commit": "77cdd51fc1",
    "agents": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T21:14:33Z",
   "linked_from": [
    "library/glossary.md"
   ]
  },
  {
   "path": "incidents/2026-11-10-storm-charles/timeline.md",
   "kind": "decision log",
   "title": "Timeline (UTC, 10 to 11 November 2026)",
   "what": "Newest first (from 18:58, at the incident conductor's takeover). Facts and evidence carry their source; anything unofficial says so.",
   "by": "",
   "by_from": "",
   "dated": "",
   "dated_from": "",
   "made_from": [
    "incidents/2026-11-10-storm-charles/data/weather/analysis.md",
    "incidents/2026-11-10-storm-charles/data/weather/cap.json",
    "research/media/coverage.json",
    "research/media/first-on-each-fact.json",
    "https://api.ipma.pt/open-data/forecast/warnings/warnings_www.json",
    "https://websummit.com/blog/",
    "https://www.madeiraislandnews.com/2026/11/ana-anticipates-flight-cancellations-at-lisbon-faro-and-madeira-airports.html"
   ],
   "links_to": [
    "incidents/2026-11-10-storm-charles/data/watch/websummit.json",
    "incidents/2026-11-10-storm-charles/data/weather/airport.json",
    "incidents/2026-11-10-storm-charles/data/weather/analysis.md",
    "incidents/2026-11-10-storm-charles/data/weather/cap.json",
    "research/media/coverage.json",
    "research/media/first-on-each-fact.json"
   ],
   "external_links": 18,
   "bytes": 16149,
   "sha256": "3c775c6b90dd4600871c186eca8b4bb3e1c1f9602b7011647fea22e6e4d9ff48",
   "served": true,
   "file": "https://storm-charles.promptugal.news/incidents/2026-11-10-storm-charles/timeline.md",
   "page": "https://storm-charles.promptugal.news/incidents/2026-11-10-storm-charles/timeline.html",
   "commits": null,
   "changed": "",
   "linked_from": [
    "incidents/2026-11-10-storm-charles/README.md",
    "incidents/2026-11-10-storm-charles/data/README.md",
    "incidents/2026-11-10-storm-charles/data/signals.json",
    "library/glossary.md",
    "research/media/ranking.md"
   ]
  },
  {
   "path": "library/README.md",
   "kind": "library",
   "title": "The library: everything on this site, and where it came from",
   "what": "The catalogue as a page, by kind, with the gaps listed.",
   "by": "incident.librarian@web-summit.dinis",
   "by_from": "generated",
   "dated": "",
   "dated_from": "",
   "generated_by": "tools/library-index.mjs",
   "made_from": [
    "every file in this repository",
    "library/provenance.json"
   ],
   "links_to": [],
   "external_links": 0,
   "commits": null,
   "changed": "",
   "served": true,
   "file": "https://storm-charles.promptugal.news/library/README.md",
   "page": "https://storm-charles.promptugal.news/library/",
   "linked_from": [
    "library/abp.md",
    "library/drafts/now-json.md",
    "library/glossary.md",
    "library/reading/README.md",
    "library/reading/standard.md",
    "library/releases.md"
   ]
  },
  {
   "path": "library/abp.json",
   "kind": "library",
   "title": "abp.json",
   "what": "What is particular to each agent's behaviour policy: its business task where agents/JOBS.md only says 'as before', what it reaches beyond the repository, and the gaps that are its own. tools/library-abp.mjs joins this with agents/JOBS.md (the start brief), …",
   "by": "incident.librarian@web-summit.dinis",
   "by_from": "its own fields",
   "dated": "2026-11-11T00:05Z",
   "dated_from": "\"updated\"",
   "made_from": [
    "agents/JOBS.md",
    "tools/library-abp.mjs",
    "agents/policy.json",
    "data/keys.json",
    "CLAUDE.md"
   ],
   "links_to": [],
   "external_links": 0,
   "bytes": 10785,
   "sha256": "f88b32ebd97084f573460c892f92a1f104f83a3e381269389e0080cd851ea178",
   "served": true,
   "file": "https://storm-charles.promptugal.news/library/abp.json",
   "commits": {
    "n": 1,
    "first_by": "incident.librarian@web-summit.dinis",
    "first_at": "2026-11-10T23:59:40Z",
    "last_by": "incident.librarian@web-summit.dinis",
    "last_at": "2026-11-10T23:59:40Z",
    "last_commit": "4938594fd3",
    "agents": [
     "incident.librarian@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:59:40Z",
   "linked_from": [
    "agents/conductor/policy.md",
    "agents/designer/policy.md",
    "agents/dev/policy.md",
    "agents/graph/policy.md",
    "agents/identity/policy.md",
    "agents/librarian/policy.md",
    "agents/media/policy.md",
    "agents/meteorologist/policy.md",
    "agents/observability/policy.md",
    "agents/researcher/policy.md",
    "agents/weatherwatch/policy.md",
    "library/abp.md"
   ]
  },
  {
   "path": "library/abp.md",
   "kind": "library",
   "title": "The agents' behaviour policies (drafts)",
   "what": "Kept by incident.librarian@web-summit.dinis, 2026-11-11, 00:05 UTC. DRAFTS, NOT AGREED BY DINIS. One Agent Behaviour Policy per incident agent, in the shape of web-summit.sgit.ai/abp/: Reach, Mandate, Gap, Barriers, Licence to Operate, Provenance. Built by …",
   "by": "incident.librarian@web-summit.dinis",
   "by_from": "header",
   "dated": "",
   "dated_from": "",
   "made_from": [
    "CLAUDE.md",
    "admin/build/build.mjs",
    "agents/JOBS.md",
    "agents/conductor/policy.md",
    "agents/designer/policy.md",
    "agents/identity/policy.md",
    "agents/media/policy.md",
    "agents/observability/policy.md",
    "agents/policy.json",
    "agents/weatherwatch/policy.md",
    "library/README.md",
    "library/abp.json",
    "tools/library-abp.mjs",
    "https://web-summit.sgit.ai/abp/"
   ],
   "links_to": [
    "CLAUDE.md",
    "admin/build/build.mjs",
    "agents/JOBS.md",
    "agents/conductor/policy.md",
    "agents/designer/policy.md",
    "agents/dev/policy.md",
    "agents/graph/policy.md",
    "agents/identity/policy.md",
    "agents/librarian/policy.md",
    "agents/media/policy.md",
    "agents/meteorologist/policy.md",
    "agents/observability/policy.md",
    "agents/policy.json",
    "agents/researcher/policy.md",
    "agents/weatherwatch/policy.md",
    "library/README.md",
    "library/abp.json",
    "tools/library-abp.mjs",
    "tools/llm.mjs",
    "tools/policy-check.mjs"
   ],
   "external_links": 1,
   "bytes": 3998,
   "sha256": "ccd00fbffe198bf018c371a272d173e19013939509ce35096e4ac2045dbdd9e3",
   "served": true,
   "file": "https://storm-charles.promptugal.news/library/abp.md",
   "page": "https://storm-charles.promptugal.news/library/abp.html",
   "commits": {
    "n": 1,
    "first_by": "incident.librarian@web-summit.dinis",
    "first_at": "2026-11-10T23:59:40Z",
    "last_by": "incident.librarian@web-summit.dinis",
    "last_at": "2026-11-10T23:59:40Z",
    "last_commit": "4938594fd3",
    "agents": [
     "incident.librarian@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:59:40Z",
   "linked_from": [
    "agents/conductor/policy.md",
    "agents/designer/policy.md",
    "agents/dev/policy.md",
    "agents/graph/policy.md",
    "agents/identity/policy.md",
    "agents/librarian/policy.md",
    "agents/media/policy.md",
    "agents/meteorologist/policy.md",
    "agents/observability/policy.md",
    "agents/researcher/policy.md",
    "agents/weatherwatch/policy.md",
    "app/agents/about.md"
   ]
  },
  {
   "path": "library/drafts/now-json.md",
   "kind": "library",
   "title": "Draft: the shape of now.json (one small file for an agent with one question)",
   "what": "Kept by incident.librarian@web-summit.dinis, 10 November 2026, 23:52 UTC. A draft for incident.conductor@ to build (asked 23:49 UTC); nothing serves it yet. From the reading list: \"The agent is the reader\" (a small curated slice with provenance; a claim valid …",
   "by": "incident.librarian@web-summit.dinis",
   "by_from": "header",
   "dated": "2026-11-10T23:52Z",
   "dated_from": "header",
   "made_from": [
    "library/README.md",
    "library/reading/README.md"
   ],
   "links_to": [
    "library/README.md",
    "library/reading/README.md",
    "tools/timeline.mjs"
   ],
   "external_links": 2,
   "bytes": 4500,
   "sha256": "e0c0b1a26c0f04ae50d791453c20fd1713006dff341422659b07946b29278f17",
   "served": true,
   "file": "https://storm-charles.promptugal.news/library/drafts/now-json.md",
   "page": "https://storm-charles.promptugal.news/library/drafts/now-json.html",
   "commits": {
    "n": 1,
    "first_by": "incident.librarian@web-summit.dinis",
    "first_at": "2026-11-10T23:50:23Z",
    "last_by": "incident.librarian@web-summit.dinis",
    "last_at": "2026-11-10T23:50:23Z",
    "last_commit": "55d31ab867",
    "agents": [
     "incident.librarian@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:50:23Z",
   "linked_from": []
  },
  {
   "path": "library/glossary.md",
   "kind": "library",
   "title": "Glossary: the words this site uses",
   "what": "Kept by incident.librarian@web-summit.dinis, 10 November 2026, from CLAUDE.md, ROADMAP.md, PIPELINE.md and the data's own READMEs. Each term in two lines: what it means here, and where it is defined or enforced. Back to the library · the reading list.",
   "by": "incident.librarian@web-summit.dinis",
   "by_from": "header",
   "dated": "2026-11-10",
   "dated_from": "header",
   "made_from": [
    "CLAUDE.md",
    "PIPELINE.md",
    "ROADMAP.md",
    "library/README.md",
    "library/reading/README.md"
   ],
   "links_to": [
    "BRIEF-CORRECTIONS.md",
    "BRIEF.md",
    "CLAUDE.md",
    "PIPELINE.md",
    "REALITY.md",
    "ROADMAP.md",
    "SECURITY.md",
    "admin/tools/release.sh",
    "agents/JOBS.md",
    "agents/README.md",
    "data/keys.json",
    "incidents/2026-11-10-storm-charles/README.md",
    "incidents/2026-11-10-storm-charles/comms/README.md",
    "incidents/2026-11-10-storm-charles/data/README.md",
    "incidents/2026-11-10-storm-charles/data/decisions/README.md",
    "incidents/2026-11-10-storm-charles/data/decisions/graph.json",
    "incidents/2026-11-10-storm-charles/data/decisions/sources.json",
    "incidents/2026-11-10-storm-charles/data/signals.json",
    "incidents/2026-11-10-storm-charles/data/watch/websummit.json",
    "incidents/2026-11-10-storm-charles/data/weather/analysis.md",
    "incidents/2026-11-10-storm-charles/decisions.md",
    "incidents/2026-11-10-storm-charles/incident.json",
    "incidents/2026-11-10-storm-charles/material/wednesday-is-off-what-now.md",
    "incidents/2026-11-10-storm-charles/timeline.md",
    "library/README.md",
    "library/index.json",
    "library/reading/README.md",
    "tools/llm.mjs",
    "tools/timeline.mjs"
   ],
   "external_links": 1,
   "bytes": 9310,
   "sha256": "7c26ca5f48b8f46172df27a15f1c32dc5f86c330477b651df36fe5bcfdf4fd07",
   "served": true,
   "file": "https://storm-charles.promptugal.news/library/glossary.md",
   "page": "https://storm-charles.promptugal.news/library/glossary.html",
   "commits": {
    "n": 3,
    "first_by": "incident.librarian@web-summit.dinis",
    "first_at": "2026-11-10T23:41:40Z",
    "last_by": "incident.librarian@web-summit.dinis",
    "last_at": "2026-11-10T23:50:23Z",
    "last_commit": "55d31ab867",
    "agents": [
     "incident.librarian@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:50:23Z",
   "linked_from": [
    "library/reading/README.md"
   ]
  },
  {
   "path": "library/index.json",
   "kind": "library",
   "title": "The catalogue, for agents",
   "what": "Every file on this site: kind, what it is, who wrote it, when it changed, what it was made from, what links to it, sha256; and the gaps.",
   "by": "incident.librarian@web-summit.dinis",
   "by_from": "generated",
   "dated": "",
   "dated_from": "",
   "generated_by": "tools/library-index.mjs",
   "made_from": [
    "every file in this repository",
    "library/provenance.json"
   ],
   "links_to": [],
   "external_links": 0,
   "commits": null,
   "changed": "",
   "served": true,
   "file": "https://storm-charles.promptugal.news/library/index.json",
   "linked_from": [
    "agents/JOBS.md",
    "agents/librarian/policy.md",
    "library/glossary.md"
   ]
  },
  {
   "path": "library/provenance.json",
   "kind": "library",
   "title": "Who committed what",
   "what": "For each file: its commits' agents, the first and the last commit, and the sha256 the record holds for.",
   "by": "incident.librarian@web-summit.dinis",
   "by_from": "generated",
   "dated": "",
   "dated_from": "",
   "generated_by": "tools/library-index.mjs",
   "made_from": [
    "the commits of this repository (read in a full clone)"
   ],
   "links_to": [],
   "external_links": 0,
   "commits": null,
   "changed": "",
   "served": true,
   "file": "https://storm-charles.promptugal.news/library/provenance.json",
   "linked_from": [
    "agents/librarian/policy.md"
   ]
  },
  {
   "path": "library/reading/README.md",
   "kind": "reading",
   "title": "The reading list: what newsroom.sgit.ai's articles mean for this site",
   "what": "Kept by incident.librarian@web-summit.dinis, 2026-11-10, at Dinis Cruz's word (\"read a lot of the articles, because a lot of the stuff that we talk about here is related\"). Rendered from reading.json by tools/library-reading.mjs. Back to the library · the …",
   "by": "incident.librarian@web-summit.dinis",
   "by_from": "header",
   "dated": "",
   "dated_from": "",
   "made_from": [
    "library/README.md",
    "library/glossary.md",
    "library/reading/reading.json",
    "library/reading/standard.md",
    "tools/library-reading.mjs",
    "https://newsroom.sgit.ai/llms.txt"
   ],
   "links_to": [
    "library/README.md",
    "library/glossary.md",
    "library/reading/reading.json",
    "library/reading/standard.md",
    "tools/library-reading.mjs"
   ],
   "external_links": 29,
   "bytes": 29370,
   "sha256": "428ad30e6d6d01022670b9af25415030e67e31b41becfc1dbd239878de14917c",
   "served": true,
   "file": "https://storm-charles.promptugal.news/library/reading/README.md",
   "page": "https://storm-charles.promptugal.news/library/reading/",
   "commits": {
    "n": 2,
    "first_by": "incident.librarian@web-summit.dinis",
    "first_at": "2026-11-10T23:41:40Z",
    "last_by": "incident.librarian@web-summit.dinis",
    "last_at": "2026-11-10T23:47:05Z",
    "last_commit": "f509c53526",
    "agents": [
     "incident.librarian@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:47:05Z",
   "linked_from": [
    "library/drafts/now-json.md",
    "library/glossary.md",
    "library/reading/standard.md"
   ]
  },
  {
   "path": "library/reading/reading.json",
   "kind": "reading",
   "title": "reading.json",
   "what": "The reading list: what the articles and design pages on newsroom.sgit.ai say that bears on this site, each with its argument in two sentences (our summary, not a quotation) and what it means here: a rule to keep or a thing to build. Asked for by Dinis Cruz, …",
   "by": "incident.librarian@web-summit.dinis",
   "by_from": "its own fields",
   "dated": "2026-11-10T23:47Z",
   "dated_from": "\"updated\"",
   "made_from": [
    "https://newsroom.sgit.ai/llms.txt",
    "BRIEF.md",
    "tools/library-reading.mjs"
   ],
   "links_to": [],
   "external_links": 0,
   "bytes": 28378,
   "sha256": "5c3e8cd92f679760e871ade3bb91b7a842d4ffd944636b27a12fdcf50f909f03",
   "served": true,
   "file": "https://storm-charles.promptugal.news/library/reading/reading.json",
   "commits": {
    "n": 1,
    "first_by": "incident.librarian@web-summit.dinis",
    "first_at": "2026-11-10T23:47:05Z",
    "last_by": "incident.librarian@web-summit.dinis",
    "last_at": "2026-11-10T23:47:05Z",
    "last_commit": "f509c53526",
    "agents": [
     "incident.librarian@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:47:05Z",
   "linked_from": [
    "library/reading/README.md"
   ]
  },
  {
   "path": "library/reading/standard.md",
   "kind": "reading",
   "title": "This repository against the estate's standard",
   "what": "Kept by incident.librarian@web-summit.dinis, 10 November 2026. The standard is Every sgit repository: how the sites, the tools and the code are built (sgit.ai, first version, written 6 October 2026; site v0.7.87 when read at 23:41 UTC on 10 November 2026). …",
   "by": "incident.librarian@web-summit.dinis",
   "by_from": "header",
   "dated": "2026-11-10",
   "dated_from": "header",
   "made_from": [
    "REALITY.md",
    "library/README.md",
    "library/reading/README.md",
    "https://sgit.ai/docs/guidance/repositories.md"
   ],
   "links_to": [
    "BRIEF-CORRECTIONS.md",
    "BRIEF.md",
    "REALITY.md",
    "admin/build/validate.mjs",
    "admin/tools/release.sh",
    "agents/JOBS.md",
    "agents/dev/status.json",
    "app/login/pki/PIN.json",
    "data/keys.json",
    "library/README.md",
    "library/reading/README.md",
    "tools/lane-test.mjs"
   ],
   "external_links": 1,
   "bytes": 7245,
   "sha256": "ee9acc437f31e83552015f7c441d8c96216f27b343fe43a60a8a1d1dbc94bc67",
   "served": true,
   "file": "https://storm-charles.promptugal.news/library/reading/standard.md",
   "page": "https://storm-charles.promptugal.news/library/reading/standard.html",
   "commits": {
    "n": 1,
    "first_by": "incident.librarian@web-summit.dinis",
    "first_at": "2026-11-10T23:47:05Z",
    "last_by": "incident.librarian@web-summit.dinis",
    "last_at": "2026-11-10T23:47:05Z",
    "last_commit": "f509c53526",
    "agents": [
     "incident.librarian@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:47:05Z",
   "linked_from": [
    "library/reading/README.md"
   ]
  },
  {
   "path": "library/releases-runs.json",
   "kind": "library",
   "title": "releases-runs.json",
   "what": "The deploy workflow's runs as GitHub's Actions API listed them (run number, conclusion, the commit built, when created): a snapshot the librarian takes by hand each wake, because the build cannot call the API. tools/library-releases.mjs joins it with the tags.",
   "by": "incident.librarian@web-summit.dinis",
   "by_from": "its own fields",
   "dated": "2026-11-10T23:53Z",
   "dated_from": "\"updated\"",
   "made_from": [
    "https://github.com/PrompTugal/PrompTugal__News__Storm-Charles/actions/workflows/deploy.yml",
    "tools/library-releases.mjs"
   ],
   "links_to": [],
   "external_links": 0,
   "bytes": 8080,
   "sha256": "41971dac5a87dc87f8a66a8825b0b8ff1a18ba18c1d81cd202493c571896e140",
   "served": true,
   "file": "https://storm-charles.promptugal.news/library/releases-runs.json",
   "commits": {
    "n": 1,
    "first_by": "incident.librarian@web-summit.dinis",
    "first_at": "2026-11-10T23:54:56Z",
    "last_by": "incident.librarian@web-summit.dinis",
    "last_at": "2026-11-10T23:54:56Z",
    "last_commit": "da396fb9bc",
    "agents": [
     "incident.librarian@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:54:56Z",
   "linked_from": [
    "library/releases.json",
    "library/releases.md"
   ]
  },
  {
   "path": "library/releases.json",
   "kind": "library",
   "title": "releases.json",
   "what": "The release history of storm-charles.promptugal.news: for every CI run number, the version, what its commits say changed (one line per commit, the commit's own subject), and what is known about whether it was served. Built by tools/library-releases.mjs in the …",
   "by": "incident.librarian@web-summit.dinis",
   "by_from": "its own fields",
   "dated": "2026-11-10T23:53Z",
   "dated_from": "\"updated\"",
   "made_from": [
    "https://github.com/PrompTugal/PrompTugal__News__Storm-Charles/actions/workflows/deploy.yml",
    "tools/library-releases.mjs",
    "library/releases-runs.json"
   ],
   "links_to": [],
   "external_links": 0,
   "bytes": 25843,
   "sha256": "8112095d4152a26fbe04359eb6c5ea263cab76e28196a610b1da322a9a26c824",
   "served": true,
   "file": "https://storm-charles.promptugal.news/library/releases.json",
   "commits": {
    "n": 1,
    "first_by": "incident.librarian@web-summit.dinis",
    "first_at": "2026-11-10T23:54:56Z",
    "last_by": "incident.librarian@web-summit.dinis",
    "last_at": "2026-11-10T23:54:56Z",
    "last_commit": "da396fb9bc",
    "agents": [
     "incident.librarian@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:54:56Z",
   "linked_from": [
    "library/releases.md"
   ]
  },
  {
   "path": "library/releases.md",
   "kind": "library",
   "title": "The release history: every version, what changed, and whether it was served",
   "what": "Kept by incident.librarian@web-summit.dinis, 2026-11-10, 23:53 UTC. Built by tools/library-releases.mjs from the tags, the commit subjects and a snapshot of the deploy workflow's runs read at that time; the data is releases.json. Back to the library.",
   "by": "incident.librarian@web-summit.dinis",
   "by_from": "header",
   "dated": "",
   "dated_from": "",
   "made_from": [
    "BRIEF-CORRECTIONS.md",
    "library/README.md",
    "library/releases-runs.json",
    "library/releases.json",
    "tools/library-releases.mjs"
   ],
   "links_to": [
    "BRIEF-CORRECTIONS.md",
    "library/README.md",
    "library/releases-runs.json",
    "library/releases.json",
    "tools/library-releases.mjs"
   ],
   "external_links": 0,
   "bytes": 12306,
   "sha256": "ef8d793a70864826a653688469fcd4aa30e3d74a9517a86f4ced227bf19b3997",
   "served": true,
   "file": "https://storm-charles.promptugal.news/library/releases.md",
   "page": "https://storm-charles.promptugal.news/library/releases.html",
   "commits": {
    "n": 1,
    "first_by": "incident.librarian@web-summit.dinis",
    "first_at": "2026-11-10T23:54:56Z",
    "last_by": "incident.librarian@web-summit.dinis",
    "last_at": "2026-11-10T23:54:56Z",
    "last_commit": "da396fb9bc",
    "agents": [
     "incident.librarian@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:54:56Z",
   "linked_from": []
  },
  {
   "path": "outreach/README.md",
   "kind": "outreach",
   "title": "Outreach: who could give an official view, and what we would ask",
   "what": "Drafts only. Nothing here has been sent. A person sends every message (Dinis Cruz, or someone he names), from their own address, after reading it. No contact details are kept in this repository: each body is reached through the public contact or press page on …",
   "by": "incident.media@web-summit.dinis",
   "by_from": "header",
   "dated": "",
   "dated_from": "",
   "made_from": [
    "outreach/drafts.md",
    "outreach/questions.json",
    "research/weather-sites/outreach/eumetsat-registration.md",
    "research/weather-sites/outreach/ipma-radar.md"
   ],
   "links_to": [
    "incidents/2026-11-10-storm-charles/data/weather/analysis.md",
    "outreach/drafts.md",
    "outreach/questions.json",
    "research/weather-sites/outreach/eumetsat-registration.md",
    "research/weather-sites/outreach/ipma-radar.md"
   ],
   "external_links": 0,
   "bytes": 9359,
   "sha256": "ba63b69efe1fc41d5be452f380b9124bd1c4264e634caaf145a541498a85d0f9",
   "served": true,
   "file": "https://storm-charles.promptugal.news/outreach/README.md",
   "page": "https://storm-charles.promptugal.news/outreach/",
   "commits": null,
   "changed": "",
   "linked_from": [
    "outreach/drafts.md",
    "outreach/questions.json"
   ]
  },
  {
   "path": "outreach/drafts.md",
   "kind": "outreach",
   "title": "Draft messages, one per audience",
   "what": "Drafts. None sent. A person sends each one, from their own address, after editing it. […] marks what the sender fills in. No contact details are kept here: use the public contact or press page on the body's own website. Suggested timing: after the warnings …",
   "by": "incident.media@web-summit.dinis",
   "by_from": "header",
   "dated": "",
   "dated_from": "",
   "made_from": [
    "outreach/README.md"
   ],
   "links_to": [
    "outreach/README.md"
   ],
   "external_links": 0,
   "bytes": 6432,
   "sha256": "feb911eb517277276f17043bc7c253488ebc9a9fdff24f884e20825607e6af40",
   "served": true,
   "file": "https://storm-charles.promptugal.news/outreach/drafts.md",
   "page": "https://storm-charles.promptugal.news/outreach/drafts.html",
   "commits": {
    "n": 1,
    "first_by": "incident.media@web-summit.dinis",
    "first_at": "2026-11-10T23:58:08Z",
    "last_by": "incident.media@web-summit.dinis",
    "last_at": "2026-11-10T23:58:08Z",
    "last_commit": "96ff00c4d1",
    "agents": [
     "incident.media@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:58:08Z",
   "linked_from": [
    "outreach/README.md"
   ]
  },
  {
   "path": "outreach/questions.json",
   "kind": "outreach",
   "title": "questions.json",
   "what": "The questions the incident team would put to bodies and experts who could give an official view on Storm Charles, by field. Drafts: none has been sent; a person sends every message. No contact details are kept. Generated from outreach/README.md.",
   "by": "incident.media@web-summit.dinis",
   "by_from": "its own fields",
   "dated": "2026-11-10T23:50:00Z",
   "dated_from": "\"updated\"",
   "made_from": [
    "outreach/README.md"
   ],
   "links_to": [],
   "external_links": 0,
   "bytes": 9987,
   "sha256": "aa2bae77ed2b86901b3c4ff050cefb33f948bfdbb1cddb3dac1bf4079a969f76",
   "served": true,
   "file": "https://storm-charles.promptugal.news/outreach/questions.json",
   "commits": {
    "n": 1,
    "first_by": "incident.media@web-summit.dinis",
    "first_at": "2026-11-10T23:58:08Z",
    "last_by": "incident.media@web-summit.dinis",
    "last_at": "2026-11-10T23:58:08Z",
    "last_commit": "96ff00c4d1",
    "agents": [
     "incident.media@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:58:08Z",
   "linked_from": [
    "outreach/README.md"
   ]
  },
  {
   "path": "research/media/README.md",
   "kind": "research",
   "title": "Media watch: who is covering Storm Charles",
   "what": "Kept by incident.media@web-summit.dinis for the incident team (WS-214), at Dinis Cruz's word of 10 November 2026, ~23:40 UTC: \"a mapping for the social media, the media watch ... who are all the journalists, who is everybody covering\". First read: 10 …",
   "by": "incident.media@web-summit.dinis",
   "by_from": "header",
   "dated": "2026-11-10T23:40Z",
   "dated_from": "header",
   "made_from": [
    "https://prociv.gov.pt/",
    "https://www.ipma.pt/"
   ],
   "links_to": [
    "contribute.md",
    "research/media/coverage.json",
    "research/media/facts.json",
    "research/media/feeds.json",
    "research/media/first-on-each-fact.json",
    "research/media/live-entries.json",
    "research/media/outlets.json",
    "research/media/ranking.md",
    "research/media/seeds.txt",
    "research/media/wikipedia.json",
    "research/weather-sites/sites.json"
   ],
   "external_links": 6,
   "bytes": 7784,
   "sha256": "47e397c76b37a3d1ba2770f5386bef250c8a237b5d9c7e70bdae1b00e0f2dbf5",
   "served": true,
   "file": "https://storm-charles.promptugal.news/research/media/README.md",
   "page": "https://storm-charles.promptugal.news/research/media/",
   "commits": null,
   "changed": "2026-11-10T23:40Z",
   "linked_from": [
    "research/media/first-on-each-fact.json",
    "research/media/ranking.md"
   ]
  },
  {
   "path": "research/media/coverage.json",
   "kind": "research",
   "title": "coverage.json",
   "what": "Who is covering Storm Charles (Lisbon, 10 to 12 November 2026): press articles and live blogs (`articles`), the official channels (`official`) and what can be read of social platforms without a login (`social`). Every article: outlet, URL, title, the time the …",
   "by": "incident.media@web-summit.dinis",
   "by_from": "its own fields",
   "dated": "2026-11-11T00:03:52Z",
   "dated_from": "\"updated\"",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 186720,
   "sha256": "e2eebb4fdc6eb953d32d6a6779f55d77aecba1cdac343c93071ef65eb3136343",
   "served": true,
   "file": "https://storm-charles.promptugal.news/research/media/coverage.json",
   "commits": null,
   "changed": "2026-11-11T00:03:52Z",
   "linked_from": [
    "incidents/2026-11-10-storm-charles/timeline.md",
    "research/media/README.md",
    "research/media/outlets.json",
    "research/media/ranking.md"
   ]
  },
  {
   "path": "research/media/facts.json",
   "kind": "research",
   "title": "facts.json",
   "what": "The six keyed facts the media watch times the press against: for each, the primary source's time and where that time comes from, and the pattern (a regular expression over titles; for live-blog entries, over the entry) that says an item is about it. Kept by …",
   "by": "incident.media@web-summit.dinis",
   "by_from": "its own fields",
   "dated": "2026-11-11T00:10:00Z",
   "dated_from": "\"updated\"",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 3680,
   "sha256": "ec1aeeca5398d1cd68b435937d6a286a04a71d9376db6c5c1b4f7fc4af4d67e8",
   "served": true,
   "file": "https://storm-charles.promptugal.news/research/media/facts.json",
   "commits": null,
   "changed": "2026-11-11T00:10:00Z",
   "linked_from": [
    "research/media/README.md",
    "research/media/first-on-each-fact.json",
    "research/media/live-entries.json",
    "research/media/ranking.md"
   ]
  },
  {
   "path": "research/media/feeds.json",
   "kind": "research",
   "title": "feeds.json",
   "what": "The public RSS feeds and news sitemaps (as listed in each site's robots.txt) the media watch reads (research/media/tools/harvest.mjs). last_status is the HTTP status at the last run. RSS feeds that refused a plain bot (403 at 23:45 UTC, 10 Nov): SIC Notícias, …",
   "by": "",
   "by_from": "",
   "dated": "",
   "dated_from": "",
   "made_from": [
    "research/media/tools/harvest.mjs"
   ],
   "links_to": [],
   "external_links": 0,
   "bytes": 3414,
   "sha256": "ef405d41454e64d51646990392ffd2368b6a0e01770c435a0348736d113454ad",
   "served": true,
   "file": "https://storm-charles.promptugal.news/research/media/feeds.json",
   "commits": {
    "n": 1,
    "first_by": "incident.media@web-summit.dinis",
    "first_at": "2026-11-10T23:58:08Z",
    "last_by": "incident.media@web-summit.dinis",
    "last_at": "2026-11-10T23:58:08Z",
    "last_commit": "96ff00c4d1",
    "agents": [
     "incident.media@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:58:08Z",
   "linked_from": [
    "research/media/README.md"
   ]
  },
  {
   "path": "research/media/first-on-each-fact.json",
   "kind": "research",
   "title": "first-on-each-fact.json",
   "what": "Who was first on each of six keyed facts (facts.json), among the outlets we could read: each outlet's first article (by its title) or first timed entry inside its live blog, in order of the time the page itself gives, and the minutes after the primary …",
   "by": "incident.media@web-summit.dinis",
   "by_from": "its own fields",
   "dated": "2026-11-11T00:03:52Z",
   "dated_from": "\"updated\"",
   "made_from": [
    "research/media/facts.json",
    "research/media/README.md"
   ],
   "links_to": [],
   "external_links": 0,
   "bytes": 15749,
   "sha256": "133c313958a41a60d45cd0400e36e3e802f281341e2bf2226230ddae4633f058",
   "served": true,
   "file": "https://storm-charles.promptugal.news/research/media/first-on-each-fact.json",
   "commits": null,
   "changed": "2026-11-11T00:03:52Z",
   "linked_from": [
    "incidents/2026-11-10-storm-charles/timeline.md",
    "research/media/README.md",
    "research/media/ranking.md"
   ]
  },
  {
   "path": "research/media/live-entries.json",
   "kind": "research",
   "title": "live-entries.json",
   "what": "Timed entries inside the press live blogs on Storm Charles, for the keyed facts only (facts.json): the entry's own time (UTC), its title, the live blog's URL. An entry's text is read to match it and is not kept; no author is kept. Observador had no live blog …",
   "by": "incident.media@web-summit.dinis",
   "by_from": "its own fields",
   "dated": "2026-11-11T00:03:52Z",
   "dated_from": "\"updated\"",
   "made_from": [
    "research/media/facts.json"
   ],
   "links_to": [],
   "external_links": 0,
   "bytes": 8989,
   "sha256": "04322619c4576a948c1d7b9b9ea9ab2256ae313b23210ec17df03e8a3f030e8e",
   "served": true,
   "file": "https://storm-charles.promptugal.news/research/media/live-entries.json",
   "commits": null,
   "changed": "2026-11-11T00:03:52Z",
   "linked_from": [
    "research/media/README.md",
    "research/media/ranking.md"
   ]
  },
  {
   "path": "research/media/outlets.json",
   "kind": "research",
   "title": "outlets.json",
   "what": "The outlets seen covering Storm Charles (Lisbon, 10 to 12 November 2026), each with what coverage.json shows of it: counts, the by-lines as printed on its articles (reporters in their public professional role only: a name and a count, nothing else), and what …",
   "by": "incident.media@web-summit.dinis",
   "by_from": "its own fields",
   "dated": "2026-11-11T00:03:52Z",
   "dated_from": "\"updated\"",
   "made_from": [
    "research/media/coverage.json",
    "research/media/tools/rank.mjs"
   ],
   "links_to": [],
   "external_links": 0,
   "bytes": 19057,
   "sha256": "48e182725c94b431e2d009418aa628a8b954357324e2a15be9a197e3f8be43ce",
   "served": true,
   "file": "https://storm-charles.promptugal.news/research/media/outlets.json",
   "commits": null,
   "changed": "2026-11-11T00:03:52Z",
   "linked_from": [
    "research/media/README.md",
    "research/media/ranking.md"
   ]
  },
  {
   "path": "research/media/ranking.md",
   "kind": "research",
   "title": "Media watch: who is fastest, who is most sourced",
   "what": "Label: analysis (incident.media@web-summit.dinis), computed at 11 Nov 00:03 UTC from coverage.json: 214 items from 16 outlets, each read from the outlet's own page, feed or news sitemap. It ranks only what we could read: SIC Notícias, Jornal de Notícias, TSF, …",
   "by": "",
   "by_from": "",
   "dated": "",
   "dated_from": "",
   "made_from": [
    "research/media/coverage.json",
    "https://prociv.gov.pt/",
    "https://www.ipma.pt/"
   ],
   "links_to": [
    "contribute.md",
    "incidents/2026-11-10-storm-charles/timeline.md",
    "research/media/README.md",
    "research/media/coverage.json",
    "research/media/facts.json",
    "research/media/first-on-each-fact.json",
    "research/media/live-entries.json",
    "research/media/outlets.json"
   ],
   "external_links": 22,
   "bytes": 16921,
   "sha256": "6d222e9a2c57a9ac781cebea4fba32822044ca197ec8c21f15d327971646f250",
   "served": true,
   "file": "https://storm-charles.promptugal.news/research/media/ranking.md",
   "page": "https://storm-charles.promptugal.news/research/media/ranking.html",
   "commits": null,
   "changed": "",
   "linked_from": [
    "research/media/README.md"
   ]
  },
  {
   "path": "research/media/seeds.txt",
   "kind": "research",
   "title": "seeds.txt",
   "what": "URLs seen in an outlet's public feed at an earlier read and since scrolled out of it (one per line). harvest.mjs reads them again and keeps those about the storm.",
   "by": "",
   "by_from": "",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 7030,
   "sha256": "6a0258085397d6de65b3b603ecc83c2c9db4e3ee2dcc35def3c887303454ef41",
   "served": true,
   "file": "https://storm-charles.promptugal.news/research/media/seeds.txt",
   "commits": {
    "n": 1,
    "first_by": "incident.media@web-summit.dinis",
    "first_at": "2026-11-10T23:58:08Z",
    "last_by": "incident.media@web-summit.dinis",
    "last_at": "2026-11-10T23:58:08Z",
    "last_commit": "96ff00c4d1",
    "agents": [
     "incident.media@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:58:08Z",
   "linked_from": [
    "research/media/README.md"
   ]
  },
  {
   "path": "research/media/tools/harvest.mjs",
   "kind": "research",
   "title": "harvest.mjs",
   "what": "Media watch harvester (incident.media@web-summit.dinis). No dependencies, Node 18+. MEDIA_RAW=<dir outside git node research/media/tools/harvest.mjs 1. reads the public RSS feeds in research/media/feeds.json and keeps items whose title or link is about the …",
   "by": "incident.media@web-summit.dinis",
   "by_from": "header",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 12911,
   "sha256": "199ea1d4ff5fa0bd4b61265630f7bfacfeaf47ac570b7f67dc4939b7df8b8858",
   "served": true,
   "file": "https://storm-charles.promptugal.news/research/media/tools/harvest.mjs",
   "commits": {
    "n": 1,
    "first_by": "incident.media@web-summit.dinis",
    "first_at": "2026-11-10T23:58:08Z",
    "last_by": "incident.media@web-summit.dinis",
    "last_at": "2026-11-10T23:58:08Z",
    "last_commit": "96ff00c4d1",
    "agents": [
     "incident.media@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:58:08Z",
   "linked_from": [
    "research/media/feeds.json"
   ]
  },
  {
   "path": "research/media/tools/live.mjs",
   "kind": "research",
   "title": "live.mjs",
   "what": "The timed entries inside the press live blogs (incident.media@web-summit.dinis). Node 18+, no dependencies. MEDIA_RAW=<dir outside git node research/media/tools/live.mjs - research/media/live-entries.json Reads each live blog once, takes each entry's own time …",
   "by": "incident.media@web-summit.dinis",
   "by_from": "header",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 7101,
   "sha256": "b27556dba4f1479867a2281deec80c91ffc4d9b9ced8e2ab4cb47e41379a165a",
   "served": true,
   "file": "https://storm-charles.promptugal.news/research/media/tools/live.mjs",
   "commits": null,
   "changed": "",
   "linked_from": []
  },
  {
   "path": "research/media/tools/rank.mjs",
   "kind": "research",
   "title": "rank.mjs",
   "what": "Media watch, last step (incident.media@web-summit.dinis): from research/media/coverage.json's articles it writes - coverage.json's header, counts and official list (official channels, from data/decisions/sources.json); - outlets.json (per outlet: counts, …",
   "by": "incident.media@web-summit.dinis",
   "by_from": "header",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 19987,
   "sha256": "2720ca723b589d459d8e0eef01dc2b476d2c1855c9e4a26a37d14b642a955199",
   "served": true,
   "file": "https://storm-charles.promptugal.news/research/media/tools/rank.mjs",
   "commits": null,
   "changed": "",
   "linked_from": [
    "research/media/outlets.json"
   ]
  },
  {
   "path": "research/media/tools/social.mjs",
   "kind": "research",
   "title": "social.mjs",
   "what": "Official and social channels on the storm, read without a login (incident.media@web-summit.dinis). Node 18+. node research/media/tools/social.mjs - the official and social keys of research/media/coverage.json Rule: an organisation's account is listed by name …",
   "by": "incident.media@web-summit.dinis",
   "by_from": "header",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 8135,
   "sha256": "412b6c918b19e80ef2064b37c857418835d1f60c30dc0794b6f8a387232e7005",
   "served": true,
   "file": "https://storm-charles.promptugal.news/research/media/tools/social.mjs",
   "commits": {
    "n": 1,
    "first_by": "incident.media@web-summit.dinis",
    "first_at": "2026-11-10T23:58:08Z",
    "last_by": "incident.media@web-summit.dinis",
    "last_at": "2026-11-10T23:58:08Z",
    "last_commit": "96ff00c4d1",
    "agents": [
     "incident.media@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:58:08Z",
   "linked_from": []
  },
  {
   "path": "research/media/tools/wikipedia.mjs",
   "kind": "research",
   "title": "wikipedia.mjs",
   "what": "Wikipedia watch (incident.media@web-summit.dinis): the edit history of the pages about the storm, through MediaWiki's REST API (/w/rest.php/v1/page/<title/bare and /history). One request every 5 seconds; revision times and sizes only: editors' names and edit …",
   "by": "incident.media@web-summit.dinis",
   "by_from": "header",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 4450,
   "sha256": "0df3e0e4ca7f31317a141db3349d469a5f19291f7113fc87bac03b829cfee64d",
   "served": true,
   "file": "https://storm-charles.promptugal.news/research/media/tools/wikipedia.mjs",
   "commits": {
    "n": 1,
    "first_by": "incident.media@web-summit.dinis",
    "first_at": "2026-11-10T23:58:08Z",
    "last_by": "incident.media@web-summit.dinis",
    "last_at": "2026-11-10T23:58:08Z",
    "last_commit": "96ff00c4d1",
    "agents": [
     "incident.media@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:58:08Z",
   "linked_from": []
  },
  {
   "path": "research/media/wikipedia.json",
   "kind": "research",
   "title": "wikipedia.json",
   "what": "Wikipedia on Storm Charles: which pages exist (pt, en; es checked) and their edit history: revision id, time (UTC), size in bytes and change in bytes. Editors' names and edit comments are not kept. Read through MediaWiki's REST API, one request every 5 …",
   "by": "incident.media@web-summit.dinis",
   "by_from": "its own fields",
   "dated": "2026-11-10T23:45:21Z",
   "dated_from": "\"updated\"",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 9603,
   "sha256": "3fbfe37885a651d0e656017ad911142d16e9c407d5eed9e7e66fcebd2a7bcadf",
   "served": true,
   "file": "https://storm-charles.promptugal.news/research/media/wikipedia.json",
   "commits": {
    "n": 1,
    "first_by": "incident.media@web-summit.dinis",
    "first_at": "2026-11-10T23:58:08Z",
    "last_by": "incident.media@web-summit.dinis",
    "last_at": "2026-11-10T23:58:08Z",
    "last_commit": "96ff00c4d1",
    "agents": [
     "incident.media@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:58:08Z",
   "linked_from": [
    "research/media/README.md"
   ]
  },
  {
   "path": "research/weather-sites/README.md",
   "kind": "research",
   "title": "The best weather sites, and who is covering Storm Charles",
   "what": "Research for the home page, by incident.weatherwatch@web-summit.dinis, for incident.designer@web-summit.dinis. The data is sites.json, with gap.json (who shows what) and imagery.json (what imagery we may show): 106 entries in three maps (52 worldwide, 27 …",
   "by": "incident.weatherwatch@web-summit.dinis",
   "by_from": "header",
   "dated": "",
   "dated_from": "",
   "made_from": [
    "research/weather-sites/gap.json",
    "research/weather-sites/imagery.json",
    "research/weather-sites/sites.json"
   ],
   "links_to": [
    "research/weather-sites/gap.json",
    "research/weather-sites/imagery.json",
    "research/weather-sites/meteoalarm-check.json",
    "research/weather-sites/outreach/README.md",
    "research/weather-sites/sites.json",
    "research/weather-sites/tools/gen.py",
    "research/weather-sites/tools/probe.sh"
   ],
   "external_links": 52,
   "bytes": 23236,
   "sha256": "293746c7f2fe15510aeaf454917d29335b82f81ea49bba3be2a80b197c5c9bd7",
   "served": true,
   "file": "https://storm-charles.promptugal.news/research/weather-sites/README.md",
   "page": "https://storm-charles.promptugal.news/research/weather-sites/",
   "commits": {
    "n": 5,
    "first_by": "incident.weatherwatch@web-summit.dinis",
    "first_at": "2026-11-10T23:47:45Z",
    "last_by": "incident.weatherwatch@web-summit.dinis",
    "last_at": "2026-11-10T23:58:52Z",
    "last_commit": "0664a6abf5",
    "agents": [
     "incident.weatherwatch@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:58:52Z",
   "linked_from": []
  },
  {
   "path": "research/weather-sites/gap.json",
   "kind": "research",
   "title": "gap.json",
   "what": "The gap analysis: for each of the 27 entries of the Storm Charles map in sites.json, whether it shows the six things this site is built on. Kept by incident.weatherwatch@web-summit.dinis. Judgements from one read of each page on 10 November 2026 (23:38Z to …",
   "by": "incident.weatherwatch@web-summit.dinis",
   "by_from": "its own fields",
   "dated": "2026-11-10T23:58Z",
   "dated_from": "\"updated\"",
   "made_from": [
    "research/weather-sites/sites.json"
   ],
   "links_to": [],
   "external_links": 0,
   "bytes": 17601,
   "sha256": "dfd5e4a1caac715b4683e1762c9fb81c4fb38a78dfd310f54c57d3bda2a5dd75",
   "served": true,
   "file": "https://storm-charles.promptugal.news/research/weather-sites/gap.json",
   "commits": {
    "n": 1,
    "first_by": "incident.weatherwatch@web-summit.dinis",
    "first_at": "2026-11-10T23:56:27Z",
    "last_by": "incident.weatherwatch@web-summit.dinis",
    "last_at": "2026-11-10T23:56:27Z",
    "last_commit": "024562bad3",
    "agents": [
     "incident.weatherwatch@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:56:27Z",
   "linked_from": [
    "design/round-8.md",
    "research/weather-sites/README.md"
   ]
  },
  {
   "path": "research/weather-sites/imagery.json",
   "kind": "research",
   "title": "imagery.json",
   "what": "Imagery we may show: the reuse terms as read on each owner's own page, with the page's address, and a verdict for the designer: hotlink (load the owner's image or tiles in our page), copy (serve our own copy: never in git, so not available to us now) or link …",
   "by": "incident.weatherwatch@web-summit.dinis",
   "by_from": "its own fields",
   "dated": "2026-11-10T23:58Z",
   "dated_from": "\"updated\"",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 13033,
   "sha256": "dfa33b9da744c363368541b24c39d12d24727a3c020ad17a7ea262bc4832d54f",
   "served": true,
   "file": "https://storm-charles.promptugal.news/research/weather-sites/imagery.json",
   "commits": {
    "n": 1,
    "first_by": "incident.weatherwatch@web-summit.dinis",
    "first_at": "2026-11-10T23:56:27Z",
    "last_by": "incident.weatherwatch@web-summit.dinis",
    "last_at": "2026-11-10T23:56:27Z",
    "last_commit": "024562bad3",
    "agents": [
     "incident.weatherwatch@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:56:27Z",
   "linked_from": [
    "design/README.md",
    "design/round-8.md",
    "research/weather-sites/README.md",
    "research/weather-sites/outreach/README.md"
   ]
  },
  {
   "path": "research/weather-sites/meteoalarm-check.json",
   "kind": "research",
   "title": "meteoalarm-check.json",
   "what": "Does this site's use of IPMA's warnings meet MeteoAlarm's Terms and Conditions (https://www.meteoalarm.org/en/live/page/terms-and-conditions, last updated 15/03/2024, read 2026-11-10T23:53Z)? Checked by incident.weatherwatch@web-summit.dinis at the …",
   "by": "",
   "by_from": "",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 4069,
   "sha256": "9ce2225e789df3777e0a3fe6841ae63a0f2e1524d1332fe6fe6362798e35ab76",
   "served": true,
   "file": "https://storm-charles.promptugal.news/research/weather-sites/meteoalarm-check.json",
   "commits": {
    "n": 1,
    "first_by": "incident.weatherwatch@web-summit.dinis",
    "first_at": "2026-11-10T23:58:52Z",
    "last_by": "incident.weatherwatch@web-summit.dinis",
    "last_at": "2026-11-10T23:58:52Z",
    "last_commit": "0664a6abf5",
    "agents": [
     "incident.weatherwatch@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:58:52Z",
   "linked_from": [
    "design/round-10.md",
    "research/weather-sites/README.md"
   ]
  },
  {
   "path": "research/weather-sites/outreach/README.md",
   "kind": "research",
   "title": "Drafts for a person to send (weather imagery)",
   "what": "Drafts only, by incident.weatherwatch@web-summit.dinis, asked for by incident.conductor@ on 10 November 2026. A person sends; no agent does. No contact details are kept here: the sender finds the current address on the body's own contact page. The terms each …",
   "by": "incident.weatherwatch@web-summit.dinis",
   "by_from": "header",
   "dated": "2026-11-10",
   "dated_from": "header",
   "made_from": [
    "research/weather-sites/imagery.json",
    "research/weather-sites/outreach/eumetsat-registration.md",
    "research/weather-sites/outreach/ipma-radar.md"
   ],
   "links_to": [
    "research/weather-sites/imagery.json",
    "research/weather-sites/outreach/eumetsat-registration.md",
    "research/weather-sites/outreach/ipma-radar.md"
   ],
   "external_links": 0,
   "bytes": 667,
   "sha256": "274519c1340842f46e34d9464e04c46cecf3e491ad6f92bee786281d91a9a630",
   "served": true,
   "file": "https://storm-charles.promptugal.news/research/weather-sites/outreach/README.md",
   "page": "https://storm-charles.promptugal.news/research/weather-sites/outreach/",
   "commits": {
    "n": 1,
    "first_by": "incident.weatherwatch@web-summit.dinis",
    "first_at": "2026-11-10T23:58:52Z",
    "last_by": "incident.weatherwatch@web-summit.dinis",
    "last_at": "2026-11-10T23:58:52Z",
    "last_commit": "0664a6abf5",
    "agents": [
     "incident.weatherwatch@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:58:52Z",
   "linked_from": [
    "research/weather-sites/README.md"
   ]
  },
  {
   "path": "research/weather-sites/outreach/eumetsat-registration.md",
   "kind": "research",
   "title": "Draft: EUMETSAT, registering and accepting the licence",
   "what": "Status: steps for a person. No agent registers or accepts terms: accepting a licence binds the person or organisation that accepts it. Read from EUMETSAT's guide (https://user.eumetsat.int/resources/user-guides/data-registration-and-licensing) on 10 November …",
   "by": "",
   "by_from": "",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 2992,
   "sha256": "34141bb43bb2573309f1919e550485f4ab5b300c4f48f132f4755a707603da12",
   "served": true,
   "file": "https://storm-charles.promptugal.news/research/weather-sites/outreach/eumetsat-registration.md",
   "page": "https://storm-charles.promptugal.news/research/weather-sites/outreach/eumetsat-registration.html",
   "commits": {
    "n": 1,
    "first_by": "incident.weatherwatch@web-summit.dinis",
    "first_at": "2026-11-10T23:58:52Z",
    "last_by": "incident.weatherwatch@web-summit.dinis",
    "last_at": "2026-11-10T23:58:52Z",
    "last_commit": "0664a6abf5",
    "agents": [
     "incident.weatherwatch@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:58:52Z",
   "linked_from": [
    "outreach/README.md",
    "research/weather-sites/outreach/README.md"
   ]
  },
  {
   "path": "research/weather-sites/outreach/ipma-radar.md",
   "kind": "research",
   "title": "Draft: to IPMA, about showing the radar image",
   "what": "Status: draft, not sent. A person sends it, in their own name. Where to send: IPMA's own contact page (\"Contacto\" on ipma.pt); no address is kept here. Before sending, Dinis settles the two points in square brackets.",
   "by": "",
   "by_from": "",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 1,
   "bytes": 3442,
   "sha256": "b62b241b19df5c9b2c8644099de156c5828a699f57fa0a02fa5af5f9143e2328",
   "served": true,
   "file": "https://storm-charles.promptugal.news/research/weather-sites/outreach/ipma-radar.md",
   "page": "https://storm-charles.promptugal.news/research/weather-sites/outreach/ipma-radar.html",
   "commits": {
    "n": 1,
    "first_by": "incident.weatherwatch@web-summit.dinis",
    "first_at": "2026-11-10T23:58:52Z",
    "last_by": "incident.weatherwatch@web-summit.dinis",
    "last_at": "2026-11-10T23:58:52Z",
    "last_commit": "0664a6abf5",
    "agents": [
     "incident.weatherwatch@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:58:52Z",
   "linked_from": [
    "outreach/README.md",
    "research/weather-sites/outreach/README.md"
   ]
  },
  {
   "path": "research/weather-sites/sites.json",
   "kind": "research",
   "title": "sites.json",
   "what": "Three maps of weather sites, for incident.designer@ and whoever builds the home page: (a) worldwide, (b) Portugal, (c) who covers Storm Charles and how. Kept by incident.weatherwatch@web-summit.dinis. Public sources only. This is research about how others …",
   "by": "incident.weatherwatch@web-summit.dinis",
   "by_from": "its own fields",
   "dated": "2026-11-10T23:50Z",
   "dated_from": "\"updated\"",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 103342,
   "sha256": "399be47303d468f5f7ea6a95906df78e305f3e49a7e39c0568b27c6d5ceec940",
   "served": true,
   "file": "https://storm-charles.promptugal.news/research/weather-sites/sites.json",
   "commits": {
    "n": 2,
    "first_by": "incident.weatherwatch@web-summit.dinis",
    "first_at": "2026-11-10T23:47:45Z",
    "last_by": "incident.weatherwatch@web-summit.dinis",
    "last_at": "2026-11-10T23:51:22Z",
    "last_commit": "1550a1caef",
    "agents": [
     "incident.weatherwatch@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:51:22Z",
   "linked_from": [
    "data/graph/README.md",
    "research/media/README.md",
    "research/weather-sites/README.md",
    "research/weather-sites/gap.json"
   ]
  },
  {
   "path": "research/weather-sites/tools/gap.py",
   "kind": "research",
   "title": "gap.py",
   "what": "Writes gap.json and imagery.json beside sites.json. Usage: gap.py <dir with sites.json.",
   "by": "",
   "by_from": "",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 19833,
   "sha256": "55f0f556df08a6c5a61fbae91a46fa99225b4b951511fbabaf9f76ab0827737a",
   "served": true,
   "file": "https://storm-charles.promptugal.news/research/weather-sites/tools/gap.py",
   "commits": {
    "n": 1,
    "first_by": "incident.weatherwatch@web-summit.dinis",
    "first_at": "2026-11-10T23:56:27Z",
    "last_by": "incident.weatherwatch@web-summit.dinis",
    "last_at": "2026-11-10T23:56:27Z",
    "last_commit": "024562bad3",
    "agents": [
     "incident.weatherwatch@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:56:27Z",
   "linked_from": []
  },
  {
   "path": "research/weather-sites/tools/gen.py",
   "kind": "research",
   "title": "gen.py",
   "what": "Builds research/weather-sites/sites.json from the probe results (status, time read) and the entries below.",
   "by": "",
   "by_from": "",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 74002,
   "sha256": "38ad3387b774488f1b118a22bf1a8118377b4043d7fac3dcef2728977d4fd2b9",
   "served": true,
   "file": "https://storm-charles.promptugal.news/research/weather-sites/tools/gen.py",
   "commits": {
    "n": 2,
    "first_by": "incident.weatherwatch@web-summit.dinis",
    "first_at": "2026-11-10T23:47:45Z",
    "last_by": "incident.weatherwatch@web-summit.dinis",
    "last_at": "2026-11-10T23:51:22Z",
    "last_commit": "1550a1caef",
    "agents": [
     "incident.weatherwatch@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:51:22Z",
   "linked_from": [
    "research/weather-sites/README.md"
   ]
  },
  {
   "path": "research/weather-sites/tools/probe.sh",
   "kind": "research",
   "title": "probe.sh",
   "what": "usage: probe.sh <outdir < urls ; one line per url: id<TABurl",
   "by": "",
   "by_from": "",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 713,
   "sha256": "dd4cc8205f2b0178dc7e09cd56a89be19beba8a56ea8384f8880eda73ea486d3",
   "served": true,
   "file": "https://storm-charles.promptugal.news/research/weather-sites/tools/probe.sh",
   "commits": {
    "n": 1,
    "first_by": "incident.weatherwatch@web-summit.dinis",
    "first_at": "2026-11-10T23:47:45Z",
    "last_by": "incident.weatherwatch@web-summit.dinis",
    "last_at": "2026-11-10T23:47:45Z",
    "last_commit": "56a4837b93",
    "agents": [
     "incident.weatherwatch@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:47:45Z",
   "linked_from": [
    "research/weather-sites/README.md"
   ]
  },
  {
   "path": "tools/agents-commits.mjs",
   "kind": "tool",
   "title": "agents-commits.mjs",
   "what": "The last commits on dev as data: git log - data/agents/commits.json (kept by incident.observability@web-summit.dinis). node tools/agents-commits.mjs Who pushed what, when, and for whom (the Agent: and For: trailers): the same shape the agents page makes from …",
   "by": "incident.observability@web-summit.dinis",
   "by_from": "header",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 2991,
   "sha256": "bed15150094637b36b4325491ee3f97609598e82cb7cdc7a41a8a8b489edddc2",
   "served": true,
   "file": "https://storm-charles.promptugal.news/tools/agents-commits.mjs",
   "commits": {
    "n": 2,
    "first_by": "incident.observability@web-summit.dinis",
    "first_at": "2026-11-10T23:47:37Z",
    "last_by": "incident.observability@web-summit.dinis",
    "last_at": "2026-11-10T23:54:50Z",
    "last_commit": "3565f28d74",
    "agents": [
     "incident.observability@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:54:50Z",
   "linked_from": [
    "app/agents/about.md",
    "data/agents/commits.json"
   ]
  },
  {
   "path": "tools/agents-index.mjs",
   "kind": "tool",
   "title": "agents-index.mjs",
   "what": "The team's index: repository - data/agents/index.json (kept by incident.observability@web-summit.dinis). node tools/agents-index.mjs write it node tools/agents-index.mjs --check exit 1 if the committed file is behind the repository node tools/agents-index.mjs …",
   "by": "incident.observability@web-summit.dinis",
   "by_from": "header",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 6575,
   "sha256": "a7bd9675bab42c8e77593862f38b90384ba62746d3a296feaf960b8f9ab6b420",
   "served": true,
   "file": "https://storm-charles.promptugal.news/tools/agents-index.mjs",
   "commits": {
    "n": 2,
    "first_by": "incident.observability@web-summit.dinis",
    "first_at": "2026-11-10T23:41:15Z",
    "last_by": "incident.observability@web-summit.dinis",
    "last_at": "2026-11-10T23:54:50Z",
    "last_commit": "3565f28d74",
    "agents": [
     "incident.observability@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:54:50Z",
   "linked_from": [
    "app/agents/about.md",
    "data/agents/index.json"
   ]
  },
  {
   "path": "tools/agents-ledger.mjs",
   "kind": "tool",
   "title": "agents-ledger.mjs",
   "what": "The model ledger, as counts: this machine's ledger (tools/llm.mjs writes one line per model call to INCIDENT_LEDGER_DIR, default ~/.incident-ledger, never git) - data/agents/ledger/<role.json. Kept by incident.observability@web-summit.dinis. AGENT=<your name …",
   "by": "incident.observability@web-summit.dinis",
   "by_from": "header",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 3788,
   "sha256": "74e84ffebc7b141e9b6c9518b6e6176aa8c9d6bc29ea33275c70fd756be5f275",
   "served": true,
   "file": "https://storm-charles.promptugal.news/tools/agents-ledger.mjs",
   "commits": {
    "n": 1,
    "first_by": "incident.observability@web-summit.dinis",
    "first_at": "2026-11-10T23:54:50Z",
    "last_by": "incident.observability@web-summit.dinis",
    "last_at": "2026-11-10T23:54:50Z",
    "last_commit": "3565f28d74",
    "agents": [
     "incident.observability@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:54:50Z",
   "linked_from": [
    "app/agents/about.md"
   ]
  },
  {
   "path": "tools/agents-pin.mjs",
   "kind": "tool",
   "title": "agents-pin.mjs",
   "what": "Pinned copies of other teams' engines (kept by incident.observability@web-summit.dinis): copy named files, unchanged, from a checkout of their repository into app/agents/vendor/<name@<short commit/ and write pin.json beside them (repository, commit, each …",
   "by": "incident.observability@web-summit.dinis",
   "by_from": "header",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 3600,
   "sha256": "7b83eba46ce9a0c9232feb3500ebcb456eca602f11db82b9182ead0c08391a00",
   "served": true,
   "file": "https://storm-charles.promptugal.news/tools/agents-pin.mjs",
   "commits": {
    "n": 2,
    "first_by": "incident.observability@web-summit.dinis",
    "first_at": "2026-11-10T23:47:37Z",
    "last_by": "incident.observability@web-summit.dinis",
    "last_at": "2026-11-10T23:54:50Z",
    "last_commit": "3565f28d74",
    "agents": [
     "incident.observability@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:54:50Z",
   "linked_from": [
    "app/agents/vendor/live-map@57636ac/pin.json",
    "app/agents/vendor/universe@57636ac/pin.json"
   ]
  },
  {
   "path": "tools/graph-build.mjs",
   "kind": "tool",
   "title": "graph-build.mjs",
   "what": "The graph of an incident, built from its JSON files and never by hand (incident.graph@web-summit.dinis). node tools/graph-build.mjs [incidents/<id] writes data/graph/storm.json and data/graph/tables/.json node tools/graph-build.mjs --check exits 1 if what is …",
   "by": "incident.graph@web-summit.dinis",
   "by_from": "header",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 36140,
   "sha256": "8e5afbb49f0200030ff451cef53cc9861b9e9726562324dc5d85b648ff131f64",
   "served": true,
   "file": "https://storm-charles.promptugal.news/tools/graph-build.mjs",
   "commits": {
    "n": 3,
    "first_by": "incident.graph@web-summit.dinis",
    "first_at": "2026-11-10T23:44:08Z",
    "last_by": "incident.graph@web-summit.dinis",
    "last_at": "2026-11-11T00:00:52Z",
    "last_commit": "39f465a097",
    "agents": [
     "incident.graph@web-summit.dinis"
    ]
   },
   "changed": "2026-11-11T00:00:52Z",
   "linked_from": [
    "data/graph/README.md",
    "data/graph/ontology.json",
    "data/graph/queries.json",
    "data/graph/storm-elsewhere.json",
    "data/graph/storm.json",
    "data/graph/tables/actors.json",
    "data/graph/tables/decisions.json",
    "data/graph/tables/signals.json",
    "data/graph/tables/sources.json",
    "data/graph/tables/timeline.json",
    "data/graph/tables/warnings.json"
   ]
  },
  {
   "path": "tools/graph-places.mjs",
   "kind": "tool",
   "title": "graph-places.mjs",
   "what": "IPMA's warning areas, by code: node tools/graph-places.mjs <the file fetched from IPMA <UTC time read Reads IPMA's own list (https://api.ipma.pt/open-data/distrits-islands.json), keeps one row per warning area (idAreaAviso): its code, the name of its seat, …",
   "by": "",
   "by_from": "",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 1523,
   "sha256": "de4de0dff7915e72687b592b2040d3a1b6575d996c9da32604b33aada1c790cb",
   "served": true,
   "file": "https://storm-charles.promptugal.news/tools/graph-places.mjs",
   "commits": {
    "n": 1,
    "first_by": "incident.graph@web-summit.dinis",
    "first_at": "2026-11-10T23:44:08Z",
    "last_by": "incident.graph@web-summit.dinis",
    "last_at": "2026-11-10T23:44:08Z",
    "last_commit": "9b42a2e674",
    "agents": [
     "incident.graph@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:44:08Z",
   "linked_from": [
    "data/graph/ref/ipma-areas.json"
   ]
  },
  {
   "path": "tools/lane-common.mjs",
   "kind": "tool",
   "title": "lane-common.mjs",
   "what": "lane-common.mjs: what the lane tools share (incident.identity@web-summit.dinis; the design is SECURITY.md). The same pinned pki.sgit.ai modules the browser runs (app/login/pki/), over Node's Web Crypto. No dependencies.",
   "by": "incident.identity@web-summit.dinis",
   "by_from": "header",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 7644,
   "sha256": "048a860f3c13e87cc03138b9b77ccfde208b64de8f35aaf48e0522ddbac0dd78",
   "served": true,
   "file": "https://storm-charles.promptugal.news/tools/lane-common.mjs",
   "commits": {
    "n": 2,
    "first_by": "incident.identity@web-summit.dinis",
    "first_at": "2026-11-10T23:47:18Z",
    "last_by": "incident.identity@web-summit.dinis",
    "last_at": "2026-11-10T23:53:31Z",
    "last_commit": "6360a5f3c7",
    "agents": [
     "incident.identity@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:53:31Z",
   "linked_from": []
  },
  {
   "path": "tools/lane-configure.mjs",
   "kind": "tool",
   "title": "lane-configure.mjs",
   "what": "lane-configure.mjs: open the feedback lane on an existing vault (the bridge vault). It does not create the vault. SG_SEND_TOKEN=<access token LANE_VAULT_KEY=<the vault's key node tools/lane-configure.mjs [--lanes 2] [--endpoint URL] node …",
   "by": "",
   "by_from": "",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 4243,
   "sha256": "cbde528bb04502fb17172102dd3b89ff8e783d1c7bd576ad7c580a109fc27adf",
   "served": true,
   "file": "https://storm-charles.promptugal.news/tools/lane-configure.mjs",
   "commits": {
    "n": 1,
    "first_by": "incident.identity@web-summit.dinis",
    "first_at": "2026-11-10T23:53:31Z",
    "last_by": "incident.identity@web-summit.dinis",
    "last_at": "2026-11-10T23:53:31Z",
    "last_commit": "6360a5f3c7",
    "agents": [
     "incident.identity@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:53:31Z",
   "linked_from": [
    "SECURITY.md"
   ]
  },
  {
   "path": "tools/lane-drain.mjs",
   "kind": "tool",
   "title": "lane-drain.mjs",
   "what": "lane-drain.mjs: the conductor's drain, each wake. Lists the lane (metadata only), fetches what is pending, opens each message with this agent's key, judges it (lane-common.mjs judge), prints one JSON line per message, keeps the ciphertext outside git (a …",
   "by": "",
   "by_from": "",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 3279,
   "sha256": "f8e9ab20db2a18774610c2d4aa25cb5924113c1f33523f5c79864ddc85002d2c",
   "served": true,
   "file": "https://storm-charles.promptugal.news/tools/lane-drain.mjs",
   "commits": {
    "n": 2,
    "first_by": "incident.identity@web-summit.dinis",
    "first_at": "2026-11-10T23:47:18Z",
    "last_by": "incident.identity@web-summit.dinis",
    "last_at": "2026-11-10T23:53:31Z",
    "last_commit": "6360a5f3c7",
    "agents": [
     "incident.identity@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:53:31Z",
   "linked_from": []
  },
  {
   "path": "tools/lane-e2e.mjs",
   "kind": "tool",
   "title": "lane-e2e.mjs",
   "what": "lane-e2e.mjs: the login and the lane in a real browser (Chromium through Playwright, which is not a dependency of this repository: the test says so and stops where it is not installed). Throwaway keys; a virtual passkey with PRF; the lane's server stood in …",
   "by": "",
   "by_from": "",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 11179,
   "sha256": "d5643007174f58b3c2c8076eb5ce1c5f55c4b89630ddb90072772a60534856c7",
   "served": true,
   "file": "https://storm-charles.promptugal.news/tools/lane-e2e.mjs",
   "commits": {
    "n": 1,
    "first_by": "incident.identity@web-summit.dinis",
    "first_at": "2026-11-10T23:47:18Z",
    "last_by": "incident.identity@web-summit.dinis",
    "last_at": "2026-11-10T23:47:18Z",
    "last_commit": "f0369a0290",
    "agents": [
     "incident.identity@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:47:18Z",
   "linked_from": []
  },
  {
   "path": "tools/lane-open.mjs",
   "kind": "tool",
   "title": "lane-open.mjs",
   "what": "lane-open.mjs: open what Dinis sealed to this agent, and judge it. One JSON line per message. node tools/lane-open.mjs <m1 code | file holding one [...] (or the text on stdin) \"accept\": true only for a message signed by a sender named in data/lanes.json …",
   "by": "",
   "by_from": "",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 1150,
   "sha256": "28d4870af4bd5c67a7f30110e2990fbe4e2fa18c3bfd6bf6b23bed201adcbda9",
   "served": true,
   "file": "https://storm-charles.promptugal.news/tools/lane-open.mjs",
   "commits": {
    "n": 1,
    "first_by": "incident.identity@web-summit.dinis",
    "first_at": "2026-11-10T23:47:18Z",
    "last_by": "incident.identity@web-summit.dinis",
    "last_at": "2026-11-10T23:47:18Z",
    "last_commit": "f0369a0290",
    "agents": [
     "incident.identity@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:47:18Z",
   "linked_from": [
    "SECURITY.md"
   ]
  },
  {
   "path": "tools/lane-seal.mjs",
   "kind": "tool",
   "title": "lane-seal.mjs",
   "what": "lane-seal.mjs: the reverse path. Sign with this agent's key, seal to a key in data/keys.json (Dinis's), 7 days by default. node tools/lane-seal.mjs --to <key id --text \"…\" [--subject S] [--expires DAYS] [--inbox] Prints the m1 code; with --inbox, appends it …",
   "by": "",
   "by_from": "",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 2256,
   "sha256": "ac1fce320d4b6e3c0a46f140d1cc673611dc80a40af5928f1be5a471125d92b7",
   "served": true,
   "file": "https://storm-charles.promptugal.news/tools/lane-seal.mjs",
   "commits": {
    "n": 1,
    "first_by": "incident.identity@web-summit.dinis",
    "first_at": "2026-11-10T23:47:18Z",
    "last_by": "incident.identity@web-summit.dinis",
    "last_at": "2026-11-10T23:47:18Z",
    "last_commit": "f0369a0290",
    "agents": [
     "incident.identity@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:47:18Z",
   "linked_from": [
    "SECURITY.md",
    "account/inbox.json"
   ]
  },
  {
   "path": "tools/lane-test.mjs",
   "kind": "tool",
   "title": "lane-test.mjs",
   "what": "lane-test.mjs: the lane, end to end, with throwaway keys made here and thrown away (nothing is written to a key store). node tools/lane-test.mjs 1. the pinned pki.sgit.ai copies are byte for byte what app/login/pki/PIN.json says; 2. feedback: \"Dinis\" signs …",
   "by": "",
   "by_from": "",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 11296,
   "sha256": "272dd6b7ab30c763b445a1102cb04c415743aaa85cbef04931da84a8dd7aac8b",
   "served": true,
   "file": "https://storm-charles.promptugal.news/tools/lane-test.mjs",
   "commits": {
    "n": 2,
    "first_by": "incident.identity@web-summit.dinis",
    "first_at": "2026-11-10T23:47:18Z",
    "last_by": "incident.identity@web-summit.dinis",
    "last_at": "2026-11-10T23:53:31Z",
    "last_commit": "6360a5f3c7",
    "agents": [
     "incident.identity@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:53:31Z",
   "linked_from": [
    "SECURITY.md",
    "agents/identity/policy.md",
    "app/login/pki/PIN.json",
    "library/reading/standard.md"
   ]
  },
  {
   "path": "tools/library-abp.mjs",
   "kind": "tool",
   "title": "library-abp.mjs",
   "what": "The agents' behaviour policies, as drafts (incident.librarian@web-summit.dinis, 11 November 2026, WS-214, at incident.conductor@'s ask). One agents/<role/policy.md per agent in agents/policy.json, in the shape of the ABP pages on web-summit.sgit.ai/abp/ …",
   "by": "incident.librarian@web-summit.dinis",
   "by_from": "header",
   "dated": "2026-11-11",
   "dated_from": "header",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 10765,
   "sha256": "de6044d7e78a4eb4c1b4493bbeb05395df86cbe591d52d2cb0c23e93335d7421",
   "served": true,
   "file": "https://storm-charles.promptugal.news/tools/library-abp.mjs",
   "commits": {
    "n": 1,
    "first_by": "incident.librarian@web-summit.dinis",
    "first_at": "2026-11-10T23:59:40Z",
    "last_by": "incident.librarian@web-summit.dinis",
    "last_at": "2026-11-10T23:59:40Z",
    "last_commit": "4938594fd3",
    "agents": [
     "incident.librarian@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:59:40Z",
   "linked_from": [
    "agents/conductor/policy.md",
    "agents/designer/policy.md",
    "agents/dev/policy.md",
    "agents/graph/policy.md",
    "agents/identity/policy.md",
    "agents/librarian/policy.md",
    "agents/media/policy.md",
    "agents/meteorologist/policy.md",
    "agents/observability/policy.md",
    "agents/researcher/policy.md",
    "agents/weatherwatch/policy.md",
    "library/abp.json",
    "library/abp.md"
   ]
  },
  {
   "path": "tools/library-index.mjs",
   "kind": "tool",
   "title": "library-index.mjs",
   "what": "The library's catalogue (incident.librarian@web-summit.dinis, 10 November 2026, WS-214; Dinis's direction ~23:40: \"all information, all documents, all briefs should be on the site\"; \"provenance, where everything needs to be linked\"). Repository - …",
   "by": "incident.librarian@web-summit.dinis",
   "by_from": "header",
   "dated": "2026-11-10",
   "dated_from": "header",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 27612,
   "sha256": "569616707d680a03fbe6ab75334d19912d107bfefffcd99b67a4f56ee22bd9e1",
   "served": true,
   "file": "https://storm-charles.promptugal.news/tools/library-index.mjs",
   "commits": {
    "n": 7,
    "first_by": "incident.librarian@web-summit.dinis",
    "first_at": "2026-11-10T23:41:40Z",
    "last_by": "incident.librarian@web-summit.dinis",
    "last_at": "2026-11-11T00:02:20Z",
    "last_commit": "4b5f0a874d",
    "agents": [
     "incident.librarian@web-summit.dinis"
    ]
   },
   "changed": "2026-11-11T00:02:20Z",
   "linked_from": []
  },
  {
   "path": "tools/library-reading.mjs",
   "kind": "tool",
   "title": "library-reading.mjs",
   "what": "library/reading/reading.json - library/reading/README.md (incident.librarian@web-summit.dinis, 10 November 2026, WS-214). The reading list is kept as data (one entry per article: URL, its argument, what it means here, when it was read); this renders the page, …",
   "by": "incident.librarian@web-summit.dinis",
   "by_from": "header",
   "dated": "2026-11-10",
   "dated_from": "header",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 2405,
   "sha256": "5abad9324b0e57b8afce59d6e5333aad78db397fcce534b874d5518058d2af50",
   "served": true,
   "file": "https://storm-charles.promptugal.news/tools/library-reading.mjs",
   "commits": {
    "n": 1,
    "first_by": "incident.librarian@web-summit.dinis",
    "first_at": "2026-11-10T23:47:05Z",
    "last_by": "incident.librarian@web-summit.dinis",
    "last_at": "2026-11-10T23:47:05Z",
    "last_commit": "f509c53526",
    "agents": [
     "incident.librarian@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:47:05Z",
   "linked_from": [
    "library/reading/README.md",
    "library/reading/reading.json"
   ]
  },
  {
   "path": "tools/library-releases.mjs",
   "kind": "tool",
   "title": "library-releases.mjs",
   "what": "The release history (incident.librarian@web-summit.dinis, 10 November 2026, WS-214, at incident.conductor@'s ask; the estate's standard asks for \"one sentence per release\"; the reading list: \"Green does not mean live\"). Tags + commit subjects + the Actions …",
   "by": "incident.librarian@web-summit.dinis",
   "by_from": "header",
   "dated": "2026-11-10",
   "dated_from": "header",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 8024,
   "sha256": "3dfab1dfa6e13f770b1f085dbabba1cdb498808f9c3fdc33926bab8ad2c5e01d",
   "served": true,
   "file": "https://storm-charles.promptugal.news/tools/library-releases.mjs",
   "commits": {
    "n": 1,
    "first_by": "incident.librarian@web-summit.dinis",
    "first_at": "2026-11-10T23:54:56Z",
    "last_by": "incident.librarian@web-summit.dinis",
    "last_at": "2026-11-10T23:54:56Z",
    "last_commit": "da396fb9bc",
    "agents": [
     "incident.librarian@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T23:54:56Z",
   "linked_from": [
    "library/releases-runs.json",
    "library/releases.json",
    "library/releases.md"
   ]
  },
  {
   "path": "tools/llm.mjs",
   "kind": "tool",
   "title": "llm.mjs",
   "what": "The model ledger's one wrapper (incident.dev@web-summit.dinis, 10 November 2026, WS-214; ROADMAP P0.4, Dinis's direction ~19:15): every model call the incident team makes goes through call() here, ours or OpenRouter's, so every call is stored and counted. - …",
   "by": "incident.dev@web-summit.dinis",
   "by_from": "header",
   "dated": "2026-11-10",
   "dated_from": "header",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 8679,
   "sha256": "244a25f7a9b19f5c6961b945823d47a903ffce55bcfb9a4bd3c37b2c881d171e",
   "served": true,
   "file": "https://storm-charles.promptugal.news/tools/llm.mjs",
   "commits": {
    "n": 1,
    "first_by": "incident.conductor@web-summit.dinis",
    "first_at": "2026-11-10T21:14:33Z",
    "last_by": "incident.conductor@web-summit.dinis",
    "last_at": "2026-11-10T21:14:33Z",
    "last_commit": "77cdd51fc1",
    "agents": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T21:14:33Z",
   "linked_from": [
    "CLAUDE.md",
    "REALITY.md",
    "ROADMAP.md",
    "agents/JOBS.md",
    "agents/conductor/policy.md",
    "agents/designer/policy.md",
    "agents/dev/policy.md",
    "agents/graph/policy.md",
    "agents/identity/policy.md",
    "agents/librarian/policy.md",
    "agents/media/policy.md",
    "agents/meteorologist/policy.md",
    "agents/observability/policy.md",
    "agents/researcher/policy.md",
    "agents/weatherwatch/policy.md",
    "app/agents/about.md",
    "library/abp.md",
    "library/glossary.md"
   ]
  },
  {
   "path": "tools/policy-check.mjs",
   "kind": "tool",
   "title": "policy-check.mjs",
   "what": "The path policy's check (incident.librarian@web-summit.dinis, 10 November 2026, WS-214, at incident.conductor@'s ask; from the reading list: \"Behaviour policies\" on newsroom.sgit.ai, where the reach is every file and the mandate is a short list of paths). It …",
   "by": "incident.librarian@web-summit.dinis",
   "by_from": "header",
   "dated": "2026-11-10",
   "dated_from": "header",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 6796,
   "sha256": "f52ea4d7e94965da7db323f75e23e2253887f3aa3195b7523fd5e292339b30c6",
   "served": true,
   "file": "https://storm-charles.promptugal.news/tools/policy-check.mjs",
   "commits": {
    "n": 2,
    "first_by": "incident.librarian@web-summit.dinis",
    "first_at": "2026-11-10T23:52:33Z",
    "last_by": "incident.librarian@web-summit.dinis",
    "last_at": "2026-11-11T00:01:14Z",
    "last_commit": "c196f21a75",
    "agents": [
     "incident.librarian@web-summit.dinis"
    ]
   },
   "changed": "2026-11-11T00:01:14Z",
   "linked_from": [
    "agents/JOBS.md",
    "agents/conductor/policy.md",
    "agents/designer/policy.md",
    "agents/dev/policy.md",
    "agents/graph/policy.md",
    "agents/identity/policy.md",
    "agents/librarian/policy.md",
    "agents/media/policy.md",
    "agents/meteorologist/policy.md",
    "agents/observability/policy.md",
    "agents/policy.json",
    "agents/researcher/policy.md",
    "agents/weatherwatch/policy.md",
    "library/abp.md"
   ]
  },
  {
   "path": "tools/sync-from-websummit.sh",
   "kind": "tool",
   "title": "sync-from-websummit.sh",
   "what": "Temporary bridge (10 November 2026): until the incident agents' sessions can push here, they keep writing data/ and their status files in SGit-AI__Website__Web-Summit team/incidents/ (its MOVED.md); the lead copies them across with this. Usage: …",
   "by": "",
   "by_from": "",
   "dated": "",
   "dated_from": "",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 1503,
   "sha256": "5bfb740da6365e74fc6ca1974795ba6b9aad9e08640dd7c52fdaae8270e8bc06",
   "served": true,
   "file": "https://storm-charles.promptugal.news/tools/sync-from-websummit.sh",
   "commits": {
    "n": 3,
    "first_by": "incident.conductor@web-summit.dinis",
    "first_at": "2026-11-10T21:19:37Z",
    "last_by": "incident.conductor@web-summit.dinis",
    "last_at": "2026-11-10T21:37:21Z",
    "last_commit": "64eff59bfe",
    "agents": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T21:37:21Z",
   "linked_from": [
    "agents/conductor/policy.md"
   ]
  },
  {
   "path": "tools/timeline.mjs",
   "kind": "tool",
   "title": "timeline.mjs",
   "what": "timeline.md - signals.json (incident.dev@web-summit.dinis, 10 November 2026, WS-214). The lead keeps the timeline as a markdown table (UTC | Signal or decision | Source); this turns just that table into data, so the dashboard and Vicky's agents read JSON and …",
   "by": "incident.dev@web-summit.dinis",
   "by_from": "header",
   "dated": "2026-11-10",
   "dated_from": "header",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 4852,
   "sha256": "c6e443c44c06d52498247ddacff340b0e6c4ff9d61cdb67b46d2fbf7384e4ae5",
   "served": true,
   "file": "https://storm-charles.promptugal.news/tools/timeline.mjs",
   "commits": null,
   "changed": "2026-11-10",
   "linked_from": [
    "REALITY.md",
    "agents/conductor/policy.md",
    "incidents/2026-11-10-storm-charles/data/README.md",
    "incidents/2026-11-10-storm-charles/data/signals.json",
    "library/drafts/now-json.md",
    "library/glossary.md"
   ]
  },
  {
   "path": "tools/websummit-poll.sh",
   "kind": "tool",
   "title": "websummit-poll.sh",
   "what": "The 2-minute blog poll (incident.dev@web-summit.dinis, 10 November 2026, WS-214; incident.researcher@'s ask via the lead, 21:03). Rewritten at 21:30 after security.repos@'s MEDIUM (report 2026-11-10T2130Z): the first version reset a worktree to dev every loop …",
   "by": "incident.dev@web-summit.dinis",
   "by_from": "header",
   "dated": "2026-11-10",
   "dated_from": "header",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 2208,
   "sha256": "886b340811f35c0df1a9265bb0447b917e80d0f02657d648ae1306bd011263c5",
   "served": true,
   "file": "https://storm-charles.promptugal.news/tools/websummit-poll.sh",
   "commits": {
    "n": 2,
    "first_by": "incident.conductor@web-summit.dinis",
    "first_at": "2026-11-10T21:16:42Z",
    "last_by": "incident.conductor@web-summit.dinis",
    "last_at": "2026-11-10T21:18:01Z",
    "last_commit": "d9e2b8b926",
    "agents": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T21:18:01Z",
   "linked_from": []
  },
  {
   "path": "tools/websummit.mjs",
   "kind": "tool",
   "title": "websummit.mjs",
   "what": "Web Summit's own channels, watched for the decision everyone waits for (incident.dev@web-summit.dinis, 10 November 2026, WS-214; incident.researcher@'s parser asks in decisions/sources.json: websummit-sitemap, websummit-bluesky). Just the part that matters: …",
   "by": "incident.dev@web-summit.dinis",
   "by_from": "header",
   "dated": "2026-11-10",
   "dated_from": "header",
   "made_from": [],
   "links_to": [],
   "external_links": 0,
   "bytes": 14670,
   "sha256": "808b5441f49fe96a2c6f3445bb0ebfe9ad252566ae62f0435a6808fc0b9b88e5",
   "served": true,
   "file": "https://storm-charles.promptugal.news/tools/websummit.mjs",
   "commits": {
    "n": 3,
    "first_by": "incident.conductor@web-summit.dinis",
    "first_at": "2026-11-10T21:14:33Z",
    "last_by": "incident.conductor@web-summit.dinis",
    "last_at": "2026-11-10T21:37:01Z",
    "last_commit": "140323fe6b",
    "agents": [
     "incident.conductor@web-summit.dinis"
    ]
   },
   "changed": "2026-11-10T21:37:01Z",
   "linked_from": [
    "REALITY.md",
    "incidents/2026-11-10-storm-charles/data/README.md",
    "incidents/2026-11-10-storm-charles/data/watch/websummit.json"
   ]
  }
 ]
}
