PrompTugal.newsStorm CharlesUpdated 12:12 UTCNew here?v0.1.1049Repo
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 pack for incident.graph@web-summit.dinis

Kept by incident.librarian@web-summit.dinis, 2026-11-11, 12:12 UTC: written by tools/library-pack.mjs on every push from the files it points at. Read start.md first, then this, then open only what you need. A pointer is path (bytes, the first 10 hex digits of its sha256); any path opens at view/?path=<path>. The pack.

Your job

ontologist and cartographer: one graph of the storm: actors, decisions, warnings, sources, signals, places, outlets, agents; a small ontology (data/graph/ontology.json, with ontologist@'s schemas if readable); built from the existing JSON, never by hand twice; a graph page reusing Silvio's engine; and a database in the browser (SQL over the datasets, as sgit.ai's /databases/ does: read how, reuse) with five example queries. (from agents/JOBS.md (16,087 B, cb88df47c9))

You may change: data/graph/**, app/graph/**, tools/graph-*.mjs, data/query/**, agents/graph/**, accounts/ledger/graph.jsonl, transition/interviews/graph.md, and your own entry in data/keys.json. (from agents/policy.json (13,565 B, ec9b7b8d15))

Your draft behaviour policy (not agreed by Dinis): agents/graph/policy.md (8,218 B, b66062553f)

Where the work stands

  • State: the third graph session (from 07:56 on 11 November): the graph is five parts (storm.json names storm-decisions, storm-signals, storm-sources, storm-elsewhere in more), joined to sources/, meteorology/ and evidence/ by crossings; rebuilt hourly (its own date: 2026-11-11T11:54Z)
  • Next: sizes at 11:54 on 11 November: tables/coverage.json 196 KB with coverage-2.json (parts of at most 190 KB of rows: nothing to do), storm-sources.json 147 KB (about 3 KB an hour; next to split: …
  • Next: app/labs reads tables/signals.json and tables/actors.json without following more: tell incident.labs@ before either nears 190 KB (signals is about 60 KB now)
  • Next: deeper zoom: a day into its rows; a decision into its evidence captures (rows.json per row), as its own small graph
  • Ask: Dinis: git history (earlier commits and CI tags) still holds a private person's post address in data/graph/; nothing here rewrites history. The conductor has it for you.
  • Ask: incident.meteorologist@: in weather/cap.json, most replaces point at messages no longer in the feed, so was_level and was_starts are empty for 10 of 11 updates; keeping each message once seen (as …
  • Ask: ontologist@'s schemas were not readable from this session (its repository is not attached).
  • Ask: incident.researcher@: 7 hosts are mapped by hand to their actor (ontology own_channels); a channel field on each node in decisions/graph.json would remove the list.
  • The whole status, with everything done: agents/graph/status.json (17,913 B, cc7c694fa5)

The hand-over from the session before yours

Copied whole from agents/graph/status.json (handover): this is the part of the status a new session cannot start without.

  • In flight: nothing half done.
  • Each wake: git pull; node tools/graph-build.mjs; look at the last line and at sizes over 150 KB; commits with For: incident.graph@ since the last wake; test with a headless browser when a script changes (createRequire('/')('playwright'), a small static server on _site); measure; release.
  • Lesson: a neighbour changing the shape of an id breaks links silently: after any neighbour's change, open three node panes in a browser and check every link resolves in _site
  • Lesson: label a join 'fact' only when the other world states it; a match by host is a hypothesis with its reason
  • Lesson: tell studio and labs in the commit (For:) before a node id or verb changes; app/labs/timelines.js reads the actor:host: prefix
  • read first: agents/graph/HANDOVER.md (the first session's) is still right except: Source node ids are address:<id> (source:* is incident.sources@'s); entity on a node is the entity's own id (<type>/<slug>); meteorology/, sources/ and evidence/ ARE joined; the graph is five parts (storm-decisions.json since 07:58 on 11 November) and a table over 190 KB writes itself in parts.
  • the joins: data/graph/ontology.json crossings (hand-kept: 4 worlds, 6 verbs each with an inverse) and the block 'the crossings' near the end of tools/graph-build.mjs, which writes data/graph/crossings.json (edges to '<world>/<its id>' with href, label, why; captures once per address). The pages read it in app/graph/common.js (G.cross, G.captures); graph.js shows 'our capture' and 'in the other graphs'; ontology.js has the table.
  • next in order: sizes at 11:54 on 11 November: tables/coverage.json 196 KB with coverage-2.json (parts of at most 190 KB of rows: nothing to do), storm-sources.json 147 KB (about 3 KB an hour; next to split: Datasets from Sources, or by host), tables/sources.json 105 KB, storm.json 97 KB, crossings.json and storm-decisions.json under 100 KB
  • next in order: app/labs reads tables/signals.json and tables/actors.json without following more: tell incident.labs@ before either nears 190 KB (signals is about 60 KB now)
  • next in order: deeper zoom: a day into its rows; a decision into its evidence captures (rows.json per row), as its own small graph
  • next in order: the media watch's keyed facts as edges (research/media/facts.json joined to node ids)
  • next in order: check the pages on the live site, not only the local build
  • wake: the second session was woken hourly at :53; the third is told an hourly wake at :53 will reach it (the conductor sets it)
  • inputs changed: research/media/coverage.json: the builder reads its parts (articles_files) since 10:45 on 11 November; if the media watch renames or moves the parts, the builder falls back to the short rows and, once those are dropped, the coverage table would be empty without an error: look at coverage N in the builder's last line each wake

Open first, before any other file: the hand-over written by the session before yours: agents/graph/HANDOVER.md (8,520 B, 79137a9e34)

Your files

33 files, 1,444,217 bytes in all (about 601,757 tokens to read every one): data/graph/ 19, app/graph/ 10, tools/ 2, agents/graph/ 1, data/query/ 1. The ones to open first:

  • tools/graph-build.mjs (61,452 B, 202a94d89b): The graph of an incident, built from its JSON files and never by hand (incident.graph@web-summit.dinis). node …
  • tools/graph-places.mjs (1,577 B, 88d69c5eaf): IPMA's warning areas, by code: node tools/graph-places.mjs <the file fetched from IPMA <UTC time read Reads …
  • data/graph/storm.json (96,654 B, af6119b1ee): One graph of Storm Charles, Lisbon: Wednesday 11 November 2026: actors, decisions, warnings, signals, …
  • data/graph/ontology.json (12,775 B, 8c6f71dad9): The ontology of an incident on this site: eight kinds of thing and nine relations, small enough to explain on …
  • data/graph/README.md (9,748 B, d146307f29): Kept by incident.graph@web-summit.dinis, 11 November 2026, 07:57 UTC
  • app/graph/README.md (5,167 B, 1a64a1d061): One graph of Storm Charles: actors, decisions, warnings, signals, sources, places, datasets and agents, each …
  • data/graph/queries.json (9,607 B, f4493363c9): The worked queries of the query page (/data/query/): each answers a real question about Storm Charles from …
  • data/query/README.md (11,815 B, b10ebecf58): A database in your browser over Storm Charles's data: SQLite (WebAssembly) on the decisions, warnings, …
  • data/graph/crossings.json (92,147 B, 388f98f70b): Where the graph of Storm Charles, Lisbon: Wednesday 11 November 2026 joins the site's other graphs, without …
  • data/graph/storm-decisions.json (95,959 B, 99322dc8cc): Part of the graph of Storm Charles, Lisbon: Wednesday 11 November 2026: every Decision, with the edges that …

Every one, with who last changed it: the catalogue, filtered by your paths.

Your neighbours

What your files say they read, and who reads yours: taken from the links and sources the files themselves declare. A contract here is an address and a shape that does not depend on anyone's session.

You read:

  • incident.conductor@ (1 file of theirs): admin/build/generators.json (1,172 B, 4713a630a0): Generators the build runs with --out _site. Each writes only into the …
  • incident.entities@ (1 file of theirs): entities/index.json (54,760 B, 4849c900a4): Every node of entities/: its id (its page is entities/<id>.html, its …
  • incident.media@ (1 file of theirs): research/media/facts.json (15,088 B, e370eb98d1): The keyed facts the media watch times the press against: for each, …
  • incident.weatherwatch@ (1 file of theirs): research/weather-sites/sites.json (112,465 B, a980b5d8ca): Three maps of weather sites, for incident.designer@ and whoever …
  • incident.sources@ (1 file of theirs): sources/README.md (19,465 B, 25301876dd): Kept by incident.sources@web-summit.dinis, 11 November 2026, 11:28 UTC

They read yours:

  • incident.librarian@ (2 files of yours): app/graph/README.md (5,167 B, 1a64a1d061): One graph of Storm Charles: actors, decisions, warnings, signals, …; data/query/README.md (11,815 B, b10ebecf58): A database in your browser over Storm Charles's data: SQLite …
  • incident.conductor@ (2 files of yours): app/graph/README.md (5,167 B, 1a64a1d061): One graph of Storm Charles: actors, decisions, warnings, signals, …; data/graph/tables/timeline.json (37,751 B, 50519c882e): The lead-time line: every warning and decision with a time known to …
  • incident.designer@ (2 files of yours): app/graph/graph.css (12,617 B, 54dca87d38): The query page and the graph page (incident.graph@web-summit.dinis). …; data/query/README.md (11,815 B, b10ebecf58): A database in your browser over Storm Charles's data: SQLite …
  • incident.studio@ (2 files of yours): data/graph/ontology.json (12,775 B, 8c6f71dad9): The ontology of an incident on this site: eight kinds of thing and …; data/graph/storm.json (96,654 B, af6119b1ee): One graph of Storm Charles, Lisbon: Wednesday 11 November 2026: …
  • incident.labs@ (2 files of yours): data/graph/tables/actors.json (49,201 B, 1076c5f67f): Who decides, warns or reports: bodies, operators, the organiser, …; data/graph/tables/signals.json (83,969 B, 4ee9a9aa71): The timeline as rows: one per signal, with who published it …
  • incident.ci@ (1 file of yours): data/graph/README.md (9,748 B, d146307f29): Kept by incident.graph@web-summit.dinis, 11 November 2026, 07:57 UTC

Open cards on the board

  • a-graph-3 (ask, open): Sources/wikipedia/ has no page in the build (45 of 46 bodies do), so one registered-as link leads nowhere; waiting on incident.sources@
  • a-media-2 (ask, open): Please read the media items from the files in research/media/coverage.json's articles_files (join each file's…; waiting on incident.graph@
  • a-meteorology-5 (ask, open): Answered (a-graph-2); waiting on incident.graph@
  • a-ontologist-schemas (ask, open): ontologist@'s schemas are not readable from the graph's session; waiting on incident.conductor@
  • a-private-address-history (ask, open): A private person's post address is still in git history; waiting on Dinis
  • j-graph-11 (job, open): Incident.graph@: deeper zoom
  • j-graph-12 (job, open): Incident.graph@: the media watch's keyed facts as edges (research/media/facts.json joined to node ids)
  • j-graph-15 (job, open): Incident.graph@: check the pages on the live site, not only the local build
  • j-graph-17 (job, open): Incident.graph@: app/labs reads tables/signals.json and tables/actors.json without following more
  • j-graph-18 (job, open): Incident.graph@: sizes at 10:45 on 11 November
  • j-graph-round-2 (job, open): incident.graph@: Round two: more views and controls, the ontology shown, lead times as their own part

Each card: board/items/<id>.json.

What this pack cost you

12,022 bytes (about 5,009 tokens, estimated at 2.4 bytes a token). It points at 24 files of 847,692 bytes; your own files are 1,444,217 bytes.