{
  "lastUpdated": "2026-05-15T21:02:18.398Z",
  "events": [
    {
      "hash": "3768936cc0b97e10931b2f0c9c37d53b1cf6f9a5",
      "shortHash": "3768936",
      "date": "2026-05-15T07:34:04.000Z",
      "category": "feature",
      "title": "Physical NWE crude editorial estimate + bunker transparency",
      "rawSubject": "feat(home): physical NWE crude editorial estimate + bunker transparency",
      "url": "/"
    },
    {
      "hash": "757c11f2cd56ca3b14fde8d2705c74ef0c0ff071",
      "shortHash": "757c11f",
      "date": "2026-05-14T13:30:15.000Z",
      "category": "feature",
      "title": "Chokepoints overview map + MARAD-can't-downgrade fix",
      "rawSubject": "feat(supply): chokepoints overview map + MARAD-can't-downgrade fix",
      "url": "/supply"
    },
    {
      "hash": "e1a9db763656a68b4871d4e98c8228dadb6ddc08",
      "shortHash": "e1a9db7",
      "date": "2026-05-14T08:37:45.000Z",
      "category": "newsletter",
      "title": "2026-05-14",
      "rawSubject": "chore: newsletter sent 2026-05-14",
      "url": "/briefings"
    },
    {
      "hash": "00bb36949c1b81d33dfe6cc2f8521f5159874839",
      "shortHash": "00bb369",
      "date": "2026-05-14T08:37:23.000Z",
      "category": "newsletter",
      "title": "14 May EuroOilWatch weekly briefing — move to outbox for dispatch",
      "rawSubject": "newsletter: 14 May EuroOilWatch weekly briefing — move to outbox for dispatch",
      "url": "/briefings"
    },
    {
      "hash": "0378d9e4be64217e6d929788740bbecaa3f45408",
      "shortHash": "0378d9e",
      "date": "2026-05-14T08:33:50.000Z",
      "category": "newsletter",
      "title": "14 May EuroOilWatch weekly briefing",
      "rawSubject": "newsletter: 14 May EuroOilWatch weekly briefing",
      "url": "/briefings"
    },
    {
      "hash": "78a88778d50ef3d2d3785a2ad2a8f283bb158d93",
      "shortHash": "78a8877",
      "date": "2026-05-13T15:04:56.000Z",
      "category": "report",
      "title": "Publish Hormuz-to-Hunger v4 PDFs and update download links",
      "rawSubject": "chore(reports): publish Hormuz-to-Hunger v4 PDFs and update download links",
      "url": "/reports"
    },
    {
      "hash": "d5f6d94ff6c7cc719750f864161000e1ec87b803",
      "shortHash": "d5f6d94",
      "date": "2026-05-13T10:15:02.000Z",
      "category": "feature",
      "title": "What Changed Today — network activity feed",
      "rawSubject": "feat(changelog): What Changed Today — network activity feed",
      "url": "/"
    },
    {
      "hash": "ed9f8c1f8c1a207721232f53e4adeaae3211fab3",
      "shortHash": "ed9f8c1",
      "date": "2026-05-12T16:18:44.000Z",
      "category": "feature",
      "title": "Dynamic OG images for /, /gas, /jet",
      "rawSubject": "feat(og): dynamic OG images for /, /gas, /jet",
      "url": "/"
    },
    {
      "hash": "b3a4b17c66757c964418f053e5430bea0d36b880",
      "shortHash": "b3a4b17",
      "date": "2026-05-12T15:00:45.000Z",
      "category": "feature",
      "title": "Public read-only JSON API + dynamic llms.txt",
      "rawSubject": "feat(api): public read-only JSON API + dynamic llms.txt",
      "url": "/api"
    },
    {
      "hash": "d5a65158c929943d995b170d37a731c5423cf467",
      "shortHash": "d5a6515",
      "date": "2026-05-12T13:41:34.000Z",
      "category": "feature",
      "title": "European Jet Fuel Tracker page + homepage card",
      "rawSubject": "feat(jet): European Jet Fuel Tracker page + homepage card",
      "url": "/jet"
    },
    {
      "hash": "398f91a1667028e7a70e1f751a63b9f042407fe3",
      "shortHash": "398f91a",
      "date": "2026-05-08T06:29:49.000Z",
      "category": "feature",
      "title": "Refinery Health Watch panel — surface FIRMS data",
      "rawSubject": "feat(homepage): Refinery Health Watch panel — surface FIRMS data",
      "url": "/"
    },
    {
      "hash": "325b80bd62270709a4071f0358d3640f07a10518",
      "shortHash": "325b80b",
      "date": "2026-05-07T12:19:53.000Z",
      "category": "report",
      "title": "Refresh From Hormuz to Hunger Technical Report v3.1",
      "rawSubject": "chore(reports): refresh From Hormuz to Hunger Technical Report v3.1",
      "url": "/reports"
    },
    {
      "hash": "2522150bb297cd35b95e1ca9ca798fdc48574541",
      "shortHash": "2522150",
      "date": "2026-05-07T08:15:36.000Z",
      "category": "newsletter",
      "title": "2026-05-07",
      "rawSubject": "chore: newsletter sent 2026-05-07",
      "url": "/briefings"
    },
    {
      "hash": "229cf056a899c315d277d845a457cd2442835dca",
      "shortHash": "229cf05",
      "date": "2026-05-07T08:15:05.000Z",
      "category": "newsletter",
      "title": "7 May EuroOilWatch weekly briefing",
      "rawSubject": "newsletter: 7 May EuroOilWatch weekly briefing",
      "url": "/briefings"
    },
    {
      "hash": "55779b81829e457fd48be03d1369055d34688b09",
      "shortHash": "55779b8",
      "date": "2026-05-06T15:27:35.000Z",
      "category": "feature",
      "title": "European gas tracker — TTF vs Henry Hub + AGSI storage",
      "rawSubject": "feat(gas): European gas tracker — TTF vs Henry Hub + AGSI storage",
      "url": "/gas"
    },
    {
      "hash": "e2f4d0786371668c513e999d8ea28ddfce7750c7",
      "shortHash": "e2f4d07",
      "date": "2026-05-06T12:50:02.000Z",
      "category": "feature",
      "title": "Live sea-state panel for shipping chokepoints",
      "rawSubject": "feat(supply): live sea-state panel for shipping chokepoints",
      "url": "/supply"
    },
    {
      "hash": "c74524f00f38d33a630d2f795d4c3512c27d8437",
      "shortHash": "c74524f",
      "date": "2026-05-06T09:55:01.000Z",
      "category": "feature",
      "title": "Add EIA Brent historical context (1987→today)",
      "rawSubject": "feat(prices): add EIA Brent historical context (1987→today)",
      "url": "/prices"
    },
    {
      "hash": "6487e8b1ea0557922ff5f7bd240aa828470457b9",
      "shortHash": "6487e8b",
      "date": "2026-05-05T17:28:06.000Z",
      "category": "analysis",
      "title": "Iran blockade — Europe's storage refill problem",
      "rawSubject": "analysis: Iran blockade — Europe's storage refill problem",
      "url": "/analysis"
    },
    {
      "hash": "1cf9cf8a176a277ac862d45bf9b24d8a1a8ed836",
      "shortHash": "1cf9cf8",
      "date": "2026-05-05T11:12:00.000Z",
      "category": "report",
      "title": "Publish final Fall of the UK Technical Report v9 PDF",
      "rawSubject": "chore(reports): publish final Fall of the UK Technical Report v9 PDF",
      "url": "/reports"
    },
    {
      "hash": "382aa3bd39a364272c90f90c472e807672c51b27",
      "shortHash": "382aa3b",
      "date": "2026-05-05T07:31:08.000Z",
      "category": "report",
      "title": "Refresh Fall of the UK Technical Report v9 PDF",
      "rawSubject": "chore(reports): refresh Fall of the UK Technical Report v9 PDF",
      "url": "/reports"
    },
    {
      "hash": "0be43e023514a1a93f6f4ed05674001a69eacf95",
      "shortHash": "0be43e0",
      "date": "2026-05-04T20:31:27.000Z",
      "category": "report",
      "title": "Add SSRN URL + clickable link to methodology framework",
      "rawSubject": "chore(reports): add SSRN URL + clickable link to methodology framework",
      "url": "/reports"
    },
    {
      "hash": "5b041efd9b67efc0764d055a188b204457cfdeb5",
      "shortHash": "5b041ef",
      "date": "2026-05-04T20:22:09.000Z",
      "category": "report",
      "title": "Patch clickable SSRN link into Technical Report v9",
      "rawSubject": "chore(reports): patch clickable SSRN link into Technical Report v9",
      "url": "/reports"
    },
    {
      "hash": "cdadb4ab7a56a8ff8e87928792cbec23d8747be9",
      "shortHash": "cdadb4a",
      "date": "2026-05-04T20:10:05.000Z",
      "category": "report",
      "title": "Refresh Key Facts, Policy Brief v9, methodology framework",
      "rawSubject": "chore(reports): refresh Key Facts, Policy Brief v9, methodology framework",
      "url": "/reports"
    },
    {
      "hash": "d5f714d0aa0f278f8b88d6baf951c7f395e90ca4",
      "shortHash": "d5f714d",
      "date": "2026-05-04T20:00:31.000Z",
      "category": "report",
      "title": "Replace Fall of the UK Technical Report v8 with v9",
      "rawSubject": "chore(reports): replace Fall of the UK Technical Report v8 with v9",
      "url": "/reports"
    },
    {
      "hash": "e4036165113164c3c1d505fe17f6bb95e6cd2b4e",
      "shortHash": "e403616",
      "date": "2026-05-04T15:22:58.000Z",
      "category": "feature",
      "title": "Publish landing page with email-gated 4-PDF bundle",
      "rawSubject": "feat(fall-of-uk): publish landing page with email-gated 4-PDF bundle",
      "url": "/"
    },
    {
      "hash": "57680570500bee4302213e268824a6a54fc805f4",
      "shortHash": "5768057",
      "date": "2026-05-04T15:06:14.000Z",
      "category": "report",
      "title": "Regenerate Chain Assessment Summary table image with 40-70% correction",
      "rawSubject": "chore(reports): regenerate Chain Assessment Summary table image with 40-70% correction",
      "url": "/reports"
    },
    {
      "hash": "9fe644f1a1433389066d4c53581b318833e9d427",
      "shortHash": "9fe644f",
      "date": "2026-05-04T13:47:41.000Z",
      "category": "report",
      "title": "Apply audit fixes 4, 6, 7 to Fall of the UK bundle",
      "rawSubject": "chore(reports): apply audit fixes 4, 6, 7 to Fall of the UK bundle",
      "url": "/reports"
    },
    {
      "hash": "7646540c42a051955525610eb63de82e7bd1e017",
      "shortHash": "7646540",
      "date": "2026-05-04T11:23:41.000Z",
      "category": "report",
      "title": "Publish Fall of the UK report bundle (40-70% headline corrected)",
      "rawSubject": "chore(reports): publish Fall of the UK report bundle (40-70% headline corrected)",
      "url": "/reports"
    },
    {
      "hash": "8475e196b8127ec64572621ef078ce8f59e512fc",
      "shortHash": "8475e19",
      "date": "2026-05-03T14:22:47.000Z",
      "category": "report",
      "title": "Update Hormuz PDFs to v3 with SSRN methodology citation",
      "rawSubject": "chore(reports): update Hormuz PDFs to v3 with SSRN methodology citation",
      "url": "/reports"
    },
    {
      "hash": "2e9bede08b81a3c12eb03b0e46790218d814e242",
      "shortHash": "2e9bede",
      "date": "2026-05-02T16:51:16.000Z",
      "category": "feature",
      "title": "Publish Compound Cascade methodology framework + cite via SSRN",
      "rawSubject": "feat: publish Compound Cascade methodology framework + cite via SSRN",
      "url": "/"
    },
    {
      "hash": "769f59e75f539f4973e740a987a88742804e259d",
      "shortHash": "769f59e",
      "date": "2026-05-02T11:04:10.000Z",
      "category": "feature",
      "title": "Homepage card, transactional thank-you email, source logging",
      "rawSubject": "feat(hormuz-report): homepage card, transactional thank-you email, source logging",
      "url": "/"
    },
    {
      "hash": "7e76221ae9daa9fcef6b53baa108a6493fac1f39",
      "shortHash": "7e76221",
      "date": "2026-05-02T10:55:02.000Z",
      "category": "feature",
      "title": "Email-gate Hormuz report downloads via Resend signup",
      "rawSubject": "feat(reports): email-gate Hormuz report downloads via Resend signup",
      "url": "/"
    },
    {
      "hash": "7df68a93215d86ee0f4313bbc3957fec7be8b47e",
      "shortHash": "7df68a9",
      "date": "2026-05-02T10:47:19.000Z",
      "category": "feature",
      "title": "Publish \"From Hormuz to Hunger\" report at /reports/from-hormuz-to-hunger",
      "rawSubject": "feat: publish \"From Hormuz to Hunger\" report at /reports/from-hormuz-to-hunger",
      "url": "/"
    },
    {
      "hash": "f415374b6cdd1edeabad82b2a9ca1417fc254de5",
      "shortHash": "f415374",
      "date": "2026-04-30T14:10:33.000Z",
      "category": "newsletter",
      "title": "2026-04-30",
      "rawSubject": "chore: newsletter sent 2026-04-30",
      "url": "/briefings"
    },
    {
      "hash": "98ace8166f3cc8c0b339800dbc7184d178c3baf8",
      "shortHash": "98ace81",
      "date": "2026-04-30T14:09:55.000Z",
      "category": "newsletter",
      "title": "EuroOilWatch Weekly 30 Apr — jet fuel cargoes, refinery tracker launch",
      "rawSubject": "newsletter: EuroOilWatch Weekly 30 Apr — jet fuel cargoes, refinery tracker launch",
      "url": "/briefings"
    },
    {
      "hash": "918bec694d3790dfb5bea9ab6c9f667557f94047",
      "shortHash": "918bec6",
      "date": "2026-04-29T10:45:36.000Z",
      "category": "feature",
      "title": "Link refinery outage tracker prominently with live count",
      "rawSubject": "feat(dashboard): link refinery outage tracker prominently with live count",
      "url": "/"
    },
    {
      "hash": "122aa5440aced25eb8f733a58db0d3e0c351e2c2",
      "shortHash": "122aa54",
      "date": "2026-04-29T10:31:25.000Z",
      "category": "feature",
      "title": "Add PR aggregators + fix region inference",
      "rawSubject": "feat(refineries): add PR aggregators + fix region inference",
      "url": "/"
    },
    {
      "hash": "f21fddb1f7c413ab9398ca86c7a68b0ad99d994d",
      "shortHash": "f21fddb",
      "date": "2026-04-28T13:01:00.000Z",
      "category": "feature",
      "title": "Add refinery outage tracker + fix tanker CI rebase",
      "rawSubject": "feat: add refinery outage tracker + fix tanker CI rebase",
      "url": "/"
    },
    {
      "hash": "e750a9385eea366dddd4e9f901c122f6fb3d4df9",
      "shortHash": "e750a93",
      "date": "2026-04-27T16:57:45.000Z",
      "category": "feature",
      "title": "Drive Hormuz/Bab-el-Mandeb risk from MARAD advisories",
      "rawSubject": "feat(supply): drive Hormuz/Bab-el-Mandeb risk from MARAD advisories",
      "url": "/supply"
    },
    {
      "hash": "9b4b24ace28fbdbaaa7e0209bb1a22501afe5014",
      "shortHash": "9b4b24a",
      "date": "2026-04-27T06:40:43.000Z",
      "category": "feature",
      "title": "Add CENTCOM advisory feed (Middle East maritime)",
      "rawSubject": "feat: add CENTCOM advisory feed (Middle East maritime)",
      "url": "/"
    },
    {
      "hash": "e3de5a6ab09e42532dbcbe0b045ce4742349959d",
      "shortHash": "e3de5a6",
      "date": "2026-04-26T11:02:32.000Z",
      "category": "feature",
      "title": "Add ARA Independent Stocks card to /supply",
      "rawSubject": "feat: add ARA Independent Stocks card to /supply",
      "url": "/"
    },
    {
      "hash": "7ec93b090a7205be81c516c8537f50140f398193",
      "shortHash": "7ec93b0",
      "date": "2026-04-26T10:57:07.000Z",
      "category": "feature",
      "title": "ARA independent stocks fetcher (Path B)",
      "rawSubject": "feat: ARA independent stocks fetcher (Path B)",
      "url": "/"
    },
    {
      "hash": "30eb0888c090397ef74675b9f3fbf5a14db13ae5",
      "shortHash": "30eb088",
      "date": "2026-04-26T10:12:40.000Z",
      "category": "feature",
      "title": "Tanker traffic aggregation pipeline (Phase 1)",
      "rawSubject": "feat: tanker traffic aggregation pipeline (Phase 1)",
      "url": "/"
    },
    {
      "hash": "95ac2ccd0d2204ff8afe58649e89783301d3b9b5",
      "shortHash": "95ac2cc",
      "date": "2026-04-23T09:13:35.000Z",
      "category": "feature",
      "title": "Add Druzhba pipeline halt (1 May 2026) event card to homepage",
      "rawSubject": "feat: add Druzhba pipeline halt (1 May 2026) event card to homepage",
      "url": "/"
    },
    {
      "hash": "a033cf6b0168225ee0493b257cb4dae1e0099ec0",
      "shortHash": "a033cf6",
      "date": "2026-04-23T08:45:15.000Z",
      "category": "newsletter",
      "title": "2026-04-23",
      "rawSubject": "chore: newsletter sent 2026-04-23",
      "url": "/briefings"
    },
    {
      "hash": "2056c94530c7403c02e33d47814c7994f5739cd6",
      "shortHash": "2056c94",
      "date": "2026-04-23T08:44:21.000Z",
      "category": "newsletter",
      "title": "Weekly briefing 23 April 2026 + Stooq brent fix",
      "rawSubject": "newsletter: weekly briefing 23 April 2026 + Stooq brent fix",
      "url": "/briefings"
    },
    {
      "hash": "a6c04c7bbdff023ccb2f41f7c6a5da7de70ddbcd",
      "shortHash": "a6c04c7",
      "date": "2026-04-19T09:45:06.000Z",
      "category": "feature",
      "title": "Add CREA energy research feed panel to supply page",
      "rawSubject": "feat: add CREA energy research feed panel to supply page",
      "url": "/"
    },
    {
      "hash": "ed4435e77eb8ca3e2a286dc8a1744552070b813f",
      "shortHash": "ed4435e",
      "date": "2026-04-19T09:22:51.000Z",
      "category": "feature",
      "title": "Add MARAD maritime advisory panel to supply page",
      "rawSubject": "feat: add MARAD maritime advisory panel to supply page",
      "url": "/"
    },
    {
      "hash": "7dcceb4b2beaa9e8c05d717baebc691f3fcb45b2",
      "shortHash": "7dcceb4",
      "date": "2026-04-18T16:12:10.000Z",
      "category": "newsletter",
      "title": "2026-04-18",
      "rawSubject": "chore: newsletter sent 2026-04-18",
      "url": "/briefings"
    },
    {
      "hash": "6163915637e9b7b0801111eaea21d61301ec33b1",
      "shortHash": "6163915",
      "date": "2026-04-18T16:11:46.000Z",
      "category": "newsletter",
      "title": "Urgent Hormuz reclosure alert — 18 April 2026",
      "rawSubject": "newsletter: urgent Hormuz reclosure alert — 18 April 2026",
      "url": "/briefings"
    },
    {
      "hash": "9b62455ae3cb653a84705f883f77c0f04e492c59",
      "shortHash": "9b62455",
      "date": "2026-04-18T15:48:44.000Z",
      "category": "feature",
      "title": "Add Signal Tracker page (/signals)",
      "rawSubject": "feat: add Signal Tracker page (/signals)",
      "url": "/"
    },
    {
      "hash": "29cfb5b4c8a7d35981cc0e8333f0715d844a9aec",
      "shortHash": "29cfb5b",
      "date": "2026-04-17T17:04:33.000Z",
      "category": "newsletter",
      "title": "2026-04-17",
      "rawSubject": "chore: newsletter sent 2026-04-17",
      "url": "/briefings"
    },
    {
      "hash": "20b4350744d51703349ae8953e2f850b081441a4",
      "shortHash": "20b4350",
      "date": "2026-04-13T08:57:26.000Z",
      "category": "newsletter",
      "title": "2026-04-13",
      "rawSubject": "chore: newsletter sent 2026-04-13",
      "url": "/briefings"
    },
    {
      "hash": "6a1ffaa1dcffd174e873f37277d14ab6a435ac3d",
      "shortHash": "6a1ffaa",
      "date": "2026-04-10T08:58:31.000Z",
      "category": "feature",
      "title": "Add dismissible disruption alert banner to homepage",
      "rawSubject": "feat: add dismissible disruption alert banner to homepage",
      "url": "/"
    },
    {
      "hash": "6ec9d3d706d9e5863bb6d8a9e531bacc72631b90",
      "shortHash": "6ec9d3d",
      "date": "2026-04-10T07:50:37.000Z",
      "category": "feature",
      "title": "Add prebuild staleness check for supply route chokepoints",
      "rawSubject": "feat: add prebuild staleness check for supply route chokepoints",
      "url": "/"
    },
    {
      "hash": "cf681dbbd8dc7a724d036041879e806e51232a62",
      "shortHash": "cf681db",
      "date": "2026-04-08T15:45:02.000Z",
      "category": "feature",
      "title": "Add live AIS tanker map at /supply/map",
      "rawSubject": "feat: add live AIS tanker map at /supply/map",
      "url": "/"
    },
    {
      "hash": "4fd8bbfde93ce16b789b6a1b9829c2d3b07f9175",
      "shortHash": "4fd8bbf",
      "date": "2026-04-08T15:04:22.000Z",
      "category": "feature",
      "title": "Add global supply routes / chokepoint status page",
      "rawSubject": "feat: add global supply routes / chokepoint status page",
      "url": "/"
    },
    {
      "hash": "8b88e581fd4abcafef898db910ed43c3a1b16e2e",
      "shortHash": "8b88e58",
      "date": "2026-04-08T08:26:56.000Z",
      "category": "feature",
      "title": "Add news feed page, pipeline schedule and Netlify rebuild hook",
      "rawSubject": "feat: add news feed page, pipeline schedule and Netlify rebuild hook",
      "url": "/"
    }
  ],
  "siteBaseUrl": "https://eurooilwatch.com"
}