Apocalypse LoadingThe end is near. Terms and conditions apply.

METHODOLOGY 1.1

The math behind the questionable judgment.

Reproducible arithmetic. Editorial assumptions. No divine peer review.

The Apocalypse Meter currently reads 64%, from an unrounded 64.424508. Every number on this page is generated from edition edition-2026-11-01-r2 and the same engine the site uses. The code is the source of truth, so where it differs from the original brief, this page follows the code and says so.

Notation and categories

SymbolMeaningDomain and units
i,di, dComponent. d is used when an event acts on it.One of eight ids
jjIndicator within a component. The current model uses one per component, so j is omitted below.Not used
ttEdition.Immutable snapshot
xi,tx_{i,t}Raw observation.Component units
fif_iScoring transformation.Maps inputs to [0, 100]
si,ts_{i,t}Component score.[0, 100], editorial points
wiw_iConfigured weight, as a fraction.[0, 1], sums to 1
mi,tm_{i,t}Eligibility indicator.0 or 1
CtC_tWeighted coverage.[0, 1]
w~i,t\tilde w_{i,t}Effective weight.[0, 1]
PtP_tUnrounded aggregate score.[0, 100]
R(P)R(P)Display rounding rule.Integers 0 to 100
eeSimulation event.One of 16 catalog ids
aea_eEvent intensity.[0, 1]
be,db_{e,d}Impact of event e on component d.Score points, not percentage points

Five kinds of number

  • Raw factual measurements come from named sources, in their original units.
  • Editorial transformations are our anchors, rubrics and reference periods. They turn facts into game scores.
  • Fictional catalog points are invented and describe nothing real.
  • The aggregate percentage combines the above, and only exists inside this game.
  • User-created scenarios are game inputs, kept in your browser and your link.

The model

For each component, a transformation produces a score. A headline is then a weighted mean of the scores that are eligible.

si,t=fi(xi,t),Pt=∑iw~i,t si,t,displayed=R(Pt)s_{i,t}=f_i(x_{i,t}),\qquad P_t=\sum_i \tilde w_{i,t}\,s_{i,t},\qquad \text{displayed}=R(P_t)

Reproducibility and validity are different things. Anyone can reproduce this number exactly, and that says nothing about whether it measures anything. The aggregate is a satirical editorial construction, not an extinction probability. A satirical score, not a scientific prediction. Real sources. Questionable species.

Display rounding

The engine rounds to nine decimals to remove floating-point noise, then rounds half up.

R(P)=⌊round⁡9(P)+12⌋R(P)=\left\lfloor \operatorname{round}_9(P)+\tfrac12 \right\rfloor

Applying this, 64.424508 displays as 64. The status text comes from the displayed integer.

DisplayedStatus
0 to 9Suspiciously fine.
10 to 19Mostly harmless. Allegedly.
20 to 29God has muted the group chat.
30 to 39The red flags have formed a committee.
40 to 49This is why we can’t have nice civilizations.
50 to 59Halfway to hell. Still on hold.
60 to 69Thoughts and prayers have been escalated.
70 to 79The horsemen are comparing calendars.
80 to 89The horsemen are in the Uber.
90 to 94The trumpets are warming up.
95 to 99The trumpets have entered the chat.
100That’s all, folks.

The eight components

Two sections are open by default, and the rest expand.

Nuclear: Adults With Access to the Button

Editorial rubric

Definition
An ordinal editorial level describing the most serious nuclear condition with applicable evidence.
Interpretation
A position on our rubric. It is not a probability of nuclear use.
Inputs and units
Dated evidence records, each assigned one rubric level. Warhead counts are shown as facts and are not used in the score.
Coverage
Global by construction: any qualifying event counts. No denominator.
Direction
Higher means a more serious rubric condition.
Missing data
With no applicable evidence the component is unavailable. It never defaults to level 20.
LevelCondition
20Nuclear arsenals exist, with none of the higher conditions established in the reviewed evidence.
40Documented arsenal expansion or modernization.
60A relevant arms-control instrument is suspended, abandoned, or expired without a replacement.
80An explicit threat of nuclear use or an operational alert change is reliably documented.
100Confirmed use of a nuclear weapon in conflict.
Transformation
Maximum level among applicable evidence records. On equal levels the first record stays as the trigger.
Evidence window
Transient records apply for 90 days inclusive from the event date. Structural records apply until their review date, or indefinitely if it is empty. Future-dated records never apply.
Clock
All checks use the edition date, 2026-11-01, not the visitor’s date.
s=max⁡{ℓk:k∈At},At=applicable evidence at edition ts=\max\{\ell_k : k\in A_t\},\quad A_t=\text{applicable evidence at edition } t
LevelTypeKindEvent dateReview byAppliesRecord
20Structural conditionstructural2026-01-012027-06-30YesNine states hold nuclear weapons. SIPRI estimates 12,187 warheads in January 2026, about 9,745 of them in military stockpiles. SIPRI Yearbook 2026
40Structural conditionstructural2026-06-082027-06-30YesSIPRI reports that all nine nuclear-armed states continued to modernize and enhance their arsenals in 2025, and most deployed new nuclear-armed or nuclear-capable systems. SIPRI Yearbook 2026
60Treaty statusstructural2026-02-052027-02-05YesNew START, the last treaty limiting US and Russian strategic forces, expired on 5 February 2026 with no successor. SIPRI Yearbook 2026, chapter 8
80Political statementtransient2026-09-30n/aYesAP reported a written Russian warning to NATO over Kaliningrad, and quoted the Russian Embassy in Ireland saying Russia “would be ready to use all its arsenal, including nuclear weapons.” NATO confirmed receiving a written message on 30 September. Putin later spoke of “all weapons” without specifying nuclear ones. The report describes no alert change, and this is scored as a political statement, not an operational change. Associated Press, via NBC News

