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
| Symbol | Meaning | Domain and units |
|---|---|---|
| Component. d is used when an event acts on it. | One of eight ids | |
| Indicator within a component. The current model uses one per component, so j is omitted below. | Not used | |
| Edition. | Immutable snapshot | |
| Raw observation. | Component units | |
| Scoring transformation. | Maps inputs to [0, 100] | |
| Component score. | [0, 100], editorial points | |
| Configured weight, as a fraction. | [0, 1], sums to 1 | |
| Eligibility indicator. | 0 or 1 | |
| Weighted coverage. | [0, 1] | |
| Effective weight. | [0, 1] | |
| Unrounded aggregate score. | [0, 100] | |
| Display rounding rule. | Integers 0 to 100 | |
| Simulation event. | One of 16 catalog ids | |
| Event intensity. | [0, 1] | |
| 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.
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.
Applying this, 64.424508 displays as 64. The status text comes from the displayed integer.
| Displayed | Status |
|---|---|
| 0 to 9 | Suspiciously fine. |
| 10 to 19 | Mostly harmless. Allegedly. |
| 20 to 29 | God has muted the group chat. |
| 30 to 39 | The red flags have formed a committee. |
| 40 to 49 | This is why we can’t have nice civilizations. |
| 50 to 59 | Halfway to hell. Still on hold. |
| 60 to 69 | Thoughts and prayers have been escalated. |
| 70 to 79 | The horsemen are comparing calendars. |
| 80 to 89 | The horsemen are in the Uber. |
| 90 to 94 | The trumpets are warming up. |
| 95 to 99 | The trumpets have entered the chat. |
| 100 | That’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.
| Level | Condition |
|---|---|
| 20 | Nuclear arsenals exist, with none of the higher conditions established in the reviewed evidence. |
| 40 | Documented arsenal expansion or modernization. |
| 60 | A relevant arms-control instrument is suspended, abandoned, or expired without a replacement. |
| 80 | An explicit threat of nuclear use or an operational alert change is reliably documented. |
| 100 | Confirmed 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.
| Level | Type | Kind | Event date | Review by | Applies | Record |
|---|---|---|---|---|---|---|
| 20 | Structural condition | structural | 2026-01-01 | 2027-06-30 | Yes | Nine states hold nuclear weapons. SIPRI estimates 12,187 warheads in January 2026, about 9,745 of them in military stockpiles. SIPRI Yearbook 2026 |
| 40 | Structural condition | structural | 2026-06-08 | 2027-06-30 | Yes | SIPRI 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 |
| 60 | Treaty status | structural | 2026-02-05 | 2027-02-05 | Yes | New START, the last treaty limiting US and Russian strategic forces, expired on 5 February 2026 with no successor. SIPRI Yearbook 2026, chapter 8 |
| 80 | Political statement | transient | 2026-09-30 | n/a | Yes | AP 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.
Worked example.
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.
Worked example. x = 2.9771 deaths per 100,000 people.
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.
Worked example. x = 8.1000 % of world population undernourished.
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.
| Level | Condition |
|---|---|
| 20 | Monitored event with limited human transmission. |
| 40 | Sustained transmission in one country. |
| 60 | Sustained transmission of the same event in multiple countries. |
| 80 | An active Public Health Emergency of International Concern. |
| 100 | An 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.
| Level | Type | Kind | Event date | Review by | Applies | Record |
|---|---|---|---|---|---|---|
| 40 | Transmission scope | structural | 2026-10-20 | 2026-12-15 | Yes | WHO 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 |
| 80 | Official status | structural | 2026-05-17 | 2026-11-24 | Yes | The 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.
| Entry | Points | Selected |
|---|---|---|
| We put a subscription on a button. | 12 | Yes |
| We scheduled a meeting to prepare for the meeting. | 10 | Yes |
| Someone launched a course about launching courses. | 9 | Yes |
| Customer support asked us to rate the problem before solving it. | 13 | Yes |
| We turned relaxation into a productivity metric. | 8 | Yes |
| Another exclusive networking community has been announced. | 7 | No |
Worked example.
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.
| Entry | Points | Selected |
|---|---|---|
| They intercepted a seven-minute voice note beginning with “quick question.” | 9 | No |
| They tried to cancel a subscription. | 12 | Yes |
| They discovered 48 messaging apps and no communication. | 10 | Yes |
| First contact went to spam. | 7 | Yes |
| The landing permit requires a fax. | 6 | Yes |
Worked example.
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.
| Entry | Points | Selected |
|---|---|---|
| An AI writes it. Another AI summarizes it. Nobody reads it. | 18 | Yes |
| The refrigerator needs to accept the updated terms. | 15 | Yes |
| The product got worse when it got an app. | 12 | Yes |
| The company announced human-centered service and removed the last human. | 16 | Yes |
| The apology has a premium tier. | 11 | Yes |
Worked example.
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:
When a component is unavailable, its weight is redistributed in proportion to the others.
- Coverage is not confidence. 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 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.
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 computed.
Calculation ledger
Generated from the same edition and configuration the page displays.
| Component | Raw input or rubric trigger | Score | Configured weight | Eligible | Effective weight | Contribution | Source period |
|---|---|---|---|---|---|---|---|
| Nuclear Editorial rubric | Level 80: An explicit threat of nuclear use is reliably documented. | 80.0000 | 15.00% | Yes | 15.00% | 12.0000 | Event date 2026-09-30 |
| Climate Data-based proxy | 1.3166911894602888 °C above 1850 to 1900, ten-year mean | 65.8346 | 15.00% | Yes | 15.00% | 9.8752 | 2016 to 2025 |
| Conflicts Data-based proxy | 2.977070610290588 deaths per 100,000 people | 93.2432 | 10.00% | Yes | 10.00% | 9.3243 | 2025 |
| Food security Data-based proxy | 8.1 % of world population undernourished | 31.2500 | 10.00% | Yes | 10.00% | 3.1250 | 2024 |
| Biological Editorial rubric | Level 80: An active Public Health Emergency of International Concern. | 80.0000 | 10.00% | Yes | 10.00% | 8.0000 | Event date 2026-05-17 |
| Divine patience Fictional satire | 5 fictional catalog items, 52 points | 52.0000 | 15.00% | Yes | 15.00% | 7.8000 | Catalog 2026.11 |
| Alien intervention Fictional satire | 4 fictional catalog items, 35 points | 35.0000 | 10.00% | Yes | 10.00% | 3.5000 | Catalog 2026.11 |
| Common sense collapse Fictional satire | 5 fictional catalog items, 72 points | 72.0000 | 15.00% | Yes | 15.00% | 10.8000 | Catalog 2026.11 |
| Sum of contributions | 64.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:
| Item | Behavior in the code |
|---|---|
| Event intensity | a is between 0 and 1. The sliders move in steps of 0.01, and catalog events start at 1 when added. |
| Impact vectors | b is in score points, fixed per event. Each event appears once in a scenario. |
| Several events | All shifts are added first, then clipped once. Order does not matter. |
| Custom factors | c is a whole number from -100 to 100, up to 3 factors, with no intensity. They use the same addition. |
| Dials | g is a whole-number offset from -100 to 100 per component. |
| Weights | Optional values v from 0 to 100. Replace configured weights, then normalize over eligible components. |
| Missing baseline components | They stay unavailable. Shifts aimed at them are dropped, and the UI disables those controls. |
| Publication gate | Not applied again. A scenario inherits its baseline’s eligibility. |
| Reset | Clears the scenario and the link fragment. No reload. |
| Determinism and serialization | The 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.
| Component | s | Shift | z | s′ | Effective weight | Change in P |
|---|---|---|---|---|---|---|
| Common sense collapse | 72.00 | +20.00 | 92.00 | 92.00 | 15.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.
| Component | s | Shift | z | s′ | Effective weight | Change in P |
|---|---|---|---|---|---|---|
| Nuclear | 80.00 | +22.50 | 102.50 | 100.00 | 15.0% | +3.000 |
| Conflicts | 93.24 | +7.50 | 100.74 | 100.00 | 10.0% | +0.676 |
| Divine patience | 52.00 | +7.50 | 59.50 | 59.50 | 15.0% | +1.125 |
| Alien intervention | 35.00 | +5.00 | 40.00 | 40.00 | 10.0% | +0.500 |
| Common sense collapse | 72.00 | +10.00 | 82.00 | 82.00 | 15.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.
| Component | s | Shift | z | s′ | Effective weight | Change in P |
|---|---|---|---|---|---|---|
| Nuclear | 80.00 | +5.00 | 85.00 | 85.00 | 15.0% | +0.750 |
| Climate | 65.83 | +12.50 | 78.33 | 78.33 | 15.0% | +1.875 |
| Conflicts | 93.24 | +10.00 | 103.24 | 100.00 | 10.0% | +0.676 |
| Food security | 31.25 | +7.50 | 38.75 | 38.75 | 10.0% | +0.750 |
| Divine patience | 52.00 | +12.50 | 64.50 | 64.50 | 15.0% | +1.875 |
| Alien intervention | 35.00 | +25.00 | 60.00 | 60.00 | 10.0% | +2.500 |
| Common sense collapse | 72.00 | +7.50 | 79.50 | 79.50 | 15.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.
| Component | s | Shift | z | s′ | Effective weight | Change in P |
|---|---|---|---|---|---|---|
| Nuclear | 80.00 | +45.00 | 125.00 | 100.00 | 15.0% | +3.000 |
| Conflicts | 93.24 | +15.00 | 108.24 | 100.00 | 10.0% | +0.676 |
| Divine patience | 52.00 | +15.00 | 67.00 | 67.00 | 15.0% | +2.250 |
| Alien intervention | 35.00 | +10.00 | 45.00 | 45.00 | 10.0% | +1.000 |
| Common sense collapse | 72.00 | +20.00 | 92.00 | 92.00 | 15.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.
| Component | s | Shift | z | s′ | Effective weight | Change in P |
|---|---|---|---|---|---|---|
| Nuclear | 80.00 | -40.00 | 40.00 | 40.00 | 15.0% | -6.000 |
| Conflicts | 93.24 | -30.00 | 63.24 | 63.24 | 10.0% | -3.000 |
| Divine patience | 52.00 | -10.00 | 42.00 | 42.00 | 15.0% | -1.500 |
| Common sense collapse | 72.00 | -20.00 | 52.00 | 52.00 | 15.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 .
- 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
| Case | Actual behavior |
|---|---|
| Zero total weight | WeightsError. In the UI, a message appears and the baseline result is shown. |
| All weight on unavailable components | WeightsError. |
| Negative or nonfinite weights | WeightsError in the engine. The edition schema rejects negative weights, and link parsing accepts only whole numbers from 0 to 100. |
| Nonfinite observations | The schema rejects them. Called directly, the engine marks the component unavailable. |
| Invalid intensity | RangeError, including NaN. Link parsing accepts only whole percentages from 0 to 100. |
| Duplicate events | Error in the engine. Link parsing discards the link, and the UI only offers Add once. |
| Invalid anchors | The schema requires U above L. Called directly, the engine marks the component unavailable. |
| Reference series | Empty is rejected by the schema. Fewer than 15 values makes the component unavailable. Reference dates must match the number of values. |
| Unknown component ids | The schema, link parsing and the engine all reject them. |
| Unknown events | Error in the engine. Link parsing discards the link. |
| Custom impacts and dials | RangeError 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:
For an event on components that are not clipped, the slope is the weighted sum of its impacts:
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:
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:
| Profile | Nuclear | Climate | Conflicts | Food security | Biological | Divine patience | Alien intervention | Common sense collapse | P |
|---|---|---|---|---|---|---|---|---|---|
| Profile A: evenly bad | 50 | 50 | 50 | 50 | 50 | 50 | 50 | 50 | 50.00 |
| Profile B: all or nothing | 100 | 100 | 100 | 100 | 0 | 0 | 0 | 0 | 50.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
| Component | Observation period | Source date | Retrieved | Reviewed | Valid until |
|---|---|---|---|---|---|
| Nuclear | Event 2026-09-30 | n/a | n/a | 2026-11-01 | 90 day window |
| Climate | 2016 to 2025 | 2026-10-30 | 2026-11-02 | n/a | 2027-06-30 |
| Conflicts | 2025 | 2026-06-09 | 2026-11-02 | n/a | 2027-12-31 |
| Food security | 2024 | 2026-10-08 | 2026-11-02 | n/a | 2027-12-31 |
| Biological | Event 2026-05-17 | n/a | n/a | 2026-11-01 | 2026-11-24 |
| Divine patience | None, fictional | n/a | n/a | n/a | n/a |
| Alien intervention | None, fictional | n/a | n/a | n/a | n/a |
| Common sense collapse | None, fictional | n/a | n/a | n/a | n/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 reproduceOr 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
| Event | Nuclear | Climate | Conflicts | Food security | Biological | Divine patience | Alien intervention | Common sense collapse |
|---|---|---|---|---|---|---|---|---|
| Give an AI the nuclear passwords. | 45 | 0 | 15 | 0 | 0 | 15 | 10 | 20 |
| Replace every expert with a podcast host. | 0 | 25 | 0 | 0 | 35 | 10 | 0 | 30 |
| Make every appliance subscription-only. | 0 | 15 | 0 | 25 | 0 | 10 | 0 | 30 |
| Put the alien landing behind a paywall. | 0 | 0 | 0 | 0 | 0 | 10 | 50 | 15 |
| Schedule a summit to schedule the summit. | 10 | 25 | 20 | 15 | 0 | 15 | 0 | 0 |
| Let the comment section run foreign policy. | 30 | 0 | 40 | 0 | 0 | 15 | 15 | 10 |
| Require a CAPTCHA before disaster relief. | 0 | 15 | 10 | 45 | 30 | 15 | 0 | 0 |
| God reads the terms and conditions. | 15 | 20 | 15 | 15 | 35 | 30 | 25 | 0 |
| The adults enter the room. | -40 | 0 | -30 | 0 | 0 | -10 | 0 | -20 |
| Fund prevention before the documentary. | 0 | -20 | 0 | -20 | -45 | -10 | 0 | 0 |
| Sign the treaty. Actually follow it. | -35 | -25 | -35 | 0 | 0 | 0 | -10 | 0 |
| Humanity discovers the mute button. | 0 | 0 | -15 | 0 | 0 | -15 | -15 | -35 |
| The aliens offer technical support. | 0 | -20 | 0 | 0 | -15 | 0 | -55 | 0 |
| God gives us one more sprint. | 0 | 0 | 0 | -15 | 0 | -45 | -10 | -5 |
| Someone fixes the problem instead of rebranding it. | 0 | -25 | 0 | -40 | -20 | 0 | 0 | -20 |
| Turn it off and back on. Carefully. | -25 | -10 | -20 | -25 | -20 | -20 | -10 | -20 |