This is the maintainer's manual to-do list: 8 data tasks that cannot be finished automatically. For each, it names the official source, what value is needed (described, never invented), where to read it, what to copy back, and an example message you can paste once you have the number. Nothing here is a fabricated value — every item is honestly gated until a directly-readable official figure exists.
- 8 manual/blocked data tasks, each with a source, a location, and a next action.
- Priority: 1 now · 6 next · 1 later.
- No scraping, no automation, no paid APIs — values are added only when directly verifiable.
- Machine-readable at /operator/data.json.
Workload at a glance
Value is directly readable today and could be promoted immediately.
Source hasn't published the next period yet; the current value stands.
PDF/spreadsheet-only, inaccessible, or needs a maintainer policy decision.
Lowest-effort, highest-value next pull
CREA May 2026 Russian fossil-fuel export revenue — low effort, now priority. When the May 2026 page is published, read the headline figure and send it back; Claude promotes it.
Jump to it: CREA May 2026 Russian fossil-fuel export revenue · its source packet.
What I cannot finish without you
Grouped by lane and ordered lowest-effort first. Each card is one source-gated value. When you have a figure, send the example message (filled in) and the value gets promoted through /methodology/promote-data-need. Reusable templates: source packets.
Waiting for next release 3
CREA May 2026 Russian fossil-fuel export revenue now low effort low risktop pick
Status: Waiting for next source release · source refresh · sanctions
Next: When the May 2026 page is published, read the headline figure and send it back; Claude promotes it.
Source: CREA — Monthly analysis of Russian fossil fuel exports and sanctions — official source ↗
Full detail, caveats & paste-ready message
- Value needed: The headline Russian fossil-fuel export-revenue figure for May 2026 (EUR per day) and the month-on-month % change.
- Expected unit: EUR million/day · Period: Monthly — reporting month May 2026
- Where to look: CREA monthly-analysis page for May 2026 — the headline 'EUR X mn per day' line stated in the article text (not a chart).
- Why I cannot safely finish this alone: The May 2026 analysis is not published yet; CREA publishes ~6 weeks in arrears (April 2026 is current). There is no new value to read.
- What to copy back: The exact 'EUR X mn/day' headline, the m/m % change, the reporting month, and the page URL.
- Exact next human action: When the May 2026 page is published, read the headline figure and send it back; Claude promotes it.
- Safety caveat: Source-reported value, market/analysis estimate — not a causal attribution. No value until the page is live.
- Automatable later? No — Could be semi-automated only with an official machine-readable CREA feed; none exists, and scraping is out of scope.
Paste this to Claude when you have it:
Claude: CREA May 2026 is live. Headline = EUR <X> mn/day, <+/-Y>% m/m, reporting month May 2026, from <url>. Please promote obs-sanctions-export-revenue via /methodology/promote-data-need (source crea-russia-fossil-tracker).
Refresh path: refresh harness · source workflow · source packet · promotion log · data-needs · Surfaces it updates: /sanctions/russia-energy-trade/economic-impact, /data-coverage, /freshness, /data-needs
EU 21st sanctions package — shadow-fleet vessel count next low effort medium risk
Status: Waiting for next source release · source refresh · sanctions
Next: When the next EU package is adopted, read the cumulative vessel total from the press release and send it back.
Source: European Commission / Council of the EU sanctions-package press release — official source ↗
Full detail, caveats & paste-ready message
- Value needed: The cumulative count of EU-listed shadow-fleet vessels in the next sanctions package, plus +added / -delisted.
- Expected unit: Vessels (cumulative count) · Period: As of the next package's adoption date
- Where to look: EU sanctions-package press release — the 'a total of N vessels … now listed' sentence in the release text.
- Why I cannot safely finish this alone: No 21st package is published yet; the 20th package (632 vessels, 23 April 2026) is current and was re-verified.
- What to copy back: The cumulative vessel total, the +added/-delisted counts, the package number, the adoption date, and the URL.
- Exact next human action: When the next EU package is adopted, read the cumulative vessel total from the press release and send it back.
- Safety caveat: Cumulative enforcement indicator, not a measure of vessels actually halted. No value until the package exists.
- Automatable later? No — EU press releases are HTML; the figure is human-transcribable. No scraping / no jobs.
Paste this to Claude when you have it:
Claude: EU <Nth> package adopted <date>. Cumulative listed vessels = <N> (+<a>/-<b>), from <url>. Please update obs-shadow-eu-vessels and add the eu-council source.
Refresh path: refresh harness · source workflow · source packet · promotion log · data-needs · Surfaces it updates: /sanctions/shadow-fleet-shipping-insurance/economic-impact, /sanctions/dashboard, /data-needs
FAO Food Price Index — next release after May 2026 next low effort low risk
Status: Waiting for next source release · source refresh · commodities / food
Next: When the next FAO release publishes, copy the headline + sub-indices and send them back.
Source: FAO Food Price Index (monthly HTML release) — official source ↗
Full detail, caveats & paste-ready message
- Value needed: The next FAO Food Price Index headline and its five sub-indices (cereal, vegetable oil, dairy, meat, sugar).
- Expected unit: Index (2014–2016 = 100) · Period: Monthly — next release after May 2026
- Where to look: FAO Food Price Index page — the FFPI headline and the sub-index table, both stated in text.
- Why I cannot safely finish this alone: May 2026 is the latest published month; the next release is not out yet. The current values were re-verified and stand.
- What to copy back: FFPI value, each sub-index value, the month, and confirmation the basis is 2014–2016 = 100.
- Exact next human action: When the next FAO release publishes, copy the headline + sub-indices and send them back.
- Safety caveat: Index level associated with food-price conditions; associative, not causal. No value until released.
- Automatable later? No — FAO posts HTML monthly; a value is human-transcribable on release. No automated ingestion (no jobs).
Paste this to Claude when you have it:
Claude: FAO <month> is out. FFPI = <X>; cereal <a>, veg oil <b>, dairy <c>, meat <d>, sugar <e>; basis 2014–2016=100; from fao.org. Please update the FFPI + sub-index observations.
Refresh path: refresh harness · source workflow · source packet · promotion log · Surfaces it updates: /commodities/food-prices/economic-impact, /conflicts/russia-ukraine/economic-impact, /data-coverage
Manual extraction (PDF/XLSX) 2
Longer SIPRI / NATO defense-spending series next medium effort low risk
Status: Needs manual extraction (human transcription) · data coverage · defense
Next: Read the SIPRI fact-sheet PDF for the wanted country-years, confirm the basis, and send them back.
Source: SIPRI Military Expenditure Database / NATO defence-expenditure releases — official source ↗
Full detail, caveats & paste-ready message
- Value needed: Additional or longer-history country-year military-expenditure values, same basis as the existing series.
- Expected unit: USD billion (state current vs constant USD basis) · Period: Annual
- Where to look: SIPRI fact-sheet PDF tables (prior years / extra countries). The latest press-release subset was already applied (v1.187.0); the rest is PDF-only.
- Why I cannot safely finish this alone: Beyond the latest press-release subset, country-year values are in the SIPRI fact-sheet PDF; basis (current vs constant USD) must be matched exactly.
- What to copy back: Each country-year value, the explicit basis (current/constant USD), and the table/page reference.
- Exact next human action: Read the SIPRI fact-sheet PDF for the wanted country-years, confirm the basis, and send them back.
- Safety caveat: Only combine same-basis, same-source-family values into one metric. Do not infer figures from charts.
- Automatable later? Maybe — SIPRI's underlying database is downloadable; a same-basis tabular extract could be promoted in batches by hand.
Paste this to Claude when you have it:
Claude: SIPRI fact-sheet <year>, table <t>. <Country> <year> = <X> USD bn (<current|constant> USD). Please add as country-military-expenditure observations (same-basis).
Refresh path: refresh harness · source workflow · source packet · promotion log · data-needs · Surfaces it updates: /defense, /defense/comparison, /series, /data-needs
World Bank Pink Sheet — wheat / fertilizer / gas next medium effort medium risk
Status: Spreadsheet-only (XLSX cell read by hand) · data coverage · commodities
Next: Open the Pink Sheet XLSX, read the wheat/fertilizer/gas cells, and send the values + cell references back.
Source: World Bank 'Pink Sheet' (Commodity Markets monthly data) — official source ↗
Full detail, caveats & paste-ready message
- Value needed: Exact benchmark levels for wheat, fertilizer, and natural gas from the World Bank 'Pink Sheet'.
- Expected unit: USD/mt (wheat, fertilizer) · USD/mmbtu (gas) · Period: Monthly
- Where to look: Pink Sheet monthly XLSX/PDF — the specific sheet name, row, and cell for each commodity. The HTML page shows only index % changes, not levels.
- Why I cannot safely finish this alone: Exact USD levels are only in the downloadable XLSX/PDF (binary), not in readable HTML; parsing a binary file is out of scope.
- What to copy back: For each commodity: the sheet name, the cell, the displayed value, the unit, and the month.
- Exact next human action: Open the Pink Sheet XLSX, read the wheat/fertilizer/gas cells, and send the values + cell references back.
- Safety caveat: Nominal commodity benchmark, not a conflict-causal figure. Unit/basis must be explicit. No binary parsing.
- Automatable later? Maybe — The World Bank publishes a stable monthly XLSX; an official tabular feed would make this low-touch, but ingestion is out of scope today.
Paste this to Claude when you have it:
Claude: Pink Sheet <month>. Wheat = <X> USD/mt (sheet '<s>', cell <c>); fertilizer = <Y> USD/mt; gas = <Z> USD/mmbtu. Please add these as commodity benchmark observations.
Refresh path: refresh harness · source workflow · source packet · promotion log · data-needs · Surfaces it updates: /commodities/dashboard, /commodities/oil-benchmarks/economic-impact, /data-needs
Source inaccessible / 403 2
Suez / Red Sea official transit metric next medium effort medium risk
Status: Source inaccessible (403 / blocked) · source refresh · chokepoints
Next: Download the SCA navigation report PDF, read one transit metric, and send it back with its page/table reference.
Source: Suez Canal Authority navigation reports / UNCTAD maritime publications — official source ↗
Full detail, caveats & paste-ready message
- Value needed: One official Suez/Red Sea transit metric — transit count, net tonnage, OR revenue (one per observation).
- Expected unit: Transits (count) · net tonnage (million tonnes) · or revenue (USD) · Period: Monthly or annual
- Where to look: SCA navigation-report PDF table, or a UNCTAD publication that states a figure in text. UNCTAD's review page returns HTTP 403; SCA publishes PDF reports.
- Why I cannot safely finish this alone: UNCTAD's page returns 403; SCA statistics are downloadable PDFs; container freight indices are paywalled. No directly-readable newer figure was obtainable.
- What to copy back: The metric kind (transits/tonnage/revenue), the value, the unit, the period, and the PDF page/table reference.
- Exact next human action: Download the SCA navigation report PDF, read one transit metric, and send it back with its page/table reference.
- Safety caveat: Do not conflate transits, tonnage, and revenue — pick one per observation. Keep the existing dated Feb-2024 values labeled.
- Automatable later? Maybe — If UNCTAD/SCA expose an accessible HTML or data endpoint later, this becomes low-touch; today it is PDF/403-gated.
Paste this to Claude when you have it:
Claude: SCA report <title>, page <p>. Suez <transits|tonnage|revenue> = <X> <unit> for <period>. Please update obs-redsea-suez (one metric kind).
Refresh path: refresh harness · source workflow · source packet · promotion log · data-needs · Surfaces it updates: /chokepoints/red-sea-shipping/economic-impact, /chokepoints/dashboard, /data-needs
Black Sea grain export volumes next high effort medium risk
Status: Source inaccessible (403 / blocked) · data coverage · commodities / Ukraine
Next: Locate an official monthly corridor-tonnage series in readable form, then send one month's value back.
Source: UN / FAO / WTO or Ukraine official corridor statistics — official source ↗
Full detail, caveats & paste-ready message
- Value needed: An official monthly Ukraine grain-corridor export tonnage to promote the existing sample row to live.
- Expected unit: Million tonnes / month · Period: Monthly
- Where to look: unknown — source workflow needed. The UN Black Sea Grain Initiative ended in 2023; current corridor tonnage is in dashboards/PDFs, not a directly-stated accessible HTML figure.
- Why I cannot safely finish this alone: No cleanly-transcribable official monthly tonnage in accessible HTML; the BSGI ended in 2023. The sample row was not promoted (no fabrication).
- What to copy back: The official monthly tonnage, the unit (million tonnes), the month, and the official source URL.
- Exact next human action: Locate an official monthly corridor-tonnage series in readable form, then send one month's value back.
- Safety caveat: Must be an official/intergovernmental figure, not a news-derived estimate. Associative, not causal.
- Automatable later? Maybe — If an official monthly series with an accessible endpoint is identified, this could be low-touch later.
Paste this to Claude when you have it:
Claude: <UN/FAO/Ukraine source> <url> reports <X> million tonnes of corridor grain exports for <month>. Please promote obs-ukr-grain from sample to live.
Refresh path: refresh harness · source workflow · source packet · promotion log · data-needs · Surfaces it updates: /conflicts/russia-ukraine/economic-impact, /commodities/dashboard, /data-needs
Policy decision needed 1
OFAC cumulative shadow-fleet vessel count later high effort high risk
Status: Needs a maintainer policy decision · data coverage · sanctions
Next: Maintainer decision: accept an official cumulative statement, or define a reproducible manual-count rule. Until then, gate stands.
Source: OFAC SDN list / official Treasury action press releases — official source ↗
Full detail, caveats & paste-ready message
- Value needed: A cumulative count of OFAC-designated shadow-fleet vessels (only if officially stated or deterministically derivable).
- Expected unit: Vessels (cumulative count) · Period: As of the access / action date
- Where to look: unknown — source workflow needed. OFAC states per-action designations, not a cumulative total; the SDN list is a large binary file.
- Why I cannot safely finish this alone: OFAC publishes per-action designations, not a cumulative shadow-fleet total; deriving one needs parsing the binary SDN list (no scraping).
- What to copy back: Either an official Treasury statement that gives a cumulative figure, OR a documented, reproducible manual inclusion rule + count + list date.
- Exact next human action: Maintainer decision: accept an official cumulative statement, or define a reproducible manual-count rule. Until then, gate stands.
- Safety caveat: No scraping of the binary list. A derived count must be reproducible and recorded, or it is not promotable.
- Automatable later? No — Not safely automatable: no official cumulative total; deriving one from the binary list is out of scope.
Paste this to Claude when you have it:
Claude: Treasury release <url> states <N> shadow-fleet vessels cumulatively designated as of <date>. (Or: here is my documented manual count + rule.) Please assess whether this is promotable.
Refresh path: refresh harness · source workflow · source packet · promotion log · data-needs · Surfaces it updates: /sanctions/shadow-fleet-shipping-insurance/economic-impact, /data-needs
Unfinished work, by area
A classified view of the real backlog signals in the repository — operational transparency, no secrets. Items marked “shipped this pass” were completed in the onboarding/dashboards update.
source refresh
Source-gated values waiting on the next official release or on a human read of a PDF/spreadsheet. None are fabricated; each has a documented gate.
- CREA next monthly Russia fossil-fuel export revenue (waiting on the May 2026 page).
- FAO Food Price Index next release (waiting on the next monthly post).
- EU next sanctions-package vessel count (waiting on the 21st package).
- Suez / Red Sea official transit metric (UNCTAD 403, SCA PDF-only).
Where it lives: /data-needs · /methodology/refresh-harness · /methodology/promotion-log
data coverage
Sample rows that could become live once a directly-readable official figure exists; and topics not yet covered.
- World Bank Pink Sheet wheat/fertilizer/gas levels (XLSX/PDF-only).
- Black Sea grain corridor tonnage (dashboard/PDF-only since the BSGI ended in 2023).
- OFAC cumulative shadow-fleet vessel count (no official cumulative total).
- Longer SIPRI/NATO defense series (fact-sheet PDF tables).
Where it lives: /data-needs · /data-coverage · /operator
public UX
Make the site legible to first-time visitors: clearer homepage, onboarding, and plain-English summaries on major pages.
- Homepage hero + 'what you can / cannot use this for' (shipped this pass).
- A start-here guide for each audience (shipped: /how-to-use).
- Visual summary cards on the biggest topic pages.
Where it lives: /how-to-use · / · /topics
visualization
Static, no-API visual components that show source/asOf/reviewed/caveat beside every figure — never implying live data.
- Metric cards, comparison bars, status cards, and a chokepoint schematic (shipped this pass).
- Extend visual summaries to more dashboards as data allows.
Where it lives: /chokepoints/strait-of-hormuz/economic-impact · /dashboards
SEO / indexing
Indexing readiness without runtime services: canonical domain, sitemap coverage, crawler guidance, and a manual submission checklist.
- Indexing guide + manual GSC/Bing checklist (shipped: /methodology/indexing).
- Confirm robots.txt, sitemap.xml, and canonical https://warconomy.com.
Where it lives: /methodology/indexing · /robots.txt · /sitemap.xml · /llms.txt
deployment / runbook
Operational runbooks so a green build that isn't live is diagnosed before any code change.
- App Hosting rollout recovery runbook (ABIU / Create rollout).
- Tiered local validation (no hosted CI).
Where it lives: /methodology/indexing
technical debt
Internal follow-ups that do not affect public output: precompute provenance history into the manifest, keep the body-free common path.
- Precompute record/provenance history into the version manifest (PERF follow-up).
- Keep frozen-payload bodies out of common test/catalog paths.
Where it lives: /performance/build-cost · /performance
future monetization
Deferred product directions kept out of scope under the static, no-automation rules until deliberately chosen.
- Hosted/data-product offerings remain backlog-only (no auth, no DB, no paid APIs).
Where it lives: /about
Future investigations (not data values)
Research tasks that would need a maintainer decision before any work — not source-gated values, and never a number. Kept separate from the numeric workbench above so nothing here is mistaken for data.
Evaluate live AIS / maritime data integration future investigation medium priority
Assess whether Warconomy could add a delayed maritime-monitoring layer (vessel density, tanker/LNG transit counts, or official transit/revenue indicators) for the Strait of Hormuz and the Red Sea — or whether clearly-labeled external links are sufficient.
- Why not now: No source/provider has been evaluated against the criteria, and the project rules forbid scraping, paid APIs, runtime services, and scheduled jobs. Live AIS can also be spoofed or switched off by the shadow-fleet vessels of interest, so a derived figure would need heavy caveats. This needs a maintainer decision, not an automatic build.
- Exact next human action: Decide the approach: (a) links-only to authoritative external maps/statistics (the safe default), or (b) evaluate a specific provider against the criteria checklist and record the terms. No ingestion until a provider's terms, cost, reuse rights, and caching policy are confirmed and approved.
- No implementation until: A specific source/API/legal decision is made and recorded. No live tracking is implemented under the current rules.
See: Maritime data evaluation · Live-data architecture · Chokepoints dashboard · Strait of Hormuz
Evaluate market / freight / oil indicator sources future investigation low priority
Assess whether dated, source-reported market indicators (official oil/gas benchmark levels, freight or war-risk insurance indicators, canal transit/revenue figures) could be added as static, re-verifiable values.
- Why not now: Many such figures are paywalled, licensed, or only in downloadable spreadsheets/PDFs (binary), and none may be scraped or transcribed from a paid feed. Several official levels exist but are not in directly-readable HTML. This needs a source-by-source accessibility and reuse-rights review, not an automatic build.
- Exact next human action: For a specific indicator, confirm an official, accessible, reusable source that states a dated value in readable form; then it can follow the normal source-packet → promotion workflow. Decline or mark links-only otherwise.
- No implementation until: An accessible, reusable official source is identified and approved per indicator. No scraping, no paid APIs, no binary parsing.
See: Live-data architecture · Operator workbench · Commodities dashboard
Evaluate future product directions (alerts, briefings, data packages) future investigation low priority
Keep deferred product ideas — change alerts, periodic briefings, premium dashboards, downloadable data packages, custom watchlists — on the record as backlog only, so they are considered deliberately rather than drifting in.
- Why not now: All of these would need infrastructure the current rules exclude by default (auth, payments, runtime services, scheduled jobs, or databases) and a deliberate decision to monetize. None is justified or scoped yet, and shipping any would change the static, no-account trust model.
- Exact next human action: A maintainer decision is required before any of this is scoped or built. Until then it stays backlog-only with no implementation, no auth, and no payments.
- No implementation until: The maintainer deliberately chooses to pursue a specific direction and accepts the architecture/cost change. No sales claims are made in the meantime.
See: About · Static endpoints (current 'data product') · Updates
How this stays honest
- No value is stored on this page — only a description of the value needed.
- Every item carries the documented reason it could not be promoted automatically.
- Promotion always follows /methodology/promote-data-need and is recorded in the promotion log.
- No scraping, no scheduled jobs, no runtime services, no paid APIs.
Machine-readable: /operator/data.json.
More operator surfaces: the repo-grounded backlog (what Claude can do alone vs. what needs you) · automation readiness (safe ways to cut manual work) · source watch (detect-only: what may have a new release) · staleness triage (what to re-check first) · production health (404 classification, deployment status) · QA checklist + route matrix (mobile, a11y, deploy, promotion) · launch & messaging kit · source packets.
Start here: morning report
One aggregated, read-only snapshot — production health, source watch, staleness, indexing readiness, the best next data pull, and the best next autonomous task. See /operator/report (or run npm run operator:morning).
Run these checks (local, safe)
One-command operator checks — fast, offline, and side-effect free. They detect, validate, and report; they never promote a value.
npm run operator:check— packet validation, operator/route/sitemap integrity, no-overclaim and mobile-overflow guards.npm run operator:check:sources— optional, network: detect-only reachability of official source pages (reads no values).npm run verify:prod— optional, network: post-deploy check of public routes + the mobile-overflow CSS marker.npm run qa:visual— optional, network: no-browser visual QA (status, main landmark, skip link, CSS markers, overflow heuristic). Pixel screenshots are manual; see QA checklist.
What Claude can do without you: run these checks, validate a pasted source packet, generate a promotion dry-run, and keep the audits/backlog/source-watch/staleness current. What still needs you: supply an exact source value (via a source packet), and the one-time Search Console / Bing setup (indexing checklist).