How much of What Moved is the rule itself?
Stories enter and leave the top 25 every run. Some of that is news; some is the ranking rule acting on its own.
- Question
- How much of what moves in the top 25 between runs is the rule rather than the news?
- Method
- For every move into or out of the top 25, replay the later run three ways from the snapshots: recency from articles with a real publication time (not GDELT crawl times); each story keeping the recency it had at the earlier run; outlets counted since the story first appeared rather than inside the 48-hour window. A move that disappears under a replay is attributed to it; the rest is news. Separately, a move decided by less than one outlet's weight is at the boundary.
- Result
- Over 34 run pairs, 23% of 238 moves were mechanical: 34 from outlets ageing out of the window, 20 from the clock, 1 from GDELT crawl times. 40% were decided by less than one outlet's weight; the gap between #25 and #26 was under one outlet in 74% of runs.
- Decision
- GDELT crawl times no longer feed recency (from 29 Sep 2026). Each What Moved page now says how many of its moves were mechanical. The window's share is the next thing to fix in the rule.
How it was measured
A story's score is 3 for each outlet that covered it within the last 48 hours, plus 2 × ln(1 + articles), plus up to 4 for recency, which halves every 12 hours. Between two runs, some stories enter the top 25 and others leave. Each move is replayed three ways, from the stored snapshots, to see whether the rule made it on its own:
- GDELT crawl times. GDELT dates an article by when it crawled the page, so a late crawl used to make an old story look fresh. Replay: recency from articles with a real publication time only. This cause stopped when the rule was fixed, on 2026-09-29.
- The clock. Recency decays between runs. Replay: every story keeps the recency it had at the earlier run.
- The window. Outlets are counted over the last 48 hours, so a story loses outlets as its oldest articles age out, with nothing having happened. Replay: outlets counted over every run since the story first appeared.
A move that disappears under a replay is attributed to it, in that order; everything else is news. A move is also marked at the boundary when its story sat within one outlet's weight (3 points) of the line between #25 and #26.
The numbers
The gap between #25 and #26 had a median of 0.71 points and was under one outlet's weight in 74% of runs: the edge of the top 25 is decided by small differences.
Since the crawl-time fix: 30 moves over 3 run pairs, 0% mechanical, 0 from crawl times.
Run by run
| Run (UTC) | Moves | News | Window | Clock | Crawl | At boundary | #25 − #26 |
|---|---|---|---|---|---|---|---|
| 2 Oct, 00:02 | 28 | 28 | 0 | 0 | 0 | 0 | 5.84 |
| 1 Oct, 18:03 | 2 | 2 | 0 | 0 | 0 | 0 | 4.40 |
| 29 Sep, 18:00 | 0 | 0 | 0 | 0 | 0 | 0 | 1.95 |
| 29 Sep, 12:03 | 4 | 4 | 0 | 0 | 0 | 1 | 2.16 |
| 29 Sep, 06:11 | 0 | 0 | 0 | 0 | 0 | 0 | 0.04 |
| 29 Sep, 00:03 | 2 | 2 | 0 | 0 | 0 | 0 | 6.82 |
| 28 Sep, 18:04 | 8 | 6 | 2 | 0 | 0 | 0 | 3.04 |
| 28 Sep, 12:03 | 0 | 0 | 0 | 0 | 0 | 0 | 2.68 |
| 28 Sep, 06:09 | 2 | 2 | 0 | 0 | 0 | 0 | 6.89 |
| 28 Sep, 00:03 | 2 | 2 | 0 | 0 | 0 | 0 | 13.46 |
| 27 Sep, 18:05 | 6 | 6 | 0 | 0 | 0 | 0 | 9.41 |
| 27 Sep, 12:03 | 0 | 0 | 0 | 0 | 0 | 0 | 0.32 |
| 27 Sep, 06:08 | 0 | 0 | 0 | 0 | 0 | 0 | 0.92 |
| 27 Sep, 00:03 | 2 | 2 | 0 | 0 | 0 | 1 | 1.25 |
| 26 Sep, 18:03 | 6 | 6 | 0 | 0 | 0 | 0 | 3.11 |
| 26 Sep, 12:03 | 4 | 2 | 2 | 0 | 0 | 0 | 3.05 |
| 26 Sep, 06:07 | 6 | 3 | 3 | 0 | 0 | 3 | 2.15 |
| 26 Sep, 00:03 | 10 | 7 | 3 | 0 | 0 | 2 | 1.69 |
| 25 Sep, 18:03 | 22 | 20 | 0 | 2 | 0 | 0 | 0.23 |
| 25 Sep, 12:01 | 10 | 8 | 2 | 0 | 0 | 9 | 0.28 |
| 25 Sep, 06:01 | 8 | 7 | 0 | 1 | 0 | 7 | 0.28 |
| 25 Sep, 00:13 | 10 | 9 | 1 | 0 | 0 | 4 | 0.04 |
| 24 Sep, 19:53 | 14 | 12 | 1 | 1 | 0 | 6 | 0.16 |
| 24 Sep, 18:00 | 2 | 2 | 0 | 0 | 0 | 1 | 0.08 |
| 24 Sep, 16:11 | 4 | 3 | 1 | 0 | 0 | 3 | 0.71 |
| 24 Sep, 12:00 | 10 | 5 | 3 | 2 | 0 | 8 | 0.41 |
| 24 Sep, 06:00 | 6 | 2 | 2 | 2 | 0 | 6 | 0.06 |
| 24 Sep, 03:22 | 8 | 6 | 2 | 0 | 0 | 7 | 0.39 |
| 24 Sep, 00:00 | 34 | 18 | 12 | 3 | 1 | 10 | 0.00 |
| 23 Sep, 20:31 | 16 | 9 | 0 | 7 | 0 | 15 | 0.03 |
| 23 Sep, 18:00 | 12 | 10 | 0 | 2 | 0 | 11 | 0.41 |
| 23 Sep, 15:41 | 0 | 0 | 0 | 0 | 0 | 0 | 0.44 |
| 23 Sep, 15:04 | 0 | 0 | 0 | 0 | 0 | 0 | 0.36 |
| 23 Sep, 15:04 | 0 | 0 | 0 | 0 | 0 | 0 | 0.36 |
Limits
- Snapshots of every run exist from 23 Sep 2026, so the record is short; the shares will move as runs accrue.
- 2 pairs of runs more than nine hours apart are left out: the machine was off, and what changed across an outage is hours of missed news, not one run's movement.
- Causes are checked in a fixed order, and a move can have more than one; the first replay that undoes it gets it.
- "News" means outlets or articles arrived or went. It includes clustering changes: a story that split or merged moves too.
Claims
What this study said in advance, recorded when first seen and scored on its due date.
| Claim | Registered | Due | Outcome |
|---|---|---|---|
| In the four weeks after the crawl-time fix, at least 15% of top-25 moves are still made by the rule rather than the news. after_fix.mechanical_share >= 0.15 | 2026-09-29 | 2026-10-27 | pending |
| After the crawl-time fix, no top-25 move comes from GDELT crawl times. after_fix.causes.crawl == 0 | 2026-09-29 | 2026-10-13 | pending |