Skip to content
Read • Question • ConnectAnthony’s notes & researchReturn with a new question
Anthony’s NotesA personal field guide
From the notebook

Fact-Check MOC — How to Sell a Genocide

Independent verification of Adam H. Johnson, How to Sell a Genocide: The Media’s Complicity in the Destruction of Gaza (Pluto Press, 2026). 257 pages, 476 endnotes.

The aim is to check whether the book’s quantitative claims reproduce from published data, whether its citations support what they are cited for, and whether its conclusions follow from its evidence. Not to reach a predetermined verdict in either direction.

Standing assessment as of 2026-08-04

Ten discrepancies, nine confirmed and one unresolved, none individually fatal, and the substantive ones run against the book’s own case rather than for it. The serious problems are structural rather than arithmetic: a twelve-month thesis resting on 30-to-100-day data, no engagement anywhere with the event-type objection, and a causal claim that word-frequency counts cannot carry. See 05 - Findings Register and 06 - Open Questions.

One finding stands apart from the register and runs the other way. The Chapter 7 civilians comparison is a design error rather than a typo, and it inflates a headline effect by roughly 40 percent in the direction of the argument. See 09 - The Civilians Query Problem.


The audit

The working notes, in reading order.

  • 01 - Audit Log — internal-consistency findings A through D, data sources located, and the discovery that the published CSVs are not the count basis
  • 02 - Data Sources — the two GitHub repositories, what each contains, what is missing, and the unpublished coding layer
  • 03 - Test Design — event-type vs victim-identity test: hypotheses, normalization, and interpretation rules written before results
  • 04 - Results Stage 1 — live GDELT run, 98 queries, zero errors, genuinely mixed result
  • 05 - Findings Register — every discrepancy with the direction of its error, plus what checked out clean
  • 06 - Open Questions — the three structural problems and what would resolve each
  • 07 - Query Design Audit — whether each search pair is commensurable, and where asymmetry is guaranteed by circumstance rather than chosen
  • 08 - Search Terms and Their Allegations — every count paired with the claim attached to it, and whether a frequency can carry a universal
  • 09 - The Civilians Query Problem — the most substantive finding: a labeled measurement that measures something broader, asymmetrically
  • 10 - Session Log — how the first session unfolded, including the two conclusions that were overturned by checking

The book’s thesis

US Center-Left media “helped create the political, ideological, and moral conditions for mass death in Gaza from October 2023 to October 2024,” through “deliberate choices by deliberate moral actors.” Stated evidentiary standard: to prove “beyond a reasonable doubt” that the genocide was “enabled, facilitated, and cheerled” by establishment US media. Stated corpus: nine outlets, 12,000 articles, 5,000 TV segments. Erakat’s foreword states the standard and the corpus together at p. xii (file not included in this release).


Where the audit stands

The book’s citation base is almost entirely journalism and NGO reporting, which makes citation checking unusually tractable. Its central evidence, however, is Johnson’s own content analysis, which the book publishes no data for and points to no repository for. Two underlying datasets were located independently and are stored under data/.

Ten discrepancies found so far, none individually fatal, all documented in 05 - Findings Register and, since 2026-08-04, each carrying the quoted passage behind it. A live test of the strongest objection to the book’s core finding was run and returned a genuinely mixed result — see 04 - Results Stage 1.

The work then shifted from whether the numbers are right to what was counted. That produced the more serious material: a commensurability audit of each search pair in 07 - Query Design Audit, a claim-by-claim table in 08 - Search Terms and Their Allegations showing a frequency repeatedly asked to establish a universal, and the Chapter 7 design error in 09 - The Civilians Query Problem.

Pending: the full Intercept dataset, requested from Othman Ali on 2026-08-01 and awaiting reply; the manual coding pass, which blocks reporting of any stage-1 number; and a citation integrity pass across all 476 endnotes.


Working principles

Adopted early and worth keeping:

  1. Verification claims require a quoted supporting passage with a locator. No quote means unverifiable, not confirmed.
  2. Track the direction of each error. A pattern of errors that consistently understate suggests sloppiness; consistent overstatement suggests motivated reasoning. So far the pattern runs against the book’s own case.
  3. Automated counts are screens, not results. Anything depending on who a term refers to requires manual coding before it is reported.
  4. Interpretation rules get written before results are seen.

Data and code

Files on disk in this folder, not Obsidian notes.

  • The book itself (file not included in this release) — 257 pages. Page links throughout these notes point straight to the cited page. The PDF carries correct page labels, so PDF++ shows book page numbers even though the underlying anchor is the physical page; see CLAUDE for the offset
  • data/nation-tv-dataset/ — 11 CSVs, roughly 68,000 clip rows from the Nation television study (CNN, MSNBC), several exposing the manual coding columns
  • data/intercept-print-dataset/ — 3 CSVs from the Intercept print study (NYT, WaPo, LAT), basic set only
  • data/gdelt_stage1_summary.csv — output behind 04 - Results Stage 1
  • data/endnotes_parsed.csv — all 476 endnotes parsed into section, number, and citation. Input for the citation-integrity pass
  • scripts/gdelt_event_type_test.py — runs the full 98-query test against GDELT’s free TV API
  • scripts/extract_book.sh — regenerates data/book.txt from your own PDF. The book text is deliberately not stored here
  • CLAUDE — orientation for picking the project up cold: current state, GDELT API notes, and the standing rules

Cross-vault

Where this connects to the rest of the vault.