Worked example. Applicable levels are 20, 40, 60, 80, so s = 80. The deciding condition: An explicit threat of nuclear use is reliably documented.

Limitations

  • Levels are ordered, but the distance between them has no measured meaning.
  • A political statement and an operational change sit at the same level, which is why the record keeps the event type.
  • One event can move the score by 20 points, then age out 90 days later when an edition is built.
Climate: Earth Has Opened a Support Ticket

Data-based proxy

Definition
Ten-year mean global surface temperature above 1850 to 1900, on a linear editorial scale.
Interpretation
How much of our chosen 0 to 2 °C scale has been used. Reaching 100 would mean our scale ran out, not that anything specific happens.
Inputs and units
Daily ERA5 anomalies against 1991 to 2020, averaged by calendar year, plus a constant 0.88 °C offset, then averaged over ten complete years.
Coverage
Global reanalysis. The temperature is an area-based global mean, so no population denominator applies.
Direction
Higher temperature means a higher score.
Missing data
A calendar year needs at least 365 daily values to count, and a missing year stops the build. The component is unavailable after its valid-until date.
Source and period
Copernicus C3S ERA5, Climate Pulse, 2016 to 2025. Daily ano_91-20 averaged by calendar year, plus 0.88 °C.
Transformation
Linear, clipped to the score range.
Parameters
L = 0, U = 2. Editorial anchors: 0 °C is the preindustrial baseline and 2 °C is the upper policy reference in the Paris Agreement. A ten-year mean is used because a single hot year is not long-term warming. 2 °C is not the point where the world ends; it is where this game’s scale runs out.
Eligibility
Edition date on or before 2027-06-30.
Saturation
0 at or below L, 100 at or above U. The current value is not clipped.
s=min⁡(100,max⁡(0,100 (x−L)U−L))s=\min\left(100,\max\left(0,\frac{100\,(x-L)}{U-L}\right)\right)

Worked example.

s=100 (1.3167−0)2−0=65.8346s=\frac{100\,(1.3167-0)}{2-0}=65.8346

The edition stores 86 points of “Global temperature above 1850 to 1900” from 1940 to 2025.

Limitations

  • It covers temperature only, not ice, sea level, ecosystems or extremes.
  • A reanalysis is a model-assimilated product, not a direct measurement.
  • Anchors are editorial, and moving the upper anchor changes the score directly.
Conflicts: Diplomacy Is Under Maintenance

Data-based proxy

Definition
Percentile of the world rate of organized violence deaths within a frozen historical reference series.
Interpretation
Where this year sits in the record. It is not the probability of anything, and it does not measure the size of the tragedy.
Inputs and units
UCDP best estimates of battle-related, one-sided and non-state deaths, summed by year, divided by World Bank world population, per 100,000 people.
Coverage
Global, with world population as the denominator.
Direction
A higher death rate gives an equal or higher score.
Missing data
A missing year stops the build. The component is unavailable after its valid-until date, or if the reference has fewer than 15 values.
Source and period
UCDP 26.1 and World Bank population, 2025. Sum of bd_best (battle-related deaths) and best_fatality_estimate (one-sided and non-state violence), divided by SP.POP.TOTL.
Transformation
Empirical mid-rank percentile against a frozen series.
Reference
UCDP 26.1 organized violence rate, 1989 to 2025. Period 1989 to 2025, n = 37. Range 0.311 to 14.574.
Ties
Each equal value counts as half.
Current value in sample
Yes, it is part of the reference, so it contributes 1 tie.
Outside the range
Below every reference value scores 0, above every value scores 100. No extrapolation.
Comparability
At least 15 annual values from one published series. Changing the reference needs a new method version.
Eligibility
Edition date on or before 2027-12-31, and n of at least 15.
Saturation
A sample maximum scores 98.65, not 100, because it ties with itself.
s=100⋅#{r∈R:r<x}+12 #{r∈R:r=x}∣R∣s=100\cdot\frac{\#\{r\in R: r<x\}+\tfrac12\,\#\{r\in R: r=x\}}{|R|}

