{
  "agent": "incident.labs@web-summit.dinis",
  "state": "second session, handing over after the 09:12 look: twelve experiments pass on the 08:45 data; agents/labs/HANDOVER.md is current for a fresh session (the 12:00 look under the wind warning is its first job)",
  "last_wake": "2026-11-11T09:15Z",
  "started_by": "incident.conductor@web-summit.dinis (session_018yvwtQ4XRqTiSE3vjVq9KD), at Dinis Cruz's word",
  "done": [
    "session key made (encryption sha256:e7ba51b45cae191b, signing sha256:38e087ab3c122885; pki-agent.mjs checked against the pinned sha256 fcb28a1c...02ab), public half in data/keys.json",
    "the Labs core (app/labs/labs.js, labs.css): loads only the site's published JSON, draws SVG and HTML from the design tokens, every mark carries an item id and one hook, Labs.openItem(id), shows the row or edge with its source, the time read and the file behind it (a side panel on a desk, a bottom sheet on a phone); the hook is what the reader's panel and the evidence pages will replace",
    "labs/timelines/: lanes (who spoke when, with an even-spacing switch), known-when (a scrubber that rebuilds IPMA's warnings from the CAP messages, the decisions and the rows at any minute), story (decisions only, warnings left, decisions right, gaps written out)",
    "labs/decisions/: flow (what followed from one chosen warning or decision: a query, never the whole graph), lead-times (warning sent, announced, effect begins, plus the meteorologist's table), days (Tuesday, Wednesday, Thursday strips)",
    "labs/weather/: stations (warned against observed for 8 Lisbon and 16 Madeira stations on one axis), day-bands (the day hour by hour: warned, forecast, observed, decided, our hypothesis), models (four model runs dashed and named against what was measured; never our forecast)",
    "each page says what it tries and what it shows badly; labs/index.md gives a verdict on each",
    "tested in a headless browser at 1680 and 390 wide, light and dark: every page draws, no page-level sideways scroll, a click on a mark opens its item; no screenshot committed",
    "round 2: labs/timelines/lag (minutes from the primary source's time to each outlet's first item, from incident.media@'s first-on-each-fact.json; and when each step of IPMA's warnings happened against when it was read into our data, with a plain note on what the long bars do and do not measure)",
    "Labs.openItem now fills 'This item' in incident.designer@'s reader's panel (window.stormPanel) when the page has it, and falls back to its own side panel; tested at 1680 and 390 wide on all ten pages",
    "round 3, at incident.conductor@'s notes: lanes now take each row's publisher from incident.graph@'s tables (data/graph/tables/signals.json and actors.json, joined on the row id) instead of a keyword match; every item shows 'Our capture' (the evidence page) first where the row carries one; decision edges show the service's state; the scrubber has Madeira's four areas and a play button; day-bands offered to incident.weather@ as a candidate for the front page",
    "round 4, at incident.weather@'s ask after it lifted day-bands: labs/weather/day-rebuilt (the strip for Tuesday built only from what the files still hold, each warning marked as in the feed or rebuilt from our record; plain notes where a forecast or a TAF for that day was not kept), and shading on one scale per unit as a switch on both strips",
    "day-bands: a decision with no stated end is drawn only on the day it starts (693cde5); tokens measured into accounts/ledger/labs.jsonl; HANDOVER.md written",
    "second session, round 5: session key made (encryption sha256:ebba9a92c386ec63, record sha256:2bf209f3a17b276f), the first session's entry marked handed over",
    "labs/decisions/state: a board of the decisions by state of service (closed, suspended, limited, running, not announced), by place or by kind of body, hiding what had ended or been superseded when the graph was last written; states are said by column, word and an ink glyph, never a warning colour",
    "a table twin under every chart, made from the chart's own marks in the order drawn (each row opens its item): a linear keyboard path through every view",
    "tools/labs-check.mjs: every experiment at 1680 and 390 wide: marks drawn, nothing wider than the screen (also with an item or the table open), a click opens an item, the console quiet; 24 checks pass",
    "checked against Wednesday morning's data: weather/models drew no observed rain (its station reports none: now the Lisbon station that does, named), flattened the forecast rain peak at 12 mm (the scale now fits), and joined the airport's occasional gusts into a line (now points, with a note); weather/stations stopped at the last observed hour, hiding Lisbon's red hours ahead (the axis now runs to the end of the day with an \"observed to\" line)",
    "09:12 look under the red rain (data read 08:45): day-bands, stations, state and lead-times read correctly; weather/models still said \"red wind warning: gusts to 120 km/h (140 where most exposed)\" in fixed words and drew red warnings only, after IPMA lowered Lisbon's wind to orange at 07:16: the strip and the gust line now take level, hours and words from warnings.json; a clipped label on stations fixed"
  ],
  "best_this_round": {
    "timelines": "known-when: it is the only view that answers 'what did they know when they decided', and it is rebuilt from IPMA's own send times",
    "decisions": "lead-times still; state is the quickest answer to \"what is shut and who has not said\" and the better candidate for a phone",
    "weather": "day-bands: closest to the hour-by-hour Dinis asked for; candidate for the Weather face once incident.designer@ has simplified it"
  },
  "next": [
    "Wikipedia on the lag view when the first edit per keyed fact is published in first-on-each-fact.json's shape_for_other_series (not there at 06:50)",
    "the 12:00 UTC look (a fresh session): run tools/labs-check.mjs, then read screenshots of day-bands, stations and models; nothing in app/labs may state a level or a figure of a warning in fixed words",
    "a keyboard order check on the SVG marks themselves (the table twin gives a linear path meanwhile)",
    "entity links in items when rows and edges carry entity ids"
  ],
  "asks": [
    "incident.researcher@: only 8 of the 47 edges in decisions/graph.json state both a minute of announcement and effect_from_utc; every edge that gains them appears on the lead-times chart by itself",
    "incident.meteorologist@: a field on each Madeira station saying which IPMA warning area it is in (north coast, south coast, mountains, Porto Santo) would let the stations view draw the warning on the station's own row; and gust observations, if any feed has them, would let wind be checked against the warning",
    "incident.media@: first-on-each-fact.json works well as data; the same shape for Wikipedia's first edit on each keyed fact would put Wikipedia on the lag view",
    "incident.weather@: you said you would lift the Tuesday strip (labs/weather/day-rebuilt) after the 05:00 observations: does it need anything changed? Two fixes of this hour may matter to the front page too: a rain series should not come from Lisboa (Geofísico), whose rain_mm is null in lisbon-rain.json, and airport gusts are only present in some METARs"
  ],
  "updated": "2026-11-11T09:15Z",
  "by": "incident.labs@web-summit.dinis",
  "session": "session_018yvwtQd1Y2ZeoQ81ypPc4n",
  "handover": {
    "written": "2026-11-11T09:15Z",
    "in_flight": "nothing: everything written is pushed",
    "each_wake": "git fetch origin dev && git reset --hard origin/dev; node admin/build/build.mjs && node tools/labs-check.mjs; then screenshots of the weather views, read by eye",
    "wake": "one one-shot wake from incident.conductor@ fired into this session at 09:12 UTC; no recurring wake",
    "kept_outside_git": "screenshots and the twenty-line screenshot script (a scratch folder, gone with the session): Playwright, page.locator(\".lab\").screenshot",
    "lessons": [
      "the check passes on a view that says the wrong thing: three faults at 06:50 and one at 09:15 were found only by looking",
      "a warning changes: never write its level or figure in a script or a page; read it from warnings.json or cap.json"
    ],
    "cards": "a-labs-2, a-labs-3, a-labs-5 still wait on others and want no answer from labs; j-labs-5 (round 4) is done by rounds 4 and 5 except Wikipedia on the lag view"
  }
}
