Storm Charles · PrompTugalLive
Not a warning service. Follow IPMA, ANEPC and your local authorities. We aggregate public sources, each with its source and the time we read it.

The library: everything on this site, and where it came from

Kept by incident.librarian@web-summit.dinis. This page and index.json are built from the repository by tools/library-index.mjs; nobody writes them by hand. 204 files, the newest change 11-11 00:15 UTC. Nothing here is guessed: what a file does not say about itself is left empty and listed under Gaps.

Not a warning service: follow IPMA, ANEPC and your local authorities.

For agents: library/index.json (every file: kind, what it is, who, when, made from, links in and out, sha256) · library/provenance.json (who committed what) · the data files' catalogue with the served sha256: api/v1/index.json.

Also here: the agents' behaviour policies (drafts, not agreed by Dinis) · the release history (every version, what changed, whether it was served) · the reading list (what newsroom.sgit.ai's articles mean for this site) · the glossary (fact, evidence, hypothesis and the other words this site uses). · the path policy and its check, tools/policy-check.mjs · a draft for the conductor: the shape of now.json.

How to read a row. By is who the file itself says wrote or keeps it; the agents named in its commits follow when they differ. Changed is the last commit (UTC) when it is known, else the date the file gives for itself. Made from is the sources its own header names.

KindFilesWhat it is
rules1The rules every agent reads first.
brief2Dinis's direction, close to his words, and its corrections.
plan3Proposals and priorities: what is to be built and in what order.
record1What exists.
decision log2The timeline of signals and the decisions, newest first.
incident record2The incident's own page and front-page record.
dataset29JSON data: every value with its source and the time read.
dataset doc6What a dataset holds and who keeps it.
analysis1Our analysis, labelled as analysis: a hypothesis with its reasons, never a fact.
research26Research files: what was found, where, and when it was read.
reading3The reading list: what others wrote that bears on this site, and what it means here.
library10The catalogue itself, the glossary, the standard.
agent file25Each agent's jobs, status and asks.
comms draft6Drafts for people; a person sends.
material1Material offered to another newsroom's desk.
outreach4How to contribute, and drafts for experts; a person sends.
design13Design rounds and notes.
tool25Scripts the agents run.
build3The build, the gate and CI.
admin1The admin area.
app36What runs in the browser.
repository4The repository's own files.

rules

The rules every agent reads first.

FileWhat it isByChangedMade from
CLAUDE.mdstorm-charles.promptugal.news: the rules of this repository. 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: …not said in the file; commits: incident.conductor@11-10 23:49BRIEF.md, PIPELINE.md, ROADMAP.md

brief

Dinis's direction, close to his words, and its corrections.

FileWhat it isByChangedMade from
BRIEF-CORRECTIONS.mdBrief corrections and departures from the estate's standard.not said in the file; commits: incident.conductor@11-10 21:14
BRIEF.mdBrief. 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 …Dinis Cruz (as recorded by incident.conductor@web-summit.dinis)11-10 23:35

plan

Proposals and priorities: what is to be built and in what order.

FileWhat it isByChangedMade from
PIPELINE.mdThe incident site: repository, pipeline, data and dashboard (a proposal for Dinis). The direction and priorities it serves: ROADMAP.md (Dinis, ~19:15: a proxy of the flows, a newsroom and a data source for agents).incident.conductor@11-10 21:14ROADMAP.md
ROADMAP.mdThe incident site: a newsroom for people and a data source for agents (roadmap, in priority order). 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 …incident.conductor@11-10 21:14PIPELINE.md
SECURITY.mdSecurity: Dinis's login, his lane to the conductor, his vaults. 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, …incident.identity@11-10 23:53BRIEF.md, app/login/pki/PIN.json

record

What exists.

FileWhat it isByChangedMade from
REALITY.mdReality: what exists (a thing not here does not exist). Version: see /version.json on the live site (CI writes it; never committed).not said in the file; commits: incident.conductor@11-10 21:14

decision log

The timeline of signals and the decisions, newest first.

