Chapter A
How every number here was produced, and what it cannot support.
Everything in this book is computed from one archive by scripts in one repository. This appendix says what the archive is, what the numbers mean, how to reproduce them, and what the whole thing cannot tell you.
690 daily issues of AI News — written and edited by Shawn Wang (swyx), published
between 6 December 2023 and 6 August 2026 through Buttondown, then smol.ai, then Substack — about
15.4 million words, in articles/ as one markdown file per issue. Filenames are the day an issue
covers; the front matter carries the day it was published, which is usually
the next morning. Mixing those two is how three dates in the first edition came out wrong.
Each issue has up to four layers. Three are machine-generated summaries of sampled sources —
a Twitter recap, a Reddit recap and, until March 2026, a Discord recap. Above them sits the only
text a person wrote: a lede of a few hundred words. For 2026 the public mirror carries a
placeholder there instead of the real thing, so the editorial layer was reconstructed from 397
sent emails; see analysis/extract_commentary_eml.py.
This book is a reading of a copy, not a substitute for the thing. The newsletter was still
publishing when this archive stops, under the name it moved to at the second provider change —
news.smol.ai — and every quotation here is a few sentences lifted out of an issue
that ran to twenty-four thousand words. Anything that looks interesting in these pages is worth
reading at its original length, which is one reason each dated citation links back to the issue
it came from.
Every figure measures attention within one curated view of a field's public conversation — not deployment, not revenue, not capability. The three surfaces have short names used throughout and longer accurate ones: announcement space is lab-linked Twitter discourse from 544 accounts on one editor's list; community space is sampled Discord activity across 56 servers; practice space is local-model Reddit discourse from 12 subreddits.
Almost every number is mentions of a regular expression per ten thousand words, inside a single named recap section, aggregated over a half-year. The section is the unit because whole-issue composition inverts across the corpus: the Discord recap is 96% of the median issue in early 2024 and absent by 2026, so any count taken across a whole issue is a weighted average whose weights are moving faster than the thing being measured.
| Script | What it produces |
|---|---|
analysis/methods/recaps.py --check | splits issues into sections; regression fixtures for the six heading styles |
analysis/methods/sections.py | the density series behind most figures |
analysis/methods/sensitivity.py | the same fold-changes from three different baselines |
analysis/methods/survival.py | Kaplan-Meier curves for model lifespan |
analysis/methods/semantic_drift.py | diachronic embeddings and the drift table |
analysis/methods/editorial.py | the human layer, measured separately |
analysis/methods/titles.py | stored titles against published subjects |
analysis/methods/summarizer.py | which model wrote which recap, and the same-day two-model comparison |
analysis/quotes.py | every quotation in this book, with its day and surface |
python3 book/build_book.py && python3 book/check.py site |
rebuilds these pages and verifies them |
It is discourse, not deployment. A gap between surfaces is a lead worth investigating, never a measurement of adoption, and nowhere in this book is it ground truth about what anyone ran.
The instrument is a language model, and it changed. Eight model families name themselves as the summarizer across the corpus, and 384 of 613 issues never declare the Twitter one. Three days were published twice with different summarizers: varying the model while holding the news constant moves a pattern's density by a median of 1.23× and up to 2.40×. That is the noise floor under every ratio here. A fold-change of 1.2 is indistinguishable from a summarizer swap.
Gradients are baseline-dependent. Directions mostly survive a change of baseline; the announcement-to-practice ratios mostly do not. The agent gradient is 4.5:1 from 2024H1, 6.2:1 from the stable core, and 1.0:1 from 2024H2, where it disappears. Only retrieval's gradient survives all three.
The sampling frame widened. 7 subreddits to 12, 384 Twitter accounts to 544, 30 Discord servers to none. Any count of distinct things mentioned is partly counting the newsletter's own appetite.
It is one editor's view, over-weighting the English-language, US-and-China, open-weights-adjacent conversation, and it stops in August 2026.
Findings that were published here and later withdrawn are kept in the text rather than deleted, with what each one cost; the consolidated ledger is in the third interlude. The largest were a parser that misclassified 71% of the 2024H1 announcement baseline, a templated-title series that was measuring a lossy mirror rather than the newsletter, and an image-generation collapse that turned out to live in a single cell of a table.