Worked example. x = 2.9771 deaths per 100,000 people.

s=100⋅34+12⋅137=93.2432s=100\cdot\frac{34+\tfrac12\cdot1}{37}=93.2432

This score shows where the observation sits within the selected historical series. It does not measure the absolute size of the tragedy. A percentile here is a rank in past observations, not the probability of an event.

The edition stores 37 points of “Organized violence deaths per 100,000 people” from 1989 to 2025.

Limitations

  • Indirect deaths and criminal violence are excluded.
  • The 1994 peak is one value among many here, so the percentile ignores how extreme it was.
  • UCDP revises its series, while the reference stays frozen at version 26.1. A later observation could therefore come from a different vintage.
Food security: We Failed the Tutorial

Data-based proxy

Definition
Percentile of world prevalence of undernourishment within a frozen historical reference series.
Interpretation
Where this year sits in the record since 2001. A low value here is not a small humanitarian problem.
Inputs and units
Prevalence of undernourishment, in percent of world population, from FAO via the World Bank.
Coverage
World aggregate, with world population as the denominator.
Direction
Higher prevalence gives an equal or higher score.
Missing data
Years with no value are dropped. The component is unavailable after its valid-until date, or if the reference has fewer than 15 values.
Source and period
World Bank SN.ITK.DEFC.ZS, from FAO, 2024. World aggregate (WLD), latest non-empty year.
Transformation
Empirical mid-rank percentile against a frozen series.
Reference
FAO prevalence of undernourishment, world, 2001 to 2024. Period 2001 to 2024, n = 24. Range 7.200 to 13.200.
Ties
Each equal value counts as half.
Current value in sample
Yes, it is part of the reference, so it contributes 1 tie.
Outside the range
Below every reference value scores 0, above every value scores 100. No extrapolation.
Comparability
At least 15 annual values from one published series. Changing the reference needs a new method version.
Eligibility
Edition date on or before 2027-12-31, and n of at least 15.
Saturation
A sample maximum scores 97.92, not 100, because it ties with itself.
s=100⋅#{r∈R:r<x}+12 #{r∈R:r=x}∣R∣s=100\cdot\frac{\#\{r\in R: r<x\}+\tfrac12\,\#\{r\in R: r=x\}}{|R|}

Worked example. x = 8.1000 % of world population undernourished.

s=100⋅7+12⋅124=31.2500s=100\cdot\frac{7+\tfrac12\cdot1}{24}=31.2500

This score shows where the observation sits within the selected historical series. It does not measure the absolute size of the tragedy. A percentile here is a rank in past observations, not the probability of an event.

The edition stores 24 points of “Prevalence of undernourishment, world” from 2001 to 2024.

Limitations

  • It measures chronic undernourishment, not acute crises such as famine.
  • Published values are rounded to one decimal, so nearby years can tie.
  • FAO revises the series with each report, and the reference does not follow those revisions.
Biological: New Season. Microscopic Cast.

Editorial rubric

Definition
An ordinal editorial level combining the scope and official status of one documented event.
Interpretation
A position on our rubric. It is not a severity scale, and geographic spread does not equal lethality.
Inputs and units
Dated evidence records from WHO, each assigned one rubric level. Case counts are shown as facts and are not used in the score.
Coverage
Tied to the assessed event, not a global disease burden. No denominator.
Direction
Higher means a broader scope or stronger official status.
Missing data
With no applicable evidence the component is unavailable. The absence of a declaration is not treated as safety.
LevelCondition
20Monitored event with limited human transmission.
40Sustained transmission in one country.
60Sustained transmission of the same event in multiple countries.
80An active Public Health Emergency of International Concern.
100An explicit WHO pandemic characterization for the event being assessed.
Transformation
Maximum level among applicable evidence records. On equal levels the first record stays as the trigger.
Evidence window
Transient records apply for 90 days inclusive from the event date. Structural records apply until their review date, or indefinitely if it is empty. Future-dated records never apply.
Clock
All checks use the edition date, 2026-11-01, not the visitor’s date.
s=max⁡{ℓk:k∈At},At=applicable evidence at edition ts=\max\{\ell_k : k\in A_t\},\quad A_t=\text{applicable evidence at edition } t
LevelTypeKindEvent dateReview byAppliesRecord
40Transmission scopestructural2026-10-202026-12-15YesWHO describes sustained, high-level transmission of Bundibugyo virus in the Democratic Republic of the Congo. Kenya has a contained local cluster and Nigeria an imported case, so level 60 is not claimed. WHO Disease Outbreak News, 2026-DON622
80Official statusstructural2026-05-172026-11-24YesThe Bundibugyo Ebola epidemic was determined a PHEIC on 17 May 2026. Temporary recommendations were last issued on 24 August and WHO’s 23 October bulletin still lists the determination. WHO has not characterized it as a pandemic. WHO