FileWhat it isByChangedMade from
incidents/2026-11-10-storm-charles/decisions.mdDecisions (simulate first: each decision is written here before anyone acts). Newest first.conductor@ (commits: incident.conductor@)11-10 21:14websummit.com
incidents/2026-11-10-storm-charles/timeline.mdTimeline (UTC, 10 to 11 November 2026). Newest first (from 18:58, at the incident conductor's takeover). Facts and evidence carry their source; anything unofficial says so.not saidincidents/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, api.ipma.pt, websummit.com, and 1 more

incident record

The incident's own page and front-page record.

FileWhat it isByChangedMade from
incidents/2026-11-10-storm-charles/README.mdIncident: the storm on Wednesday 11 November (run as P1). 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 …conductor@ (commits: incident.conductor@)11-10 21:14
incidents/2026-11-10-storm-charles/incident.jsonStorm Charles, Lisbon: Wednesday 11 November 2026. 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 …incident.conductor@11-10 23:53

dataset

JSON data: every value with its source and the time read.

FileWhat it isByChangedMade from
data/agents/commits.jsonThe 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 …incident.observability@11-11 00:05tools/agents-commits.mjs
data/agents/index.jsonEvery 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 …incident.observability@11-11 00:05agents/JOBS.md, data/keys.json, tools/agents-index.mjs
data/agents/obs.jsonWhere 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 …incident.observability@11-10 23:54agents/observability/status.json
data/graph/ontology.jsonThe 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 …incident.graph@11-10 23:58data/graph/README.md, tools/graph-build.mjs, data/graph/storm.json
data/graph/queries.jsonThe 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@11-11 00:00tools/graph-build.mjs
data/graph/ref/ipma-areas.jsonIPMA'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. …not said in the file; commits: incident.graph@11-10 23:44api.ipma.pt, tools/graph-places.mjs
data/graph/storm-elsewhere.jsonThe 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 …not said in the file; commits: incident.graph@11-11 00:00data/graph/storm.json, tools/graph-build.mjs
data/graph/storm.jsonOne 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 …not said in the file; commits: incident.graph@11-11 00:00tools/graph-build.mjs, data/graph/ontology.json
data/graph/tables/actors.jsonWho 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, …not said in the file; commits: incident.graph@11-11 00:00tools/graph-build.mjs
data/graph/tables/decisions.jsonDecisions 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 …not said in the file; commits: incident.graph@11-11 00:00tools/graph-build.mjs
data/graph/tables/signals.jsonThe 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 …not said in the file; commits: incident.graph@11-11 00:00tools/graph-build.mjs
data/graph/tables/sources.jsonEvery 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 …not said in the file; commits: incident.graph@11-11 00:00tools/graph-build.mjs
data/graph/tables/timeline.jsonThe 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 …not said in the file; commits: incident.graph@11-11 00:00tools/graph-build.mjs
data/graph/tables/warnings.jsonWarnings: 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) …not said in the file; commits: incident.graph@11-11 00:00tools/graph-build.mjs
data/keys.jsonPublic 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; …not said in the file; commits: incident.conductor@, incident.designer@, incident.graph@, incident.identity@, incident.librarian@, incident.media@, incident.observability@, incident.weatherwatch@11-10 23:44
data/lanes.jsonThe 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 …incident.identity@11-10 23:53SECURITY.md, agents/identity/status.json
incidents/2026-11-10-storm-charles/data/decisions/graph.json (api)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 …incident.researcher@ (commits: incident.conductor@)11-10 23:57
incidents/2026-11-10-storm-charles/data/decisions/sources.json (api)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.not said in the file; commits: incident.conductor@11-10 23:03
incidents/2026-11-10-storm-charles/data/signals.json (api)The incident timeline as data, made from timeline.md by tools/timeline.mjs (never edit by hand; edit timeline.md). See README.md.not said11-11 00:05incidents/2026-11-10-storm-charles/timeline.md, tools/timeline.mjs, incidents/2026-11-10-storm-charles/data/README.md
incidents/2026-11-10-storm-charles/data/watch/websummit.json (api)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 …not said in the file; commits: incident.conductor@11-10 21:37tools/websummit.mjs, incidents/2026-11-10-storm-charles/data/README.md
incidents/2026-11-10-storm-charles/data/weather/airport.json (api)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 …not said in the file; commits: incident.conductor@11-11 00:01
incidents/2026-11-10-storm-charles/data/weather/analysis.json (api)Reasoning from the facts in this folder; not IPMA's words. Times are UTC = Lisbon time (WET). See analysis.md for the reasons.incident.meteorologist@ (commits: incident.conductor@)11-11 00:00incidents/2026-11-10-storm-charles/data/weather/analysis.md
incidents/2026-11-10-storm-charles/data/weather/cap.json (api)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 …not said in the file; commits: incident.conductor@11-11 00:01feeds.meteoalarm.org
incidents/2026-11-10-storm-charles/data/weather/changes.json (api)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 …not said in the file; commits: incident.conductor@11-11 00:01incidents/2026-11-10-storm-charles/data/weather/tools/refresh.py
incidents/2026-11-10-storm-charles/data/weather/communiques.json (api)IPMA's communiqués (special weather information) from its RSS feed, kept across reads; earthquake notices left out.not said in the file; commits: incident.conductor@11-11 00:01ipma.pt
incidents/2026-11-10-storm-charles/data/weather/forecast.json (api)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.not said in the file; commits: incident.conductor@11-11 00:01
incidents/2026-11-10-storm-charles/data/weather/gusts-vs-forecast.json (api)The latest observed wind in Lisbon against what was forecast for that hour. Facts with sources; no analysis here (see analysis.md).not said in the file; commits: incident.conductor@11-11 00:01incidents/2026-11-10-storm-charles/data/weather/analysis.md
incidents/2026-11-10-storm-charles/data/weather/stations.json (api)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).not said in the file; commits: incident.conductor@11-11 00:01api.ipma.pt, api.ipma.pt, incidents/2026-11-10-storm-charles/data/weather/airport.json
incidents/2026-11-10-storm-charles/data/weather/warnings.json (api)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 …not said in the file; commits: incident.conductor@11-11 00:01api.ipma.pt, incidents/2026-11-10-storm-charles/data/weather/cap.json

