supply-chain) is the main entry point for everything supply-chain related: a composite shipping-stress score, carrier and ETF rows with price movement, a minerals concentration view, and — most importantly — the Scenario Engine trigger buttons that let PRO users activate pre-built disruption scenarios across the map and the panel state.
What the panel shows
Across the composite:- Shipping-stress header — a composite-stress score (0–100) with a tinted gauge, colour-bucketed by level (
critical/elevated/moderate/normal). - Carrier / ETF / index rows — per-symbol price, per-cent change (
▲/▼arrow with bullish/bearish tint), a compact sparkline, and a type badge (ETF/IDX/CARR). - Critical minerals rows — per-mineral top-3 producer concentration, HHI, and risk rating (
critical/high/moderate/low). - Scenario Engine trigger cards — per-scenario trigger buttons (
sc-scenario-trigger/sc-scenario-btn) that dispatch a template id to the scenario worker. Free users see the buttons but hit the PRO gate at activation. Scope-all scenario runs use the bounded country/sector manifest in existing seed metadata. See Scenario Engine for the full workflow. - Active-scenario banner (when a scenario is running) — icon, scenario name, optional params chip (duration + cost bump), top impacted countries, dismiss ×. When template parameters are populated, an additional “Simulating …” tagline renders. Banner construction lives in
renderScenarioBanner()insrc/components/SupplyChainPanel.ts.
supply-chain; canonical component is src/components/SupplyChainPanel.ts. Title per variant: “Supply Chain” (full/finance) or “Supply Chain & Logistics” (commodity).
How you reach it
- Cmd+K: type supply chain, shipping, or logistics.
- Availability by variant: registered and enabled by default in the full/geopolitical (priority 1), finance (priority 1), and commodity (priority 1) variants. Not present in the tech or happy variants. Source:
'supply-chain'entries inFULL_PANELS,FINANCE_PANELS,COMMODITY_PANELS. On desktop the full-variant registration additionally layerspremium: 'enhanced'(_desktop &&clause insrc/config/panels.ts).
Data sources
The panel and adjacent supply-chain workflows mix generated sebuf REST RPCs, bootstrap/shared-store first paint, and special platform routes. The main Supply Chain panel reads cached bootstrap payloads for composite stress, chokepoints, shipping rates, and minerals when available, then refreshes through the generatedSupplyChainService RPCs.
Special platform routes used from this surface:
See Scenarios API for the full async job contract.
Refresh cadence
Panel reads on mount and on user-triggered refresh. Scenario Engine jobs are async; the panel polls the job status endpoint and paints the banner once the worker writesstatus: "done".
Tier & gating
The Supply Chain panel itself is free on web (full / finance / commodity variants). On desktop, the full-variant registration layerspremium: 'enhanced'. The Scenario Engine activation is PRO regardless of web vs desktop — free users see the trigger buttons but hit the scenario-engine gate on activation.
Related
- Scenario Engine — the activation workflow + template catalogue.
- Route Explorer — per-lane chokepoint + bypass analysis.
- Supply Chain service — the backing RPC family.
- Scenarios API — async job contract for scenario runs.
- Hormuz Trade Tracker — chokepoint-specific drill-down.
Scenario coverage and export
A missing, old or invalid seed manifest produces unknown coverage. The worker does not fall back to a guessed country list or scan Redis. It reads exposure keys in bounded batches (seeEXPOSURE_BATCH_SIZE in scripts/scenario-worker.mjs). A complete result means complete within the bounded seed scope, not global trade coverage.
coverage.records identifies each requested country and HS2 chapter as evaluated, missing, malformed, or not_seeded. Evaluated records retain flow_weighted or country_route_fallback basis and raw impact, including valid zero. Partial totals exclude unavailable records and must not be read as low exposure. Flow-weighted scores use recorded trade shares with modeled routes; fallback scores use geographic routes. Cache production dates are not trade observation dates; an unknown observation date remains unknown.
The panel allows country selection and physical closure severity (0–100%). Duration remains descriptive metadata. Download scenario JSON preserves the captured inputs, raw score units, coverage records and dates. Raw impact is not currency or lost trade. Relative impactPct rankings need not double when severity doubles because the denominator also changes.