Worked example. Applicable levels are 40, 80, so s = 80. The deciding condition: An active Public Health Emergency of International Concern.

Limitations

  • Official status reflects an institutional decision as well as the disease.
  • Only one event at a time drives the score, so simultaneous events do not add up.
  • Levels mix scope and status, so they are not one consistent dimension.
Divine patience: God Is Typing…

Fictional satire

Definition
A fictional performance review of humanity.
Interpretation
None outside the game. Nothing here is observed.
Inputs and units
Catalog items with fixed integer points, chosen per edition.
Coverage
Not applicable. Fictional.
Direction
More selected points give a higher score, up to 100.
Missing data
If no items are selected the component is unavailable.
Transformation
Sum of the selected points, capped at 100.
Parameters
Catalog version 2026.11. Points are editorial integers from 0 to 100.
Eligibility
At least one selected item.
Saturation
Capped at 100. The cap is not active in this edition. The full catalog totals 59 points.
s=min⁡(100,∑k∈Stpk)s=\min\left(100,\sum_{k\in S_t} p_k\right)
EntryPointsSelected
We put a subscription on a button.12Yes
We scheduled a meeting to prepare for the meeting.10Yes
Someone launched a course about launching courses.9Yes
Customer support asked us to rate the problem before solving it.13Yes
We turned relaxation into a productivity metric.8Yes
Another exclusive networking community has been announced.7No

Worked example.

s=min⁡(100, 12+10+9+13+8)=52s=\min(100,\ 12+10+9+13+8)=52

Limitations

  • The score is an authorial choice and carries no evidence.
  • It holds 15% of the weight, so fiction moves the headline by design.
Alien intervention: They Came. They Saw. They Locked the Ship.

Fictional satire

Definition
Fictional proximity to alien intervention.
Interpretation
None outside the game. It is not evidence of extraterrestrial activity.
Inputs and units
Catalog items with fixed integer points, chosen per edition.
Coverage
Not applicable. Fictional.
Direction
More selected points give a higher score, up to 100.
Missing data
If no items are selected the component is unavailable.
Transformation
Sum of the selected points, capped at 100.
Parameters
Catalog version 2026.11. Points are editorial integers from 0 to 100.
Eligibility
At least one selected item.
Saturation
Capped at 100. The cap is not active in this edition. The full catalog totals 44 points.
s=min⁡(100,∑k∈Stpk)s=\min\left(100,\sum_{k\in S_t} p_k\right)
EntryPointsSelected
They intercepted a seven-minute voice note beginning with “quick question.”9No
They tried to cancel a subscription.12Yes
They discovered 48 messaging apps and no communication.10Yes
First contact went to spam.7Yes
The landing permit requires a fax.6Yes

Worked example.

s=min⁡(100, 12+10+7+6)=35s=\min(100,\ 12+10+7+6)=35

Limitations

  • The score is an authorial choice and carries no evidence.
  • Its value has no link to any real observation.
Common sense collapse: The Species That Invented Wi-Fi

Fictional satire

Definition
A fictional inventory of avoidable nonsense.
Interpretation
None outside the game. No company, person or event is being assessed.
Inputs and units
Catalog items with fixed integer points, chosen per edition.
Coverage
Not applicable. Fictional.
Direction
More selected points give a higher score, up to 100.
Missing data
If no items are selected the component is unavailable.
Transformation
Sum of the selected points, capped at 100.
Parameters
Catalog version 2026.11. Points are editorial integers from 0 to 100.
Eligibility
At least one selected item.
Saturation
Capped at 100. The cap is not active in this edition. The full catalog totals 72 points.
s=min⁡(100,∑k∈Stpk)s=\min\left(100,\sum_{k\in S_t} p_k\right)
EntryPointsSelected
An AI writes it. Another AI summarizes it. Nobody reads it.18Yes
The refrigerator needs to accept the updated terms.15Yes
The product got worse when it got an app.12Yes
The company announced human-centered service and removed the last human.16Yes
The apology has a premium tier.11Yes

Worked example.

s=min⁡(100, 18+15+12+16+11)=72s=\min(100,\ 18+15+12+16+11)=72

Limitations

  • The score is an authorial choice and carries no evidence.
  • It holds 15% of the weight, the same as nuclear and climate, which is a joke and also a normative choice.

Aggregation and missing data