dataset doc

What a dataset holds and who keeps it.

FileWhat it isByChangedMade from
data/graph/README.mdThe graph of the storm, and its ontology. 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.graph@11-11 00:00tools/graph-build.mjs, prociv.gov.pt, ipma.pt
data/query/about.mdQuery the storm: how the page works. The query page is a database that runs in your browser. It loads this site's JSON, builds eight tables in memory, and runs the SQL you write. There is no server behind it: nothing is uploaded, …incident.graph@11-11 00:00data/query/index.html
data/query/index.htmlnot said in the file; commits: incident.graph@11-11 00:00
incidents/2026-11-10-storm-charles/data/README.mdThe storm's data (WS-214). 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 …not said in the file; commits: incident.conductor@11-10 21:37incidents/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, and 5 more
incidents/2026-11-10-storm-charles/data/decisions/README.mdThe decision graph of the storm (WS-214). 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.incident.researcher@ (commits: incident.conductor@)11-10 23:57
incidents/2026-11-10-storm-charles/data/weather/README.mdThe weather picture: data (WS-214, the storm on Wednesday 11 November 2026). 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 …incident.meteorologist@ (commits: incident.conductor@)11-10 23:55agents/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, and 9 more

analysis

Our analysis, labelled as analysis: a hypothesis with its reasons, never a fact.

FileWhat it isByChangedMade from
incidents/2026-11-10-storm-charles/data/weather/analysis.mdAnalysis: when the worst arrives in Lisbon on Wednesday, and how far ahead each warning could be known. 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 …incident.meteorologist@ (commits: incident.conductor@)11-11 00:00incidents/2026-11-10-storm-charles/data/weather/analysis.json

research

Research files: what was found, where, and when it was read.

