Dylanvir
Nevada

the atlas audit · ran 2026-08-30

The thesis was half right, and the wrong half was wrong backwards

A claim was put to this volume: that the War Atlas systematically undercounts irregular warfare, because its unit is the named battle, and raid warfare does not generate names. It was tested against all 344 rows of the corpus, read-only, by reviewers working independently of the person who proposed it.

The event deficit is real. The reason given for it was wrong, the direction of the distortion was wrong, and underneath both sat a plainer problem that neither the thesis nor its proposed fix would have touched.

rows per conflictn = 344

The atlas counts Gettysburg twice and the Snake War once

Wars of the Roses13all of sub-Saharan Africa8Great Sioux War2Snake War1once

reading itBars are scaled to the whole 344-row corpus, so the grey is everything each conflict is not. Gold marks the two Indian wars.

what it showsA dynastic conflict in a few English counties holds 13 rows. The deadliest Indian war in the trans-Mississippi West holds 1. All of sub-Saharan Africa holds 8 — fewer than the Wars of the Roses. Europe is 54% of the corpus; irregular warfare is 4%. The deficit is not in dispute. Everything after this is about what causes it.

And 13 duplicate pairs exist — every one of them a canonical named engagement, counted twice.

rows per thousand casualtiesn = 2

Per death recorded, irregular war is over-represented — not under

irregular — 3.3 rows / 1,000 dead1onceset-piece — 0.018 rows / 1,000 dead1once

predictedThat indexing on named battles undercounts irregular warfare relative to its human cost — so irregular conflicts should carry fewer rows per death than set-piece ones.

foundThe opposite, by roughly 183×. Median rows per thousand casualties: 3.3 irregular against 0.018 set-piece. One Waterloo row absorbs about 55,000 deaths; one Somme row absorbs about 1,100,000. A name is cheap in a small war and expensive in a large one — so both distortions are real, they run in opposite directions on the same axis, and a row count weights neither correctly. What is under-represented is events, duration and geography — not deaths.

⚠ n = 2. Counts rather than percentages throughout — a percentage implies a precision 2 rows do not have. 🔴 The strongest caveat on this page. There are 0 casualty columns anywhere in the atlas and 330 strength rows that parse to no number, so every denominator here is external and unverified. Order-of-magnitude illustration only. It is enough to refute a direction; it is not enough to state a rate.

what the reviewers found underneath

Repairing the floor under a missing wall

The demonstrated deficit is not a grain problem at all. 13 canonical engagements — named, dated, mapped, heavily sourced, and admitted by the existing battle rule with no amendment whatsoever — were simply never entered.

  • Sand Creek
  • Bear River
  • Washita
  • Palo Duro Canyon
  • Marias
  • Camp Grant
  • Bear Paw
  • Beecher Island
  • Wagon Box
  • Apache (any)
  • Nez Perce (any)
  • Seminole (any)
  • Navajo / Long Walk

Bear River is by most counts the largest single massacre of Native people in United States history. It is not in the atlas. Neither is Sand Creek. Building a sub-battle class to fix the under-representation of irregular war, while those sit unentered at the coarse grain, is repairing the floor under a missing wall. Enter the missing battles first. The schema fix is second, and may prove unnecessary.

the proposed fix, not adopted

A schema that would have produced the claim its prose refused to make

The replacement schema carries a subsistence-destruction action form and no field for the authority an action was taken under. An officer acting on his own initiative and one executing an articulated winter doctrine produce byte-identical rows. Count that form over time and a rising curve appears — an artefact of the schema’s silence, indistinguishable from a finding about doctrine.

Both of its guard functions were executed and both fail. comparable() checks metric and sides but not scope, so two one-side counts from opposing forces sum clean. And it has zero callers anywhere in the repository — NOT ADOPTED — guards fail, authority field missing. Minimum before use: standingOrderRef and initiative.

the correct statement of the effect

The atlas indexes on NAMES, and a name is cheap in a small war and expensive in a large one. Set-piece warfare concentrates enormous mortality into a single nameable day, so one row absorbs 50,000 deaths. Raid warfare spreads small mortality across hundreds of unnameable days, so one row absorbs four years. BOTH distortions are real, they run in OPPOSITE directions on the same axis, and a row count weights neither correctly. What is under-represented is events, duration and geography — not deaths.

50%of the corpus has zero recorded belligerent sides, so the atlas’s own stated unit — one row per named battle with two sides — is false of half its rows. The typed engagement table defines punitive_raid and contains 0 of them. Miscodes found, and left on the record rather than quietly fixed: Little Bighorn typed `siege` with commander_idiom_ok = 1; Plataea, a land battle, typed `naval_action`; 13 of the 15 irregular rows are not typed at all.