Configured weights are stored as 15, 15, 10, 10, 10, 15, 10, 15. The engine divides by their sum, so they act as fractions that sum to one. They are an editorial decision, not an estimate. With every component eligible:

Pt=∑iwi si,t,∑iwi=1P_t=\sum_i w_i\,s_{i,t},\qquad \sum_i w_i=1

When a component is unavailable, its weight is redistributed in proportion to the others.

Ct=∑imi,t wi,w~i,t=mi,t wiCt,Pt=∑iw~i,t si,tC_t=\sum_i m_{i,t}\,w_i,\qquad \tilde w_{i,t}=\frac{m_{i,t}\,w_i}{C_t},\qquad P_t=\sum_i \tilde w_{i,t}\,s_{i,t}
  • Coverage is not confidence. CtC_t is the share of weight available. It says nothing about statistical uncertainty.
  • Renormalizing changes the composition. The mean then answers a slightly different question, with more weight on what remains, including fiction.
  • Coverage alone can move the score. The worked example below changes with no observation changing.
  • Missing is not zero. A missing component leaves the mean. It does not enter with a score of 0.

Publication gate

Having Ct>0C_t>0 is not enough. The code requires at least 3 of the 5 documented components to be scored. Otherwise it uses the newest earlier edition that qualifies, with its own date, or shows “No valid score yet.” Synthetic editions can never become the headline.

headline allowed  ⟺  ∑i∈Dmi,t ≥ 3\text{headline allowed} \iff \sum_{i\in D} m_{i,t}\ \ge\ 3

Worked example, hypothetical

Suppose nuclear were unavailable and nothing else changed. Coverage would be 85%, and the mean would change from 64.425 to 61.676, displayed as 62%, because a component scoring 80 left the mean. If nuclear, climate and food were all unavailable, 2 of 5 documented components would remain, and the gate would block the headline, whatever PtP_t computed.

Calculation ledger

Generated from the same edition and configuration the page displays.

ComponentRaw input or rubric triggerScoreConfigured weightEligibleEffective weightContributionSource period
Nuclear
Editorial rubric
Level 80: An explicit threat of nuclear use is reliably documented.80.000015.00%Yes15.00%12.0000Event date 2026-09-30
Climate
Data-based proxy
1.3166911894602888 °C above 1850 to 1900, ten-year mean65.834615.00%Yes15.00%9.87522016 to 2025
Conflicts
Data-based proxy
2.977070610290588 deaths per 100,000 people93.243210.00%Yes10.00%9.32432025
Food security
Data-based proxy
8.1 % of world population undernourished31.250010.00%Yes10.00%3.12502024
Biological
Editorial rubric
Level 80: An active Public Health Emergency of International Concern.80.000010.00%Yes10.00%8.0000Event date 2026-05-17
Divine patience
Fictional satire
5 fictional catalog items, 52 points52.000015.00%Yes15.00%7.8000Catalog 2026.11
Alien intervention
Fictional satire
4 fictional catalog items, 35 points35.000010.00%Yes10.00%3.5000Catalog 2026.11
Common sense collapse
Fictional satire
5 fictional catalog items, 72 points72.000015.00%Yes15.00%10.8000Catalog 2026.11
Sum of contributions64.4245
Unrounded total
64.42450824527648
Displayed percentage
64%
Weighted coverage
100.00%
Publication status
Published: 5 of 5 documented
Edition
edition-2026-11-01-r2
Method and catalog
1.1, 2026.11

Table cells are rounded independently. Adding the contributions rounded to two decimals gives 64.43, while the total rounded once gives 64.42. Any gap comes from rounding cells, and the totals above come from unrounded values.

Both files carry full-precision values, the edition hash and the method and catalog versions. The JSON also includes every raw input and evidence record.

Playing God, formally

Baseline: the edition behind the headline. Scenarios never touch that edition. For each eligible component:

zd=sd+∑eae be,d+∑ccc,d+gdz_d=s_d+\sum_e a_e\,b_{e,d}+\sum_c c_{c,d}+g_d
sd′=min⁡(100,max⁡(0,zd)),P′=∑dw~d sd′s'_d=\min(100,\max(0,z_d)),\qquad P'=\sum_d \tilde w_d\,s'_d
ItemBehavior in the code
Event intensitya is between 0 and 1. The sliders move in steps of 0.01, and catalog events start at 1 when added.
Impact vectorsb is in score points, fixed per event. Each event appears once in a scenario.
Several eventsAll shifts are added first, then clipped once. Order does not matter.
Custom factorsc is a whole number from -100 to 100, up to 3 factors, with no intensity. They use the same addition.
Dialsg is a whole-number offset from -100 to 100 per component.
WeightsOptional values v from 0 to 100. Replace configured weights, then normalize over eligible components.
Missing baseline componentsThey stay unavailable. Shifts aimed at them are dropped, and the UI disables those controls.
Publication gateNot applied again. A scenario inherits its baseline’s eligibility.
ResetClears the scenario and the link fragment. No reload.
Determinism and serializationThe same edition and scenario give the same result. Links store JSON in base64url after #playing-god=, with intensities as whole percentages. Invalid links are discarded whole.