FileWhat it isByChangedMade from
research/media/README.mdMedia watch: who is covering Storm Charles. 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 …incident.media@11-10 23:40prociv.gov.pt, ipma.pt
research/media/coverage.jsonWho 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 …incident.media@11-11 00:03
research/media/facts.jsonThe 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 …incident.media@11-11 00:10
research/media/feeds.jsonThe 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 …not said in the file; commits: incident.media@11-10 23:58research/media/tools/harvest.mjs
research/media/first-on-each-fact.jsonWho 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 …incident.media@11-11 00:03research/media/facts.json, research/media/README.md
research/media/live-entries.jsonTimed 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 …incident.media@11-11 00:03research/media/facts.json
research/media/outlets.jsonThe 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 …incident.media@11-11 00:03research/media/coverage.json, research/media/tools/rank.mjs
research/media/ranking.mdMedia watch: who is fastest, who is most sourced. 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 …not saidresearch/media/coverage.json, prociv.gov.pt, ipma.pt
research/media/seeds.txtURLs 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.not said in the file; commits: incident.media@11-10 23:58
research/media/tools/harvest.mjsMedia 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 …incident.media@11-10 23:58
research/media/tools/live.mjsThe 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 - …incident.media@
research/media/tools/rank.mjsMedia 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 …incident.media@
research/media/tools/social.mjsOfficial 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 …incident.media@11-10 23:58
research/media/tools/wikipedia.mjsWikipedia 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 …incident.media@11-10 23:58
research/media/wikipedia.jsonWikipedia 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. …incident.media@11-10 23:58
research/weather-sites/README.mdThe best weather sites, and who is covering Storm Charles. 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 …incident.weatherwatch@11-10 23:58research/weather-sites/gap.json, research/weather-sites/imagery.json, research/weather-sites/sites.json
research/weather-sites/gap.jsonThe 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 …incident.weatherwatch@11-10 23:56research/weather-sites/sites.json
research/weather-sites/imagery.jsonImagery 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 …incident.weatherwatch@11-10 23:56
research/weather-sites/meteoalarm-check.jsonDoes 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 …not said in the file; commits: incident.weatherwatch@11-10 23:58
research/weather-sites/outreach/README.mdDrafts for a person to send (weather imagery). 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 …incident.weatherwatch@11-10 23:58research/weather-sites/imagery.json, research/weather-sites/outreach/eumetsat-registration.md, research/weather-sites/outreach/ipma-radar.md
research/weather-sites/outreach/eumetsat-registration.mdDraft: EUMETSAT, registering and accepting the licence. 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 …not said in the file; commits: incident.weatherwatch@11-10 23:58
research/weather-sites/outreach/ipma-radar.mdDraft: to IPMA, about showing the radar image. 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 …not said in the file; commits: incident.weatherwatch@11-10 23:58
research/weather-sites/sites.jsonThree 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@11-10 23:51
research/weather-sites/tools/gap.pyWrites gap.json and imagery.json beside sites.json. Usage: gap.py <dir with sites.json.not said in the file; commits: incident.weatherwatch@11-10 23:56
research/weather-sites/tools/gen.pyBuilds research/weather-sites/sites.json from the probe results (status, time read) and the entries below.not said in the file; commits: incident.weatherwatch@11-10 23:51
research/weather-sites/tools/probe.shusage: probe.sh <outdir < urls ; one line per url: id<TABurlnot said in the file; commits: incident.weatherwatch@11-10 23:47

reading

The reading list: what others wrote that bears on this site, and what it means here.

FileWhat it isByChangedMade from
library/reading/README.mdThe reading list: what newsroom.sgit.ai's articles mean for this site. 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 …incident.librarian@11-10 23:47library/README.md, library/glossary.md, library/reading/reading.json, library/reading/standard.md, tools/library-reading.mjs, newsroom.sgit.ai
library/reading/reading.jsonThe 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 …incident.librarian@11-10 23:47newsroom.sgit.ai, BRIEF.md, tools/library-reading.mjs
library/reading/standard.mdThis repository against the estate's standard. 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; …incident.librarian@11-10 23:47REALITY.md, library/README.md, library/reading/README.md, sgit.ai

library

The catalogue itself, the glossary, the standard.

FileWhat it isByChangedMade from
library/README.mdThe library: everything on this site, and where it came from. The catalogue as a page, by kind, with the gaps listed.incident.librarian@tools/library-index.mjs
library/abp.jsonWhat 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. …incident.librarian@11-10 23:59agents/JOBS.md, tools/library-abp.mjs, agents/policy.json, data/keys.json, CLAUDE.md
library/abp.mdThe agents' behaviour policies (drafts). 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, …incident.librarian@11-10 23:59CLAUDE.md, admin/build/build.mjs, agents/JOBS.md, agents/conductor/policy.md, agents/designer/policy.md, agents/identity/policy.md, and 8 more
library/drafts/now-json.mdDraft: the shape of now.json (one small file for an agent with one question). 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 …incident.librarian@11-10 23:50library/README.md, library/reading/README.md
library/glossary.mdGlossary: the words this site uses. 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 …incident.librarian@11-10 23:50CLAUDE.md, PIPELINE.md, ROADMAP.md, library/README.md, library/reading/README.md
library/index.jsonThe catalogue, for agents. 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.incident.librarian@tools/library-index.mjs
library/provenance.jsonWho committed what. For each file: its commits' agents, the first and the last commit, and the sha256 the record holds for.incident.librarian@tools/library-index.mjs
library/releases-runs.jsonThe 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 …incident.librarian@11-10 23:54github.com, tools/library-releases.mjs
library/releases.jsonThe 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 …incident.librarian@11-10 23:54github.com, tools/library-releases.mjs, library/releases-runs.json
library/releases.mdThe release history: every version, what changed, and whether it was served. 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 …incident.librarian@11-10 23:54BRIEF-CORRECTIONS.md, library/README.md, library/releases-runs.json, library/releases.json, tools/library-releases.mjs

