{
  "lastUpdated": "2026-06-29T19:05:58.898Z",
  "events": [
    {
      "hash": "2eab63ad14f6da4a554c2ac720420d58269e547d",
      "shortHash": "2eab63a",
      "date": "2026-06-26T13:00:10.000Z",
      "category": "feature",
      "title": "Flag 'Moving Downstream' flagship with a Latest link under the research callout",
      "rawSubject": "feat(home): flag 'Moving Downstream' flagship with a Latest link under the research callout",
      "url": "/"
    },
    {
      "hash": "5c88a8efd3ded5ebc1b0d5773fe427ccf7754231",
      "shortHash": "5c88a8e",
      "date": "2026-06-26T12:33:18.000Z",
      "category": "feature",
      "title": "Ship 'The Oil Crisis Is Moving Downstream' flagship",
      "rawSubject": "feat(research): ship 'The Oil Crisis Is Moving Downstream' flagship",
      "url": "/"
    },
    {
      "hash": "8287e28aedc76bd38d7c3fd546557719a89fb81d",
      "shortHash": "8287e28",
      "date": "2026-06-24T10:08:50.000Z",
      "category": "feature",
      "title": "Add hover permalink (#) affordance per event",
      "rawSubject": "feat(hormuz-timeline): add hover permalink (#) affordance per event",
      "url": "/"
    },
    {
      "hash": "123843ef8b012c1a2ad1438548b8c284e923b456",
      "shortHash": "123843e",
      "date": "2026-06-24T09:41:14.000Z",
      "category": "feature",
      "title": "Add Hormuz Timeline to nav (desktop+mobile) + /supply cross-link",
      "rawSubject": "feat(nav): add Hormuz Timeline to nav (desktop+mobile) + /supply cross-link",
      "url": "/"
    },
    {
      "hash": "440024092a67dd69c557934926952063555e4a43",
      "shortHash": "4400240",
      "date": "2026-06-24T08:44:41.000Z",
      "category": "feature",
      "title": "Sourced, filterable 2026 Hormuz crisis timeline (UK pilot)",
      "rawSubject": "feat(hormuz-timeline): sourced, filterable 2026 Hormuz crisis timeline (UK pilot)",
      "url": "/"
    },
    {
      "hash": "2b3c0bf7946069981448c701afb5b18bcd323db7",
      "shortHash": "2b3c0bf",
      "date": "2026-06-23T08:51:29.000Z",
      "category": "newsletter",
      "title": "Send UK weekly briefing 2026-06-23",
      "rawSubject": "newsletter: send UK weekly briefing 2026-06-23",
      "url": "/briefings"
    },
    {
      "hash": "5c0e98198d7cba68dc440e69346c67b790d505b8",
      "shortHash": "5c0e981",
      "date": "2026-06-21T15:29:45.000Z",
      "category": "feature",
      "title": "Pressure-test the Turkey oil-dollar cascade thesis",
      "rawSubject": "feat(analysis): pressure-test the Turkey oil-dollar cascade thesis",
      "url": "/"
    },
    {
      "hash": "bc74dc77f6e0a02b074ea695b1a1e1e7225bd194",
      "shortHash": "bc74dc7",
      "date": "2026-06-21T14:31:31.000Z",
      "category": "feature",
      "title": "Red alert — Iran declares Strait of Hormuz closed (US disputes); banner+article+spot-physical",
      "rawSubject": "feat(hormuz): red alert — Iran declares Strait of Hormuz closed (US disputes); banner+article+spot-physical",
      "url": "/"
    },
    {
      "hash": "0a37551fb90576397eb6d0bcb86dd0e3f4a947ac",
      "shortHash": "0a37551",
      "date": "2026-06-19T08:33:42.000Z",
      "category": "feature",
      "title": "Reframe to \"under strain\" after Switzerland-talks delay + Lebanon escalation",
      "rawSubject": "feat(mou): reframe to \"under strain\" after Switzerland-talks delay + Lebanon escalation",
      "url": "/"
    },
    {
      "hash": "e9a6c1c4a7d4429afd1cce1b565c94a9a0dcb6b9",
      "shortHash": "e9a6c1c",
      "date": "2026-06-18T09:24:34.000Z",
      "category": "feature",
      "title": "Link Last Prompt as the individual-scale companion",
      "rawSubject": "feat(research): link Last Prompt as the individual-scale companion",
      "url": "/"
    },
    {
      "hash": "4eaac61a57d6da5116d5c31277dbd6ccd7d146e3",
      "shortHash": "4eaac61",
      "date": "2026-06-17T09:23:04.000Z",
      "category": "feature",
      "title": "Feature strategic reports on the Research hub",
      "rawSubject": "feat: feature strategic reports on the Research hub",
      "url": "/"
    },
    {
      "hash": "2d22b6a3fc8f176476b64a4dad90e5a2cb940efe",
      "shortHash": "2d22b6a",
      "date": "2026-06-16T13:48:30.000Z",
      "category": "feature",
      "title": "Add Research hub tab + homepage callout",
      "rawSubject": "feat: add Research hub tab + homepage callout",
      "url": "/"
    },
    {
      "hash": "ab01596f01a4d9b10d2d16c8f6ae158ab065c974",
      "shortHash": "ab01596",
      "date": "2026-06-16T08:48:01.000Z",
      "category": "newsletter",
      "title": "UK weekly briefing 16 June 2026 (send)",
      "rawSubject": "newsletter: UK weekly briefing 16 June 2026 (send)",
      "url": "/briefings"
    },
    {
      "hash": "2bf0501233196abca4bc323cf05b46c58d832dbd",
      "shortHash": "2bf0501",
      "date": "2026-06-12T09:03:16.000Z",
      "category": "feature",
      "title": "Hormuz Inventory Runway — /runway interactive page + cross-posted analysis",
      "rawSubject": "feat: Hormuz Inventory Runway — /runway interactive page + cross-posted analysis",
      "url": "/"
    },
    {
      "hash": "9dbda3874a78ff8d3e0350e0d16322b6e2d4877a",
      "shortHash": "9dbda38",
      "date": "2026-06-10T08:25:19.000Z",
      "category": "feature",
      "title": "Make chokepoint risk badges dynamic from live PortWatch transit",
      "rawSubject": "feat(supply): make chokepoint risk badges dynamic from live PortWatch transit",
      "url": "/supply"
    },
    {
      "hash": "21692f8e0565d33d07a03dcf9197b3b8fbfbf99b",
      "shortHash": "21692f8",
      "date": "2026-06-10T07:55:18.000Z",
      "category": "feature",
      "title": "Lift briefing sign-up to the top of the dashboard",
      "rawSubject": "feat(home): lift briefing sign-up to the top of the dashboard",
      "url": "/"
    },
    {
      "hash": "3c84064f59c5967f4caf6a69738f0658fe33ea36",
      "shortHash": "3c84064",
      "date": "2026-06-10T07:46:32.000Z",
      "category": "feature",
      "title": "Move weekly briefing sign-up high + make it prominent",
      "rawSubject": "feat(home): move weekly briefing sign-up high + make it prominent",
      "url": "/"
    },
    {
      "hash": "77392fabb5bf18784a4f0367d08d4eef1ff362f2",
      "shortHash": "77392fa",
      "date": "2026-06-09T14:52:49.000Z",
      "category": "feature",
      "title": "Oil Route Stress Score + AIS-confidence flags on chokepoint panel",
      "rawSubject": "feat(supply): Oil Route Stress Score + AIS-confidence flags on chokepoint panel",
      "url": "/supply"
    },
    {
      "hash": "a80de57d46c99a4456f0b9804d48062a7051e2af",
      "shortHash": "a80de57",
      "date": "2026-06-09T13:58:03.000Z",
      "category": "feature",
      "title": "Capacity-weight the Chokepoint Transit Monitor (DWT, not ship count)",
      "rawSubject": "feat(supply): capacity-weight the Chokepoint Transit Monitor (DWT, not ship count)",
      "url": "/supply"
    },
    {
      "hash": "3387cb421c50dc6dd88f37cafc48ab3574096971",
      "shortHash": "3387cb4",
      "date": "2026-06-09T13:45:25.000Z",
      "category": "feature",
      "title": "Tailor Port Oil-Flow roster per site (+ keep global hubs)",
      "rawSubject": "feat(supply): tailor Port Oil-Flow roster per site (+ keep global hubs)",
      "url": "/supply"
    },
    {
      "hash": "5a7a26770690f30dedd3a0e9cba3502ab8de7fe5",
      "shortHash": "5a7a267",
      "date": "2026-06-09T13:29:38.000Z",
      "category": "feature",
      "title": "Port Oil-Flow Monitor from IMF PortWatch Daily_Ports_Data",
      "rawSubject": "feat(supply): Port Oil-Flow Monitor from IMF PortWatch Daily_Ports_Data",
      "url": "/supply"
    },
    {
      "hash": "0bbc994618bb0360ba1f214cdbd00b08a9b35390",
      "shortHash": "0bbc994",
      "date": "2026-06-09T12:57:11.000Z",
      "category": "feature",
      "title": "Chokepoint Transit Monitor from IMF PortWatch",
      "rawSubject": "feat(supply): Chokepoint Transit Monitor from IMF PortWatch",
      "url": "/supply"
    },
    {
      "hash": "eb295e4e9a9360a85b64bac2eee254df615bc7c5",
      "shortHash": "eb295e4",
      "date": "2026-06-09T12:23:59.000Z",
      "category": "analysis",
      "title": "From Hormuz to Hunger, six weeks on — mechanism validated, scenarios not",
      "rawSubject": "analysis: From Hormuz to Hunger, six weeks on — mechanism validated, scenarios not",
      "url": "/analysis"
    },
    {
      "hash": "8db3b98ea7342dddf49eb689fe2d570adf4fa32b",
      "shortHash": "8db3b98",
      "date": "2026-06-09T08:37:09.000Z",
      "category": "feature",
      "title": "Add Vulnerability Tiering as the third tool",
      "rawSubject": "feat(doom-loop): add Vulnerability Tiering as the third tool",
      "url": "/"
    },
    {
      "hash": "f2751aa94eba935c52eeb5ef6f99c801540baecd",
      "shortHash": "f2751aa",
      "date": "2026-06-09T07:49:51.000Z",
      "category": "newsletter",
      "title": "UK weekly briefing 9 June 2026 (send)",
      "rawSubject": "newsletter: UK weekly briefing 9 June 2026 (send)",
      "url": "/briefings"
    },
    {
      "hash": "2861715b8ca799b00dc44a770f18ff78cbf0a0b4",
      "shortHash": "2861715",
      "date": "2026-06-08T14:15:57.000Z",
      "category": "feature",
      "title": "Add /doom-loop page with Fragility Monitor + Doom Loop Engine",
      "rawSubject": "feat(doom-loop): add /doom-loop page with Fragility Monitor + Doom Loop Engine",
      "url": "/"
    },
    {
      "hash": "bcf7f245b97f6458252419f4e5f5e7913aa4c95e",
      "shortHash": "bcf7f24",
      "date": "2026-06-08T07:34:37.000Z",
      "category": "feature",
      "title": "Expose station-level fuel prices via public JSON API",
      "rawSubject": "feat(api): expose station-level fuel prices via public JSON API",
      "url": "/api"
    },
    {
      "hash": "bfffb75b59d8d5c9969b6359e411d349f15cdea4",
      "shortHash": "bfffb75",
      "date": "2026-06-04T09:23:03.000Z",
      "category": "feature",
      "title": "Prominent \"find the cheapest fuel near you\" box on UK homepage",
      "rawSubject": "feat(home): prominent \"find the cheapest fuel near you\" box on UK homepage",
      "url": "/"
    },
    {
      "hash": "a3e2d32a4747604f7c977912e4b4873279fba304",
      "shortHash": "a3e2d32",
      "date": "2026-06-04T09:14:55.000Z",
      "category": "feature",
      "title": "Automate UK fuel data via stable Fuel Finder CSV URL",
      "rawSubject": "feat(stations): automate UK fuel data via stable Fuel Finder CSV URL",
      "url": "/"
    },
    {
      "hash": "31cd9fccc92187613973c7e0f72021fefb177f35",
      "shortHash": "31cd9fc",
      "date": "2026-06-04T09:01:17.000Z",
      "category": "feature",
      "title": "UK station prices live — postcode-area data from Fuel Finder",
      "rawSubject": "feat(stations): UK station prices live — postcode-area data from Fuel Finder",
      "url": "/"
    },
    {
      "hash": "5842b2c25f34f89732d4620b9a9673a407d4b675",
      "shortHash": "5842b2c",
      "date": "2026-06-03T16:33:29.000Z",
      "category": "feature",
      "title": "UK station-level fuel prices core (Fuel Finder)",
      "rawSubject": "feat(stations): UK station-level fuel prices core (Fuel Finder)",
      "url": "/"
    },
    {
      "hash": "bbced47ca503fa2024181a91e8cc6284deb19096",
      "shortHash": "bbced47",
      "date": "2026-06-03T12:56:42.000Z",
      "category": "feature",
      "title": "Article JSON-LD on analysis pages + fix invalid Dataset schema",
      "rawSubject": "feat(seo): Article JSON-LD on analysis pages + fix invalid Dataset schema",
      "url": "/"
    },
    {
      "hash": "002565152087e313afe54ad0bd3a21538912d1d2",
      "shortHash": "0025651",
      "date": "2026-06-02T16:44:57.000Z",
      "category": "analysis",
      "title": "Publish \"The Machines That Hold the Grid Together\"",
      "rawSubject": "analysis: publish \"The Machines That Hold the Grid Together\"",
      "url": "/analysis"
    },
    {
      "hash": "7c27cf2ccb1bb527ac1e6e550f7e9e8ccf3a5ea3",
      "shortHash": "7c27cf2",
      "date": "2026-06-02T09:30:11.000Z",
      "category": "newsletter",
      "title": "2 June UKOilWatch weekly briefing",
      "rawSubject": "newsletter: 2 June UKOilWatch weekly briefing",
      "url": "/briefings"
    },
    {
      "hash": "d012856864c2b035d73741a07c3673ac1b183f1e",
      "shortHash": "d012856",
      "date": "2026-05-29T14:52:13.000Z",
      "category": "analysis",
      "title": "From Hormuz to Bundibugyo — second case for the Compound Cascade Framework",
      "rawSubject": "analysis: From Hormuz to Bundibugyo — second case for the Compound Cascade Framework",
      "url": "/analysis"
    },
    {
      "hash": "20362d3fce9b9d6130152c9d19e7c76cabf4b643",
      "shortHash": "20362d3",
      "date": "2026-05-29T11:11:16.000Z",
      "category": "feature",
      "title": "GA4 with Consent Mode v2 + cookie banner",
      "rawSubject": "feat(analytics): GA4 with Consent Mode v2 + cookie banner",
      "url": "/"
    },
    {
      "hash": "2f3b76a9a403aadce60ee90350b7304c75416ec7",
      "shortHash": "2f3b76a",
      "date": "2026-05-29T11:11:16.000Z",
      "category": "feature",
      "title": "Stripe foundation + /pro marketing page",
      "rawSubject": "feat(pro): Stripe foundation + /pro marketing page",
      "url": "/"
    },
    {
      "hash": "761d02b4bab38576b07fd80b8929c9baebe2dc19",
      "shortHash": "761d02b",
      "date": "2026-05-27T15:49:02.000Z",
      "category": "feature",
      "title": "Foundation — auth, Prisma, dashboard gate",
      "rawSubject": "feat(pro): foundation — auth, Prisma, dashboard gate",
      "url": "/"
    },
    {
      "hash": "d8956acabec962ca71f619a7beffddc843bb9bf4",
      "shortHash": "d8956ac",
      "date": "2026-05-27T09:07:12.000Z",
      "category": "feature",
      "title": "/fertilizer page — Hormuz-to-Hunger operational tracker",
      "rawSubject": "feat(fertilizer): /fertilizer page — Hormuz-to-Hunger operational tracker",
      "url": "/"
    },
    {
      "hash": "9cee0cad2400f1a5f65bf233a4d888bdbb289af3",
      "shortHash": "9cee0ca",
      "date": "2026-05-27T08:53:12.000Z",
      "category": "report",
      "title": "Ungate H2H + Fall of UK downloads + add voluntary newsletter CTA",
      "rawSubject": "chore(reports): ungate H2H + Fall of UK downloads + add voluntary newsletter CTA",
      "url": "/reports"
    },
    {
      "hash": "5f44a2512ee77176b646cacb553bcaf517406a72",
      "shortHash": "5f44a25",
      "date": "2026-05-26T09:45:08.000Z",
      "category": "newsletter",
      "title": "26 May UKOilWatch weekly briefing",
      "rawSubject": "newsletter: 26 May UKOilWatch weekly briefing",
      "url": "/briefings"
    },
    {
      "hash": "cd75648fc2fbad42e02cf8fcfb6fae50f26cde77",
      "shortHash": "cd75648",
      "date": "2026-05-24T15:11:05.000Z",
      "category": "feature",
      "title": "War-Risk Watch — editorial Lloyd's / JWC indicator panel",
      "rawSubject": "feat(supply): War-Risk Watch — editorial Lloyd's / JWC indicator panel",
      "url": "/supply"
    },
    {
      "hash": "4c11c5a2cc0f77a28ff001d71b41bad1e8071247",
      "shortHash": "4c11c5a",
      "date": "2026-05-24T07:49:10.000Z",
      "category": "analysis",
      "title": "Beyond the Strait — Why Iran's Next Target Set Matters More Than Hormuz",
      "rawSubject": "analysis: Beyond the Strait — Why Iran's Next Target Set Matters More Than Hormuz",
      "url": "/analysis"
    },
    {
      "hash": "d74ab852b7c5bb5833de4fef01992d35c951940a",
      "shortHash": "d74ab85",
      "date": "2026-05-19T07:54:29.000Z",
      "category": "newsletter",
      "title": "19 May UKOilWatch weekly briefing",
      "rawSubject": "newsletter: 19 May UKOilWatch weekly briefing",
      "url": "/briefings"
    },
    {
      "hash": "0eede81333f516ef961c90c9e44e34969b68be89",
      "shortHash": "0eede81",
      "date": "2026-05-18T12:45:03.000Z",
      "category": "analysis",
      "title": "The 2026 Oil Black Swan & the Four Doom Loops",
      "rawSubject": "analysis: The 2026 Oil Black Swan & the Four Doom Loops",
      "url": "/analysis"
    },
    {
      "hash": "e38571be554c322b6da60db06c426df4712e87c7",
      "shortHash": "e38571b",
      "date": "2026-05-15T07:34:00.000Z",
      "category": "feature",
      "title": "Physical NWE crude editorial estimate + bunker transparency",
      "rawSubject": "feat(home): physical NWE crude editorial estimate + bunker transparency",
      "url": "/"
    },
    {
      "hash": "23dfc1a451d848e2528eb994f9f30a8231933ba3",
      "shortHash": "23dfc1a",
      "date": "2026-05-13T21:22:49.000Z",
      "category": "feature",
      "title": "URL-driven chokepoint-map offset for calibration",
      "rawSubject": "feat(supply): URL-driven chokepoint-map offset for calibration",
      "url": "/supply"
    },
    {
      "hash": "47f6046b7ec5e1bd0dcac61b7fec2e931ceb4dd6",
      "shortHash": "47f6046",
      "date": "2026-05-13T16:58:47.000Z",
      "category": "feature",
      "title": "Chokepoints overview map (UK)",
      "rawSubject": "feat(supply): chokepoints overview map (UK)",
      "url": "/supply"
    },
    {
      "hash": "77ecd15f4f3bb7e7b353fc923ff3f7b35d51c4f1",
      "shortHash": "77ecd15",
      "date": "2026-05-13T15:04:49.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": "cb204e1b1e51370f59bafc60a9875f76dcb41d8f",
      "shortHash": "cb204e1",
      "date": "2026-05-13T10:14:47.000Z",
      "category": "feature",
      "title": "What Changed Today — network activity feed",
      "rawSubject": "feat(changelog): What Changed Today — network activity feed",
      "url": "/"
    },
    {
      "hash": "bc76724fd00ec82d67ca878518c281ad8c5cb861",
      "shortHash": "bc76724",
      "date": "2026-05-12T16:18:29.000Z",
      "category": "feature",
      "title": "Dynamic OG images for /, /jet, /prices",
      "rawSubject": "feat(og): dynamic OG images for /, /jet, /prices",
      "url": "/"
    },
    {
      "hash": "b8caabcd8c81f45a82e3c9174ebc34c56d4169e4",
      "shortHash": "b8caabc",
      "date": "2026-05-12T15:00:32.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": "daefe8a7926a61246b2adac4f2bfa54cacce1ac7",
      "shortHash": "daefe8a",
      "date": "2026-05-12T14:40:05.000Z",
      "category": "feature",
      "title": "UK Aviation Fuel page — jet vs diesel divergence",
      "rawSubject": "feat(jet): UK Aviation Fuel page — jet vs diesel divergence",
      "url": "/jet"
    },
    {
      "hash": "4ee54e64ead98e16c735eb324073d1dacba77ce3",
      "shortHash": "4ee54e6",
      "date": "2026-05-12T13:06:44.000Z",
      "category": "newsletter",
      "title": "12 May UK weekly briefing",
      "rawSubject": "newsletter: 12 May UK weekly briefing",
      "url": "/briefings"
    },
    {
      "hash": "ac4b90ec63bf17b96fbb807d0690f29ee8b6f9b0",
      "shortHash": "ac4b90e",
      "date": "2026-05-08T06:29:37.000Z",
      "category": "feature",
      "title": "Refinery Health Watch panel — surface FIRMS data",
      "rawSubject": "feat(homepage): Refinery Health Watch panel — surface FIRMS data",
      "url": "/"
    },
    {
      "hash": "87af7fd4caae23eec32c5e38b0b656aee732e0f4",
      "shortHash": "87af7fd",
      "date": "2026-05-07T12:19:24.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": "b9633b8341dc7b48cb8b16002d1088ef5fbf2adb",
      "shortHash": "b9633b8",
      "date": "2026-05-06T11:19:38.000Z",
      "category": "feature",
      "title": "Live sea-state panel for shipping chokepoints",
      "rawSubject": "feat(supply): live sea-state panel for shipping chokepoints",
      "url": "/supply"
    },
    {
      "hash": "530a779af7501373c315210faa61d302ba6d9376",
      "shortHash": "530a779",
      "date": "2026-05-06T09:50:12.000Z",
      "category": "feature",
      "title": "Add EIA Brent historical context (1987→today)",
      "rawSubject": "feat(prices): add EIA Brent historical context (1987→today)",
      "url": "/prices"
    },
    {
      "hash": "4d68c1b48a741d432e7ab5cb007f9253c6f9a4ef",
      "shortHash": "4d68c1b",
      "date": "2026-05-05T16:48:46.000Z",
      "category": "analysis",
      "title": "Iran blockade — Britain pays Europe's highest price",
      "rawSubject": "analysis: Iran blockade — Britain pays Europe's highest price",
      "url": "/analysis"
    },
    {
      "hash": "61cece7b6bb9199314b8ec4f966e3a26dad226e5",
      "shortHash": "61cece7",
      "date": "2026-05-05T12:38:04.000Z",
      "category": "newsletter",
      "title": "5 May weekly briefing",
      "rawSubject": "newsletter: 5 May weekly briefing",
      "url": "/briefings"
    }
  ],
  "siteBaseUrl": "https://ukoilwatch.com"
}