Why +20 is not +20 percentage points. Impacts act inside one component, and that component only holds its effective weight of the total. For common sense, +20 times 15.0% gives 3.000 points, unless clipping reduces it.

One component

Hypothetical custom factor. Catalog events all touch several components, so this uses the custom mechanism with an impact of +20.

ComponentsShiftzs′Effective weightChange in P
Common sense collapse72.00+20.0092.0092.0015.0%+3.000

P moves from 64.425 to 67.425, displayed as 64% and 67%. Nothing clipped.

Several components

Catalog event “Give an AI the nuclear passwords.” at intensity 0.5.

ComponentsShiftzs′Effective weightChange in P
Nuclear80.00+22.50102.50100.0015.0%+3.000
Conflicts93.24+7.50100.74100.0010.0%+0.676
Divine patience52.00+7.5059.5059.5015.0%+1.125
Alien intervention35.00+5.0040.0040.0010.0%+0.500
Common sense collapse72.00+10.0082.0082.0015.0%+1.500

P moves from 64.425 to 71.225, displayed as 64% and 71%. Nuclear, Conflicts clipped, so part of the impact was lost.

Two events combining

Catalog events “Put the alien landing behind a paywall.” and “Schedule a summit to schedule the summit.”, both at intensity 0.5. Shifts on a shared component add before clipping.

ComponentsShiftzs′Effective weightChange in P
Nuclear80.00+5.0085.0085.0015.0%+0.750
Climate65.83+12.5078.3378.3315.0%+1.875
Conflicts93.24+10.00103.24100.0010.0%+0.676
Food security31.25+7.5038.7538.7510.0%+0.750
Divine patience52.00+12.5064.5064.5015.0%+1.875
Alien intervention35.00+25.0060.0060.0010.0%+2.500
Common sense collapse72.00+7.5079.5079.5015.0%+1.125

P moves from 64.425 to 73.975, displayed as 64% and 74%. Conflicts clipped, so part of the impact was lost.

A component saturating

Catalog event “Give an AI the nuclear passwords.” at intensity 1.

ComponentsShiftzs′Effective weightChange in P
Nuclear80.00+45.00125.00100.0015.0%+3.000
Conflicts93.24+15.00108.24100.0010.0%+0.676
Divine patience52.00+15.0067.0067.0015.0%+2.250
Alien intervention35.00+10.0045.0045.0010.0%+1.000
Common sense collapse72.00+20.0092.0092.0015.0%+3.000

P moves from 64.425 to 74.350, displayed as 64% and 74%. Nuclear, Conflicts clipped, so part of the impact was lost.

A mercy event

Catalog event “The adults enter the room.” at intensity 1. Negative impacts lower the scores.

ComponentsShiftzs′Effective weightChange in P
Nuclear80.00-40.0040.0040.0015.0%-6.000
Conflicts93.24-30.0063.2463.2410.0%-3.000
Divine patience52.00-10.0042.0042.0015.0%-1.500
Common sense collapse72.00-20.0052.0052.0015.0%-3.000

P moves from 64.425 to 50.925, displayed as 64% and 51%. Nothing clipped.

Properties and edge cases

  • Boundedness. Each score is in [0, 100] and effective weights are non-negative and sum to 1, so 0≤P≤1000\le P\le 100.
  • Monotonicity, fixed composition. With weights and eligibility fixed, P never falls when a score rises. Anchored and percentile scores never fall as x rises.
  • Intensity. Each catalog event’s impacts all have the same sign, so P′ moves in one direction as a rises, with other inputs fixed.
  • Piecewise linearity. P′ is continuous and piecewise linear in each a. The linear score is piecewise linear in x.
  • Rubric discontinuities. Rubric scores jump by multiples of 20 as evidence enters or expires.
  • Percentile steps. A percentile is a step function of x. It jumps by 2.70 points per reference value for conflicts, and half that when it lands on a tie.
  • Saturation. Beyond a clip, extra impact has no effect. Linear scores and simulated scores saturate, and catalog sums are capped.
  • Rounding boundaries. R jumps at each half. Values within 5e-10 below a half round up, because of the nine-decimal step.
  • Determinism. Scoring reads no clock and no random source. The only randomness is the seeded sensitivity generator.

Monotonicity holds only for a fixed composition. If a component with a low score becomes unavailable, P can rise with no score rising, as can happen when weights change.