agent file

Each agent's jobs, status and asks.

FileWhat it isByChangedMade from
agents/JOBS.mdThe team and its jobs (kept by incident.conductor@web-summit.dinis). 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, …incident.conductor@11-10 23:53BRIEF.md, CLAUDE.md, SECURITY.md, agents/policy.json, app/site.css, contribute.md, and 5 more
agents/README.mdThe incident team's status files. 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 …incident.conductor@11-10 21:14
agents/conductor/policy.mdABP: incident.conductor@web-summit.dinis. 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 …incident.librarian@11-10 23:59CLAUDE.md, agents/JOBS.md, agents/policy.json, library/abp.json, library/abp.md, tools/library-abp.mjs, and 1 more
agents/conductor/status.jsonincident.conductor@11-11 00:00
agents/designer/policy.mdABP: incident.designer@web-summit.dinis. 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 …incident.librarian@11-10 23:59CLAUDE.md, agents/JOBS.md, agents/policy.json, library/abp.json, library/abp.md, tools/library-abp.mjs, and 1 more
agents/designer/status.jsonincident.designer@11-11 00:05
agents/dev/policy.mdABP: incident.dev@web-summit.dinis. 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 …incident.librarian@11-10 23:59CLAUDE.md, agents/JOBS.md, agents/policy.json, library/abp.json, library/abp.md, tools/library-abp.mjs, and 1 more
agents/dev/status.jsonincident.dev@web-summit.dinis (done, next, asks, baseline); jobs by incident.conductor@11-10 22:03
agents/graph/policy.mdABP: incident.graph@web-summit.dinis. 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 …incident.librarian@11-10 23:59CLAUDE.md, agents/JOBS.md, agents/policy.json, library/abp.json, library/abp.md, tools/library-abp.mjs, and 1 more
agents/graph/status.jsonincident.graph@11-11 00:00
agents/identity/policy.mdABP: incident.identity@web-summit.dinis. 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 …incident.librarian@11-10 23:59CLAUDE.md, agents/JOBS.md, agents/policy.json, library/abp.json, library/abp.md, tools/library-abp.mjs, and 1 more
agents/identity/status.jsonincident.identity@11-10 23:53
agents/librarian/policy.mdABP: incident.librarian@web-summit.dinis. 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 …incident.librarian@11-10 23:59CLAUDE.md, agents/JOBS.md, agents/policy.json, library/abp.json, library/abp.md, tools/library-abp.mjs, and 1 more
agents/librarian/status.jsonincident.librarian@11-11 00:02
agents/media/policy.mdABP: incident.media@web-summit.dinis. 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 …incident.librarian@11-10 23:59CLAUDE.md, agents/JOBS.md, agents/policy.json, library/abp.json, library/abp.md, tools/library-abp.mjs, and 1 more
agents/media/status.jsonincident.media@11-11 00:15
agents/meteorologist/policy.mdABP: incident.meteorologist@web-summit.dinis. 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 …incident.librarian@11-10 23:59CLAUDE.md, agents/JOBS.md, agents/policy.json, library/abp.json, library/abp.md, tools/library-abp.mjs, and 1 more
agents/meteorologist/status.jsonincident.meteorologist@ (commits: incident.conductor@)11-10 23:55
agents/observability/policy.mdABP: incident.observability@web-summit.dinis. 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 …incident.librarian@11-10 23:59CLAUDE.md, agents/JOBS.md, agents/policy.json, library/abp.json, library/abp.md, tools/library-abp.mjs, and 1 more
agents/observability/status.jsonincident.observability@11-10 23:56
agents/policy.jsonWho 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 …incident.librarian@web-summit.dinis (drafted, at incident.conductor@'s ask; the owners are the conductor's decisions)11-10 23:56agents/JOBS.md, tools/policy-check.mjs
agents/researcher/policy.mdABP: incident.researcher@web-summit.dinis. 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 …incident.librarian@11-10 23:59CLAUDE.md, agents/JOBS.md, agents/policy.json, library/abp.json, library/abp.md, tools/library-abp.mjs, and 1 more
agents/researcher/status.jsonincident.researcher@ (commits: incident.conductor@)11-10 23:57
agents/weatherwatch/policy.mdABP: incident.weatherwatch@web-summit.dinis. 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 …incident.librarian@11-10 23:59CLAUDE.md, agents/JOBS.md, agents/policy.json, library/abp.json, library/abp.md, tools/library-abp.mjs, and 1 more
agents/weatherwatch/status.jsonincident.weatherwatch@11-10 23:58

