Companion to
docs/SCENARIO_LIFECYCLE_SOP.md. The SOP is the lifecycle for any scenario; this spec is the framework for one specific coverage axis: the developments that re‑shape our species. Read the SOP for the pipeline and gates; read this before commissioning a frontier lane.Last updated: 2026‑06‑28 · Owner: Vikas · Status: LIVE / authoritative.
Most macro scenarios are about crises and cycles — a rate shock, a war, a bank run, a drought. But the biggest moves in human welfare (and in markets, over a decade) come from the frontier of what our species can do: a drug that turns cancer into a managed condition, a model that automates cognitive work, a reactor that makes power nearly free — and the shadow side of each, the engineered pathogen, the AI‑capex bust, the orbital‑debris cascade.
The product's job is to let a person peek into that future, manage the emotion it provokes, and decide better. That requires covering the frontier honestly — which means the founding rule of this axis:
⛔ The good/bad rule
Every frontier force gets both a good scenario (the breakthrough, RISK‑ON) and its probable‑negative tail (the bust or shock, RISK‑OFF). Never the hope without the tail; never the fear without the hope. A one‑sided frontier theme is incomplete and must not ship.
This is invariant #4 in the SOP. It is what separates a foresight product from either techno‑utopian hype or doom‑scrolling.
We track seven streams of human development. Every frontier scenario belongs to at least one:
| # | Domain | What we watch | Example good / bad pair |
|---|---|---|---|
| 1 | Medicine | trials, approvals, therapies | cancer vaccine works / antibiotic resistance outpaces R&D |
| 2 | AI | capability, compute, agents | AGI‑level model arrives / AI‑capex bubble bursts |
| 3 | Technology | robotics, compute, cyber | humanoid robots reach the factory / AI‑run attack hits critical infra |
| 4 | Science journals | Nature/Science results | AI compounds scientific discovery / frontier capability plateaus |
| 5 | Patents & discoveries | materials, energy, physics | room‑temp superconductor / LK‑99‑style refutation |
| 6 | Biology | genomics, longevity, biosecurity | longevity drug adds a decade / engineered pathogen escapes a lab |
| 7 | Nature | ecosystems, climate frontier | coordinated rewilding succeeds / pollinator collapse hits crops |
These map onto the existing scenario categories (ai_compute, health_biotech, power_energy,
climate_frontier, automation_labor, tech_cyber, metals_mining, agri_food_water, society_politics) — no
new category is needed; the root factors below are what make a scenario "frontier".
The engine routes a scenario by its roots — {factor: signed_weight}. The frontier factors are bidirectional:
a positive weight is the good/abundance direction (RISK‑ON), a negative weight is the deflation/disappointment
direction. The bad‑event scenarios use the explicit risk factors (biosecurity_risk, biodiversity_loss) or a
negative weight on a good factor (e.g. clean_energy: -0.4 = "fusion stays 20 years away").
| Factor | Good direction routes to … | Wired in |
|---|---|---|
ai_breakthrough |
NVDA, NDX, SMH ↑, robot_productivity, risk_appetite ↑ | propagation.py |
scientific_breakthrough |
risk_appetite, growth_surprise, NDX ↑ | propagation.py |
biotech_breakthrough |
SPX, risk_appetite ↑, labor_surplus, consumer_discretionary | propagation.py |
longevity |
labor_surplus, growth_surprise, consumer_discretionary | propagation.py |
clean_energy |
CL ↓, BRENT ↓, XLE/XOM ↓, NDX ↑, inflation_expectations ↓ | propagation.py |
space_economy |
LMT, NOC, RTX, NDX ↑ | propagation.py |
neuro_interface |
NDX, robot_productivity, risk_appetite ↑ | propagation.py |
biosecurity_risk |
risk_appetite ↓, VIX ↑, XAU ↑, recession_signal ↑ | propagation.py |
biodiversity_loss |
food_inflation ↑, WHEAT, CORN ↑, climate_supply ↑ | propagation.py |
Adding a new frontier factor — touch all four:
1. macroguru/cascade/propagation.py — add _E(factor, asset/factor, coef, reason) edges (the cascade routing).
2. bin/build_scenarios.py — add a human label to FACTOR_LABELS.
3. bin/merge_ccar_scenarios.py — add the factor to FRONTIER_FACTORS (so the merge validator accepts it).
4. bin/build_history.py — add a branch in root_tags() so scenarios using it match the right analogues.
Skip any one of the four and the factor silently fails: unlabelled in the UI, rejected at merge, or zero‑evidence (
noindex). The four‑file rule is non‑negotiable.
Frontier scenarios are authored as JSON lane files in data/gen/, then merged by bin/merge_ccar_scenarios.py
(same machinery as the CCAR expansion). The three founding frontier lanes:
| Lane file | Theme | Count |
|---|---|---|
data/gen/Lf01_ai_compute.json |
AI, compute, automation, cyber | 18 |
data/gen/Lf02_biomed_longevity.json |
medicine, longevity, biosecurity, neuro | 16 |
data/gen/Lf03_energy_space_nature.json |
fusion/solar, space, biodiversity, food | 17 |
Each lane is authored good‑and‑bad as a set — when you write "Commercial fusion delivers power" you also write "Fusion stays 20 years away"; when you write "Universal cancer vaccine works" you also write "Antibiotic resistance outpaces R&D". A lane that is all‑upside or all‑downside fails the good/bad rule at review.
Each record:
{"category":"ai_compute","probability":0.35,"timeline":"1–3 years",
"title":"AGI-level model arrives",
"scenario":"A frontier lab ships a model that matches expert humans across most economically valuable cognitive work…",
"countries":["United States"],
"roots":{"ai_breakthrough":0.9,"ai_capex":0.7,"robot_productivity":0.5,"risk_appetite":0.4}}
Timelines must be one of 0–6 months / 6–18 months / 1–3 years / 3–10 years (en‑dash). Probabilities are
base‑rate‑anchored priors in [0.01, 0.95]. The merge dedups by normalised title and assigns fresh ids.
Frontier scenarios are measured, not asserted — they match real e4-frontier-* events in
config/historical_events.yaml. The seeded analogue library (with verified source URLs):
| Theme | Analogues |
|---|---|
| AI | AlphaGo (2016), AlphaFold (2020), ChatGPT (2022), GPT‑4 (2023), Nvidia $1T / AI‑capex wave (2023) |
| Medicine | mRNA vaccine (2020), Wegovy/GLP‑1 (2021), Casgevy CRISPR (2023), Human Genome (2003), pig‑heart xeno (2022), mRNA Nobel (2023) |
| Biosecurity | He Jiankui CRISPR‑baby (2018) |
| Energy/Physics | NIF fusion ignition (2022), LK‑99 (2023), Higgs (2012), LIGO (2016) |
| Space | SpaceX booster landing (2015), JWST (2022) |
| Nature | IPBES biodiversity assessment (2019) |
| Neuro | Neuralink first human implant (2024) |
bin/build_history.py root_tags() maps frontier factors → tags (tech_ai_bull, science, biotech,
energy_transition, space, pandemic, biosecurity, climate, …) so build_history.py finds these analogues.
The deviation thesis is a feature. A genuinely novel scenario (commercial fusion has never happened) will show
agree=False against its imperfect analogue — the cascade is theory‑driven where history is silent. The product
surfaces that gap honestly rather than hiding it. Do not "fix" an honest disagreement by faking an analogue.
Static scenarios cover the space; the live feed keeps watch so a new development is detected and routed. The full chain, all wired:
science_news.latest_claims() macroguru/data/science_news.py
│ Nature · Science · arXiv(cs.AI,q-bio) · MIT Tech Review · MIT News · FDA
▼
corroboration.classify_topic(text) macroguru/data/corroboration.py (TOPIC_KEYWORDS)
│ → a frontier topic (ai_breakthrough, biotech_breakthrough, biosecurity_alarm, …)
▼
alert bus: corroborate across CLASSES macroguru/data/alerts.py (run_alert_cycle)
│ SCIENCE_JOURNAL + WIRE_NEWS = 2 independent classes → ALLOW; a lone source → WATCH
▼
alerts.TOPIC_TO_EVENT[topic] → a frontier ontology event id
▼
to_detected_events() → cascade config/event_ontology.yaml (the impact magnitudes)
▼
live monitor / paper trades
Source independence classes (in corroboration.SourceClass) — two sources in the same class don't count as
independent corroboration:
- SCIENCE_JOURNAL — Nature, Science, arXiv (peer‑reviewed / preprint primary research)
- SCIENCE_MEDIA — MIT Tech Review, MIT News (editorial science/tech desks)
- REGULATORY_APPROVAL — FDA (official health‑tech fact)
SCIENCE_JOURNAL and REGULATORY_APPROVAL are in alerts._OFFICIAL_CLASSES: a lone Nature paper or FDA approval
can lift a blocked topic to WATCH (reduced size) on its own — like a BLS print on the macro tape — but it takes a
second independent class (e.g. a Reuters write‑up) to reach ALLOW (full size).
Feeds (verified live 2026‑06‑28; arXiv is empty on weekends/holidays by design → degrades to zero claims, never
an error). Registered in science_news.FEEDS and polled every 15 min via scheduler/tasks.py::_tick_alerts;
listed in alerts.DEFAULT_SOURCES.
In config/event_ontology.yaml, magnitudes are event‑window medians seeded from the analogues above; tails run
2–4× larger. Recompile after editing (compile_ontology() in bin/refresh_site.py → event_ontology_compiled.json).
| Topic | Ontology event | Direction | Anchor analogue |
|---|---|---|---|
ai_breakthrough |
ai_capability_breakthrough |
RISK‑ON (NVDA/SMH/NDX ↑, VIX ↓) | ChatGPT, Nvidia blowout |
ai_capex_bust |
ai_capex_bust |
RISK‑OFF (NVDA/SMH ↓, VIX ↑) | dot‑com capex unwind |
biotech_breakthrough |
biomedical_breakthrough |
mild RISK‑ON (slow‑diffusing) | Wegovy, Casgevy |
biosecurity_alarm |
biosecurity_shock |
RISK‑OFF (VIX ↑↑, XAU ↑, SPX/airlines/crude ↓) | COVID Feb–Mar 2020 |
clean_energy_breakthrough |
clean_energy_abundance |
oil‑bearish / NDX‑bullish (CL/BRENT/XLE ↓) | NIF fusion, solar LCOE |
space_milestone |
space_economy_milestone |
space/defense bid (LMT/NOC/RTX ↑) | first booster landing |
science_discovery |
scientific_discovery |
broad RISK‑ON, low conviction | LK‑99 spike, Higgs |
On top of the SOP's universal gates:
\bagi\b not agi
(which matches "magic", "agitation", "imagine"). After any TOPIC_KEYWORDS change, run the
false‑positive guard (poetry/agitation/animal‑testing headlines must classify to None). The 2‑class
corroboration gate is the second line of defence; the ontology magnitudes (low confidence on slow‑diffusing
themes) are the third.merge/build validators enforce this for roots; the ontology has no validator, so check by hand — the
off‑universe guard in the build smoke test catches it).confidence_floor (0.40) — they surface as
context/WATCH and rarely drive size. The biosecurity tail (COVID‑calibrated) is the deliberate exception.From the live build (ids 5142–5191):
AGI-level model arrives (5142, good). Roots {ai_breakthrough:0.9, ai_capex:0.7, robot_productivity:0.5,
risk_appetite:0.4} → compiled RISK‑ON: NVDA +1, SMH +1, VIX −1 (abnormal −3.42, vol crushed). Matched 12
frontier analogues (ChatGPT, GPT‑4, AlphaFold, Nvidia blowout …).Engineered pathogen escapes a lab (5170, bad). Roots {biosecurity_risk:0.9, pandemic:0.8,
risk_appetite:-0.6, VIX:0.6} → compiled RISK‑OFF: VIX +1 (abnormal +22.58, the COVID analogue), XAU +1,
SPX −1, HYG −1. The textbook flight‑to‑quality.Commercial fusion delivers power (5176, good‑but‑oil‑bearish). Roots {clean_energy:0.9,
scientific_breakthrough:0.6, inflation_expectations:-0.4, risk_appetite:0.4} → CL/BRENT/XLE/XOM all −1 (the
clean_energy → CL(-2.0)/BRENT(-2.2) inverse routing), NDX +1. agree=False vs analogues is correct — there is
no historical commercial‑fusion event; the cascade is theory‑driven and labelled so.When adding a frontier theme:
- [ ] Author the good AND bad scenario(s) in a data/gen/Lf*.json lane.
- [ ] Roots use the signed frontier factors (§3); a new factor touches all four files.
- [ ] Confirm matchable analogues exist in historical_events.yaml (seed e4-frontier-* if not).
- [ ] If it should be live‑detectable: add TOPIC_KEYWORDS (word‑boundaried) → TOPIC_TO_EVENT → an
ontology event → recompile. Add the source to science_news.FEEDS + DEFAULT_SOURCES if it's a new wire.
- [ ] Run: merge_ccar_scenarios.py → build_scenarios.py → build_history.py → build_seo_pages.py.
- [ ] Verify: classifier false‑positive guard, pytest, stats.json (all indexable, events compiled),
good/bad pairs both present.
- [ ] Commit (selective add — exclude periodic‑refresh churn) → push → verify on prod by SHA.
The frontier is where hope and fear are largest. Cover both, measure both, and help someone meet either one calmly.