Validation, as implemented

CaseActual behavior
Zero total weightWeightsError. In the UI, a message appears and the baseline result is shown.
All weight on unavailable componentsWeightsError.
Negative or nonfinite weightsWeightsError in the engine. The edition schema rejects negative weights, and link parsing accepts only whole numbers from 0 to 100.
Nonfinite observationsThe schema rejects them. Called directly, the engine marks the component unavailable.
Invalid intensityRangeError, including NaN. Link parsing accepts only whole percentages from 0 to 100.
Duplicate eventsError in the engine. Link parsing discards the link, and the UI only offers Add once.
Invalid anchorsThe schema requires U above L. Called directly, the engine marks the component unavailable.
Reference seriesEmpty is rejected by the schema. Fewer than 15 values makes the component unavailable. Reference dates must match the number of values.
Unknown component idsThe schema, link parsing and the engine all reject them.
Unknown eventsError in the engine. Link parsing discards the link.
Custom impacts and dialsRangeError if nonfinite or outside -100 to 100. Link parsing and the UI also allow only whole numbers.

Sensitivity

These formulas describe how the existing engine responds. They assume fixed eligible components and a positive total weight. One more point in a component adds its effective weight to P:

∂P∂si=w~i\frac{\partial P}{\partial s_i}=\tilde w_i

For an event on components that are not clipped, the slope is the weighted sum of its impacts:

∂P′∂ae=∑dw~d be,d\frac{\partial P'}{\partial a_e}=\sum_d \tilde w_d\,b_{e,d}

Before clipping, “Give an AI the nuclear passwords.” has a slope of 14.500 points per unit of intensity. Clipping changes the slope: a saturated component contributes nothing, and at the exact boundary only a one-sided derivative makes sense.

Arbitrary weights are normalized, which gives:

P=∑ivisi∑ivi,∂P∂vi=si−P∑iviP=\frac{\sum_i v_i s_i}{\sum_i v_i},\qquad \frac{\partial P}{\partial v_i}=\frac{s_i-P}{\sum_i v_i}

So raising a weight pulls P toward that component’s score. With the configured weights, one extra unit on nuclear changes P by 0.1558, and one on food by -0.3317.

The existing weight experiment

The engine has one seeded experiment. Each of 1,000 trials multiplies every weight by an independent uniform factor from 0.5 to 1.5, using a fixed seed of 20261101, and records P. Scores and eligibility stay fixed. This edition gives a range of 57.54 to 70.02. That range only shows how the result reacts to these weight changes. It is not a confidence interval, and the 50% spread is itself an arbitrary choice.

Dependence and compensation

The components are not independent. Conflict can damage food security and health systems, and climate pressure can feed both. Adding related dimensions can count linked consequences more than once, and the model applies no correction for that.

Addition also lets low values offset high ones. These two hypothetical profiles use the configured weights:

ProfileNuclearClimateConflictsFood securityBiologicalDivine patienceAlien interventionCommon sense collapseP
Profile A: evenly bad505050505050505050.00
Profile B: all or nothing100100100100000050.00

The totals match and the worlds do not. In the second, four documented pressures are at maximum and it would still read the same as the first. Always check the components, not just the headline.

Time, provenance and revisions

ComponentObservation periodSource dateRetrievedReviewedValid until
NuclearEvent 2026-09-30n/an/a2026-11-0190 day window
Climate2016 to 20252026-10-302026-11-02n/a2027-06-30
Conflicts20252026-06-092026-11-02n/a2027-12-31
Food security20242026-10-082026-11-02n/a2027-12-31
BiologicalEvent 2026-05-17n/an/a2026-11-012026-11-24
Divine patienceNone, fictionaln/an/an/an/a
Alien interventionNone, fictionaln/an/an/an/a
Common sense collapseNone, fictionaln/an/an/an/a

Edition date 2026-11-01, method 1.1, catalog 2026.11. An edition is immutable, and the sources update on different cycles: ERA5 daily, UCDP and FAO yearly, and rubric evidence by event.

Staleness. An expired observation makes its component unavailable, and expired evidence stops counting. These checks use the edition date, so a published edition keeps its score until a new one is built. This edition’s scores hold through 2026-11-24. After that, the hero shows a review-overdue notice, and the score stays as published.

Comparability. Editions compare only when method version, catalog version, weights, the synthetic flag, catalog selections, frozen references, anchors, scoring types and eligible components all match. The application cannot split a score change into observation changes, source revisions, method changes and coverage changes. It offers no such attribution, and any you see elsewhere would be invented.

Limitations

  • Construct validity. “Apocalypse progress” is not an observable quantity, so the number can’t be checked against any ground truth. No result here can be called accurate.
  • Normative weights. Fiction holds 40% of the configured weight because of a product decision. A different editor would get a different number from the same facts.
  • Editorial anchors and rubrics. Moving the climate ceiling from 2 to 3 °C would lower that score by a third with no change in the climate.
  • Coverage and selection. We scored what has usable public data. Things without a comparable series, such as AI risk, are not in the score at all.
  • Different scopes. A ten-year mean, a one-year rate and a single dated statement are combined, so one number mixes slow trends with last month’s news.
  • Correlated components. One underlying crisis can raise several scores, which adds emphasis without adding information.
  • Fictional inputs. Changing a joke can move the headline more than a real improvement would, because fiction holds real weight.
  • False precision. We print decimals so you can audit the arithmetic. They imply no accuracy, which is why the headline is a whole number.
  • No probabilistic calibration. A reading of 80 doesn’t mean 80% of anything, and no outcome could ever score this model.
  • No causal interpretation. Event impacts are game values. Nothing here estimates what a policy would do.
  • Correct arithmetic, debatable inputs. Every step can be verified and every assumption can still be wrong. A clean calculation only moves the argument to the assumptions.

The model is still useful as transparent satire. It puts real facts next to its own arbitrary choices, shows exactly how those choices drive the result, and lets you change them. Most indices with one number don’t offer that.

Reproduce it

Using the real engine, from the project folder:

npm run reproduce

Or from the downloaded JSON, with no project code:

import json
d = json.load(open("apocalypse-loading-edition-2026-11-01-r2.json"))
rows = [r for r in d["ledger"] if r["eligible"]]
C = sum(r["configuredWeight"] for r in rows)
P = sum(r["configuredWeight"] / C * r["score"] for r in rows)
print(P, d["summary"]["unrounded"])

Verification statement

Automated tests confirm that the examples on this page match engine output, ledger contributions reconcile with the unrounded score, partial examples follow the current eligibility rules, simulation examples match catalog impacts, display rounding agrees with the status table, and downloads match the page. This covers arithmetic and consistency only. No external statistician or scientist has reviewed this methodology.

Known inconsistencies

Found while writing this page from the code.

  • Published editions do not recalculate over time. Validity and evidence windows use the edition date, so results stay reproducible and never depend on the visitor’s clock. A score therefore stays as published after its evidence lapses. The hero shows a review-overdue notice from the day after the review date, and npm run check:data warns.

Resolved in method 1.1

None of these changed a score.

  • An edition with no eligible component now falls back to an earlier edition, or to “No valid score yet,” instead of stopping the build.
  • Editions now sort by date and numeric revision, so r10 follows r2.
  • The engine now rejects custom impacts and dials that are nonfinite or outside -100 to 100, and rejects unknown component ids.
  • Comparability now also requires matching catalog selections, frozen references, anchors, scoring types and eligible components.
  • The schema now rejects reference dates that do not match the number of reference values.
  • Climate anchors, validity rules and the UCDP release date moved to src/config/method.ts. The climate source date is now the newest date in the ERA5 file, and the food source date comes from the World Bank response.
  • Nonfinite observations and invalid anchors now make a component unavailable instead of throwing.
  • The hero and share-card bars now use the same number of cells.

Where the shipped code differs from the briefs

  • The brief’s simulation formula has events only. The code also adds custom factors, which have no intensity, and the “Turn the dials” offsets.
  • The brief allowed an explicitly synthetic full sandbox. None shipped, so the fallback is the last valid edition or a “no valid score” message.
  • The brief asked for food to use a historical position only with a qualifying series. The Global Report on Food Crises did not qualify, so the score uses FAO undernourishment and the crisis figure stays as a fact.
  • The brief said structural conditions use the documented current state. The code represents that with a manual review date on each record.
  • The weight sliders accept whole numbers from 0 to 100 and are normalized, so they do not need to sum to 100.

Events reference

All 16 impact vectors
EventNuclearClimateConflictsFood securityBiologicalDivine patienceAlien interventionCommon sense collapse
Give an AI the nuclear passwords.4501500151020
Replace every expert with a podcast host.025003510030
Make every appliance subscription-only.015025010030
Put the alien landing behind a paywall.00000105015
Schedule a summit to schedule the summit.1025201501500
Let the comment section run foreign policy.3004000151510
Require a CAPTCHA before disaster relief.0151045301500
God reads the terms and conditions.152015153530250
The adults enter the room.-400-3000-100-20
Fund prevention before the documentary.0-200-20-45-1000
Sign the treaty. Actually follow it.-35-25-35000-100
Humanity discovers the mute button.00-1500-15-15-35
The aliens offer technical support.0-2000-150-550
God gives us one more sprint.000-150-45-10-5
Someone fixes the problem instead of rebranding it.0-250-40-2000-20
Turn it off and back on. Carefully.-25-10-20-25-20-20-10-20