comms draft

Drafts for people; a person sends.

FileWhat it isByChangedMade from
incidents/2026-11-10-storm-charles/comms/README.mdCommunications: the storm (incident WS-214). 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, …journalist.examples@ (commits: incident.conductor@)11-10 21:14incidents/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/comms/dinis.mdBrief for Dinis (through the incident's lead). Facts as of 20:02 UTC. Five lines, then what needs your word. The 18:45 version is superseded.not said in the file; commits: incident.conductor@11-10 21:14
incidents/2026-11-10-storm-charles/comms/facts.mdThe one source (facts as of 20:02 UTC, 10 November 2026; weather facts as of 18:38, Thursday's as of 19:22). 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, …not said in the file; commits: incident.conductor@11-10 23:53
incidents/2026-11-10-storm-charles/comms/meetings.mdDraft for the people we are meeting on Wednesday (a person sends). 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).not said in the file; commits: incident.conductor@11-10 21:14
incidents/2026-11-10-storm-charles/comms/public.mdDraft for the public, through pt.news's newsroom. 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 …not said in the file; commits: incident.conductor@11-10 21:14
incidents/2026-11-10-storm-charles/comms/team.mdDraft for the team (WhatsApp; a person sends). 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).not said in the file; commits: incident.conductor@11-10 21:14

material

Material offered to another newsroom's desk.

FileWhat it isByChangedMade from
incidents/2026-11-10-storm-charles/material/wednesday-is-off-what-now.mdMaterial for Vicky's weather desk: "Wednesday is off: what now?" (a service piece's facts). 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 …incident.conductor@11-10 21:14

outreach

How to contribute, and drafts for experts; a person sends.

FileWhat it isByChangedMade from
contribute.mdContribute: add or correct a fact. 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 …not said in the file; commits: incident.media@11-10 23:58prociv.gov.pt, ipma.pt
outreach/README.mdOutreach: who could give an official view, and what we would ask. 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 …incident.media@outreach/drafts.md, outreach/questions.json, research/weather-sites/outreach/eumetsat-registration.md, research/weather-sites/outreach/ipma-radar.md
outreach/drafts.mdDraft messages, one per audience. 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 …incident.media@11-10 23:58outreach/README.md
outreach/questions.jsonThe 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 …incident.media@11-10 23:58outreach/README.md

design

Design rounds and notes.

FileWhat it isByChangedMade from
design/README.mdThe design of this site: tokens, parts, rules. 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 …incident.designer@app/site.css, design/round-1.md, design/round-10.md, design/round-11.md, design/round-12.md, design/round-2.md, and 7 more
design/round-1.mdDesign round 1: the home page as the weather presenter. 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.incident.designer@11-10 23:43
design/round-10.mdDesign round 10: MeteoAlarm's terms met on the page; the navigation in five sections. 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). …incident.designer@11-11 00:01research/weather-sites/meteoalarm-check.json
design/round-11.mdDesign round 11: the district grid; the Decided band folds; the small print on every page. 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.incident.designer@2026-11-11
design/round-12.mdDesign round 12: before and after now; a shorter first screen. 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 …incident.designer@2026-11-11
design/round-2.mdDesign round 2: the wind on one axis, and where. 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.incident.designer@11-10 23:45
design/round-3.mdDesign round 3: the day in phases (phones first), and the chart's table. By incident.designer@web-summit.dinis, 10 November 2026, about 23:44 to 23:50 UTC. Screenshots at 390 wide, described here, not committed.incident.designer@11-10 23:45
design/round-4.mdDesign round 4: the document pages, and a guide for the other agents. By incident.designer@web-summit.dinis, 10 November 2026, 23:44 to 23:48 UTC.incident.designer@11-10 23:50
design/round-5.mdDesign round 5: the conductor's review of rounds 1 and 2, and the frame. 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 …incident.designer@11-10 23:50
design/round-6.mdDesign round 6: decisions and warnings on one time axis. 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, …incident.designer@11-11 00:00
design/round-7.mdDesign round 7: status words, the tile's times, and why the model row is so low. 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). …incident.designer@11-10 23:55
design/round-8.mdDesign round 8: three facts in one sentence; links, not images; what we measured. 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. …incident.designer@11-10 23:58
design/round-9.mdDesign round 9: the decisions' hours from the data; the model wording corrected. 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 …incident.designer@11-11 00:00

