Document

How the backward test is run (1995 to 2019)

A working document. It is one of the documents the site is built from, published as it is written for anyone checking the work, and it uses the project's own shorthand. The plain account of the same material is on the home page.

How the backward test is run (1995 to 2019)

Written 2026-10-09, before any series was built, by an agent session working on my four-day weekend list. This file says how the test owed by docs/singularity-entry-definition.md section 5, item 1, is run. The definition says what the test must return ("not entered" for every year from 1995 to 2019) and what pattern it expects (the internet years, 1995 to 2000, light up the forecasting condition and nothing else; the deep-learning years, 2012 to 2017, light up the pace condition weakly and nothing else). It does not say how to measure the conditions before 2019, so this file does.

The test uses the frozen values in docs/singularity-entry-thresholds.json exactly as they stand. Nothing in that file is changed by this work, whatever the result. If the test returns "entered" for any year, that is reported as a failure of the thresholds, which the definition says is settled by an amendment, not by this session.

The four conditions, one per leg

The definition calls its four conditions legs A to D. Each needs a series that reaches back to 1995.

Leg A, the pace of progress getting faster

The frozen measure, METR's task-length measure, starts in 2019 (its first reading is GPT-2), so it cannot be used. The stand-in is the training compute of record-setting AI systems: the amount of computing used to train each AI system that used more than any system before it.

Leg B, forecasts having stopped working

This leg needs forecasts of the capability measure made at past dates with known lead times, scored against what happened and against extrapolating the trend. No such ledger exists for 1995 to 2019 for any AI capability series, and building one from scratch is outside this session (another session is building the ledger for the live measure). So:

Leg C, AI doing the improving

No measurement of the share of AI research work done by AI systems exists for any year before 2025. The record for 1995 to 2019 is therefore not measurable, with the supporting context written down: the first widely released AI tool that wrote code (GitHub Copilot, technical preview announced 2021-06-29) came after the test period, and the main pre-2020 case of AI designing AI systems (automated design of network shapes, Zoph and Le, 2016) covered a narrow part of the work. Nothing is estimated or interpolated for this leg. As with leg B, the report also checks the verdict with leg C assumed met.

Leg D, the economy changing gear

The series is already in the repo: World Bank world real output growth, one row a year, worldbank-gdp-growth-* in data/world_measures.csv. It is used exactly as the live page uses it: the condition is met in a year whose growth is at or above 30 percent, and one annual reading covers that year's four quarters. The gauge uses the frozen reference (the mean growth from 1961 to 2019 turned into a doubling time).

Turning legs into a verdict

For each quarter from the first quarter of 1995 to the last quarter of 2019, each leg is "met", "not met" or "not measurable" as of the last day of the quarter. The status for the quarter is "entered" only after four consecutive quarters with all four legs met. A year's verdict is "entered" if any quarter in it is "entered".

What a pass and a fail look like

Files

Result of the first run (2026-10-09)

Written after the run; nothing above this section was changed after seeing the result. Reproduce with python3 scripts/backward_test.py.

Pass: "not entered" in every quarter from 1995 to 2019, and it holds on the measured legs alone (with legs B and C assumed met, the answer is the same). What carries it is leg D: world growth peaked at 4.57 percent (2000) in the period, against a line of 30 percent. Leg D's gauge peaks at 0.26 (2000), on a scale where 1 is the line.

The internet years (1995 to 2000): leg A cannot be scored (only two record-setting systems in Epoch's list fall in those six years, LSTM in 1997 and a neural language model in 2000, so no twelve-month window holds three); legs B and C are not measurable; leg D is far below its line. The expected pattern ("leg B and nothing else") is untested, because leg B has no series for those years.

The deep-learning years (2012 to 2017) do not match the expected pattern of leg A "firing weakly". Four record-setting systems came within six months in 2014 (SPPNet, VGG16, Seq2Seq LSTM, SNM-skip), and the twelve-month doubling time of training compute came in at 26.5 days and then 25.8 days, below the 30.44-day line. The gauge reads 1.00 from late 2014 to mid-2016. Leg A was not met only because the rule also asks for three windows in a row each quicker than the last, and there were only two windows before the record-setting stopped for a while. The same thing happens in late 2019 (24.3 days, from Megatron-BERT, T5 and AlphaStar within six weeks). Two cautions on reading this: the series measures what went into AI systems, not what they could do; and with only three or four systems in a window, one large system can swing the fitted doubling time a long way.

What this means for the thresholds is a question for me, not for this run. The pass does not depend on leg A: it rests entirely on leg D. On this stand-in series, the pace line on its own would have been crossed in 2014, and the "getting quicker" part of the rule plus the three-system minimum are what held it.

Files written: data/backward-test/leg-a-windows.csv (6 scored windows from 21 record-setting systems), results-by-quarter.csv (100 quarters), results-by-year.csv.

Corrections after the independent check (2026-10-09)

An independent session reproduced the run and passed it with conditions (its comment is on the pull request). Three points are added here; nothing above this section was changed, the frozen thresholds were not touched, and the verdict is the same.

1. The pace rule can be read two ways. The frozen wording is "still falling over the last two windows". The live site, and the run above, read that as three windows in a row, each quicker than the one before. It can also be read as one drop: the latest window quicker than the one before it. The two readings give different answers here:

The test passes on either reading, because world growth never came near 30 percent: "not entered" in every quarter, also with the forecasting and AI-doing-the-improving conditions assumed met. Which reading the rule means is for me to settle. The results files now carry both (leg_a_looser_reading and the looser_pace_reading verdict columns). The "held back only by the getting-quicker rule" sentence above is true of the stricter reading only.

A smaller point from the same check: the 25.8-day window stays the latest one for seven quarters because no new record-setting system arrived until the third quarter of 2016, and the rule keeps the latest window until a new one arrives. That is how the live rule works too, and it is part of why the pace gauge sits at 1.00 for so long.

2. The 25.8-day figure rests on an uncertain estimate. The window ending in December 2014 includes SNM-skip (a Google language model), whose training compute Epoch grades "Speculative", its least certain grade. The 26.5-day window just before it does not include SNM-skip and is also under the line.

3. What "record-setting" means here. The method says a system counts if it beats "every earlier system in the dataset". The code compares only within the saved 1990 to 2020 rows. Chosen: keep the code as it is and read "the dataset" as the saved rows, because the saved extract is what makes the run reproducible without the live file, and the choice makes no difference to the test. Checked with python3 scripts/backward_test.py --check-pre1990 FILE (FILE being a full copy of Epoch's file): counting the systems from before 1990 removes two 1990 systems from the record list (NETtalk reimplementation and SexNet compression; 21 becomes 19), and no window from 1995 to 2019 changes. The re-run after these corrections left leg-a-windows.csv byte for byte the same.

Ruling (2026-10-12)

I ruled on 12 October 2026, in his words "all as recommended"; the recommendation was the session's and I approved it, so the authorship is mixed. Nothing above this section was changed, and the frozen thresholds were not touched.

The pace rule stays as written, read the way the live site reads it: the last three twelve-month windows must each be quicker than the one before. The near-firings in late 2014 (26.5 then 25.8 days) and late 2019 (24.3 days), with training compute standing in for the task-length measure, are recorded as noise in the stand-in, not as a flaw in the rule. The stand-in measures what went into AI systems, not what they could do, and a window holding only three or four systems swings a long way when one large system lands in it. The finding stays in the record above; the definition is not changed for it. The looser one-drop reading stays in the results files as a column, for comparison only.

Rendered from docs/backward-test-method.md at version dc90125.