tool

Scripts the agents run.

FileWhat it isByChangedMade from
admin/tools/release.shRelease 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 …not said in the file; commits: incident.conductor@11-10 23:53
incidents/2026-11-10-storm-charles/data/weather/tools/refresh.pyThe weather picture for WS-214 (the storm, Wednesday 11 November 2026), as JSON.not said in the file; commits: incident.conductor@11-11 00:01
tools/agents-commits.mjsThe 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: …incident.observability@11-10 23:54
tools/agents-index.mjsThe 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 …incident.observability@11-10 23:54
tools/agents-ledger.mjsThe 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 …incident.observability@11-10 23:54
tools/agents-pin.mjsPinned 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/ …incident.observability@11-10 23:54
tools/graph-build.mjsThe 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 …incident.graph@11-11 00:00
tools/graph-places.mjsIPMA'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 …not said in the file; commits: incident.graph@11-10 23:44
tools/lane-common.mjslane-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 …incident.identity@11-10 23:53
tools/lane-configure.mjslane-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 …not said in the file; commits: incident.identity@11-10 23:53
tools/lane-drain.mjslane-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 …not said in the file; commits: incident.identity@11-10 23:53
tools/lane-e2e.mjslane-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 …not said in the file; commits: incident.identity@11-10 23:47
tools/lane-open.mjslane-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 …not said in the file; commits: incident.identity@11-10 23:47
tools/lane-seal.mjslane-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 …not said in the file; commits: incident.identity@11-10 23:47
tools/lane-test.mjslane-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 …not said in the file; commits: incident.identity@11-10 23:53
tools/library-abp.mjsThe 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 …incident.librarian@11-10 23:59
tools/library-index.mjsThe 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, …incident.librarian@11-11 00:02
tools/library-reading.mjslibrary/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, …incident.librarian@11-10 23:47
tools/library-releases.mjsThe 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 …incident.librarian@11-10 23:54
tools/llm.mjsThe 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, …incident.dev@ (commits: incident.conductor@)11-10 21:14
tools/policy-check.mjsThe 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 …incident.librarian@11-11 00:01
tools/sync-from-websummit.shTemporary 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); …not said in the file; commits: incident.conductor@11-10 21:37
tools/timeline.mjstimeline.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 …incident.dev@ (commits: incident.conductor@)11-10 23:49
tools/websummit-poll.shThe 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 …incident.dev@ (commits: incident.conductor@)11-10 21:18
tools/websummit.mjsWeb 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: …incident.dev@ (commits: incident.conductor@)11-10 21:37

build

The build, the gate and CI.

FileWhat it isByChangedMade from
.github/workflows/deploy.ymlOne 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 …not said in the file; commits: incident.conductor@11-10 23:56
admin/build/build.mjsThe 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 …not said
admin/build/validate.mjsThe 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, …not said

admin

The admin area.

FileWhat it isByChangedMade from
admin/series.txtnot said in the file; commits: incident.conductor@11-10 21:14

app

What runs in the browser.

FileWhat it isByChangedMade from
account/account.mdAccount: the operator's login, and how it works. Kept by incident.identity@web-summit.dinis, 10 November 2026, 23:55 UTCincident.identity@11-10 23:53SECURITY.md, account/index.html
account/inbox.jsonReplies 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 …incident.identity@11-10 23:53tools/lane-seal.mjs, SECURITY.md
account/index.htmlnot said in the file; commits: incident.identity@11-10 23:53
app/agents/about.mdThe agents page: how it works. Kept by incident.observability@web-summit.dinis, 10 November 2026, 23:53 UTCincident.observability@11-10 23:53agents/README.md
app/agents/agents.css/app/agents/: the team console (incident.observability@web-summit.dinis). Uses app/site.css's tokens; adds nothing global.incident.observability@11-10 23:56
app/agents/agents.jsThe 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 …incident.observability@11-10 23:57
app/agents/index.htmlnot said
app/agents/live-adapter.jsThe 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 …incident.observability@11-10 23:47
app/agents/obs.jsPage 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, …incident.observability@11-10 23:54
app/agents/universe-adapter.jsThe 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 …incident.observability@11-10 23:51
app/agents/vendor/live-map@57636ac/live.jsThe 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: …dev.map@PrompTugal.angelo (commits: incident.observability@)11-10 23:47
app/agents/vendor/live-map@57636ac/live3d.jsThe 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 …dev.map@PrompTugal.angelo (commits: incident.observability@)11-10 23:47
app/agents/vendor/live-map@57636ac/pin.jsonUnchanged 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 …incident.observability@11-10 23:54tools/agents-pin.mjs
app/agents/vendor/universe@57636ac/brain.cssSilvio's brain, the 3D map (Lab only), premium: the sky is drawn by the 3D engine (stars, nebulae, glow);not said in the file; commits: incident.observability@11-10 23:51
app/agents/vendor/universe@57636ac/brain.jsThe 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 …dashboard@web-summit.silvio (commits: incident.observability@)11-10 23:51
app/agents/vendor/universe@57636ac/pin.jsonUnchanged 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 …incident.observability@11-10 23:54tools/agents-pin.mjs
app/graph/about.mdThe graph page: how it works. The graph of the storm draws data/graph/storm.json: actors, decisions, warnings, signals, sources, places, datasets and agents, and the links between them. Kept by incident.graph@web-summit.dinis. …incident.graph@11-11 00:00app/graph/index.html, data/graph/storm.json
app/graph/engine.jsA 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 …incident.graph@11-10 23:49
app/graph/graph.cssThe query page and the graph page (incident.graph@web-summit.dinis). Colours come from app/site.css's tokens;incident.graph@11-11 00:00
app/graph/graph.jsThe 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 …not said in the file; commits: incident.graph@11-11 00:00
app/graph/index.htmlnot said in the file; commits: incident.graph@11-11 00:00
app/graph/query.jsThe 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 …not said in the file; commits: incident.graph@11-11 00:00
app/login/account.jsaccount.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 …not said in the file; commits: incident.identity@11-10 23:53
app/login/dom.jsdom.js: the few DOM helpers the login pages share. Text only, never markup: nothing read from a message is parsed as HTML.not said in the file; commits: incident.identity@11-10 23:47
app/login/feedback.jsfeedback.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 …not said in the file; commits: incident.identity@11-10 23:47
app/login/id.jsid.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 …incident.identity@11-10 23:47
app/login/lane.jslane.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 …not said in the file; commits: incident.identity@11-10 23:47
app/login/login.cssThe login and the feedback box (incident.identity@). Tokens from app/site.css only (design/README.md): no colour isnot said in the file; commits: incident.identity@11-10 23:53
app/login/package.jsonnot said in the file; commits: incident.identity@11-10 23:47
app/login/pki/PIN.jsonCopies 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 …incident.identity@11-10 23:53tools/lane-test.mjs
app/login/pki/door.jsdoor.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 …not said in the file; commits: incident.identity@11-10 23:41
app/login/pki/keys.jskeys.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 …not said in the file; commits: incident.identity@11-10 23:41
app/login/pki/local.jslocal.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 …not said in the file; commits: incident.identity@11-10 23:41
app/login/pki/message.jsmessage.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 …not said in the file; commits: incident.identity@11-10 23:41
app/site.cssstorm-charles.promptugal.news: one stylesheet, no dependencies. Tokens first; the dashboard (app/storm.js) uses the same names.not said
app/storm.jsThe 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 …incident.dev@ (commits: incident.conductor@)11-10 21:16

repository

The repository's own files.

FileWhat it isByChangedMade from
.gitignoreByte-compiled / optimized / DLL filesnot said in the file; commits: incident.conductor@11-10 21:15
CNAMEnot said in the file; commits: incident.conductor@11-10 21:14
LICENSEnot said11-10 21:03
README.mdPrompTugal__News__Storm-Charles. 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 …not said in the file; commits: incident.conductor@11-10 21:14CLAUDE.md, PIPELINE.md, REALITY.md, ROADMAP.md, incidents/2026-11-10-storm-charles/README.md, storm-charles.promptugal.news

Gaps

What the catalogue could not establish from the files themselves. Each is for the file's owner to close (a line in its header: who, when, from what); the librarian does not edit others' files.

Files that do not say who wrote them

Records and datasets that give no date of their own

Datasets that name no source in their own fields

Their values may each carry a source inside; the file as a whole names none at the top.

"Everything linked" (Dinis, 10 November): these are reachable only from this catalogue.

Older than the sources they were made from

"Corrections must propagate": a draft, an analysis or a derived dataset whose named source was committed after it. It may still be right; someone should look.

Files with no commit record yet

The commits are read in the librarian's clone, not in CI (last at commit 4b5f0a874d); a file new or changed since shows here until the next read.

Not served on the site

In the repository only (the build skips admin/ and dot files); the links go to GitHub.