War Atlas · Method series · Paper 03
The ratio cannot be computed. What can be computed instead refutes the source that asked for it.
Abstract. An army before about 1940 moved forward, every day, a tonnage of things it needed to survive and fight. A common claim is that most of that tonnage was horse food. This paper set out to state that claim as a measured ratio for a named force and could not, and the refusal is the result. Two things are missing and neither is on this machine. There is no total supply tonnage anywhere in the estate broken down per man or per horse — ammunition, fuel, ordnance and equipment appear in no per-head row — so the only denominator available is food and fodder, which is a different and much smaller quantity. And there is no named force: the only composition on the machine is two hardcoded cells in a spreadsheet with no army attached, no date and no source. What is published instead is a class 1 corpus diagnostic — a complete census of one small, fully enumerated body of rows, making no claim about anything outside it — over all 18 rows of the logistics sheet those cells sit in. It finds that the workbook's two headline claims are both refuted by the workbook's own numbers, and that the point at which the majority claim flips is 278 horses per 1,000 men, four per cent above the ratio the workbook itself uses. This paper makes no claim about any real army, in any period. All figures are unsourced scaffold and are marked as such.
Feeding a horse is expensive in a way that is easy to state and hard to measure. A horse eats several times what a soldier eats, and an army that moves on horses is therefore an army that spends a large part of its daily carrying capacity on hay and grain rather than on bullets. That much is genuinely well established and no serious reader disputes it.
The trouble starts at the second sentence. The claim is almost always made as a share — fodder, meaning the hay and grain fed to horses and draught animals, as a fraction of total supply tonnage — and a share needs a denominator. Supply tonnage means everything moved forward to sustain a force for one day: rations, fodder, ammunition, fuel, ordnance, engineer stores, medical stores, replacement equipment. Subsistence tonnage means only the part of that which is eaten. These are not the same number and they are not close. A share computed over the second and reported as the first is not a slightly optimistic figure; it is a different quantity wearing the wrong name.
The strongest argument against publishing this refusal deserves to be stated at full strength before any data appear, because it is a good argument. It runs: everyone already knows horses dominated pre-mechanised logistics; the qualitative claim is not in doubt; refusing to give a number because the denominator is imperfect is pedantry that leaves the reader with less than they started with, and a rough figure with a caveat serves them better than a lecture about denominators.
That argument would be right if the gap here were a matter of precision. It is not. The gap is that the quantity in the numerator and the quantity in the denominator would have to come from different measurements, and one of those measurements does not exist anywhere in this estate in any form, at any confidence. The difference between the computable share and the briefed share is not a margin of error — it cannot even be bounded, because no row constrains how much ammunition and fuel a pre-mechanised army moved per head. A number with an unbounded error in a known direction is worse than no number, because it will be quoted without its qualifier.
So this paper does two things. It refuses the briefed ratio and says precisely what would unblock it. Then it publishes the thing that can be established from the same rows, which turns out to be sharper than the ratio would have been: the workbook that asserts the majority claim contains, in its own cells, the arithmetic that refutes it.
Two claims are registered. The first is the one that was briefed; it is registered so that its refusal is on the record rather than quietly dropped. The second is what the rows actually support.
For a named pre-mechanised force, fodder constitutes the majority of daily supply tonnage.
Measure class 2 — a comparison across named cases — which is what it would have been. It fails before reaching a decision rule, for two independent reasons given in §5: no total-supply denominator exists, and no named force exists. One unsourced hypothetical force is not a named set, so class 2 cannot be reached either.
The workbook's own two headline assertions about fodder are supported by the workbook's own rate rows.
Measure class 1 — a corpus diagnostic. The population is the complete set of 18 rate rows in one sheet, enumerated in full, and no claim is made about any army, any period, or any body of rows outside that sheet. It is not class 2, because the units of analysis are spreadsheet rows and not named historical forces. It is not class 3, because no population claim of any kind is made.
Claim B stands if both hold. (i) The multiple asserted in the workbook's read-me — that a horse eats roughly ten times a man — is reachable at some corner of the sheet's own food and fodder bands. (ii) The majority claim holds at both ends of the resulting share band for the only force composition the workbook supplies. Claim B is refuted if either fails. A band straddling one half is a failure of (ii), not a partial success: a quantity that is above a half at one end of its range and below it at the other has not established which side of the half it is on.
Each rate band is ratio scale — a scale with a true zero, on which division is meaningful — but only within its own unit. No arithmetic is performed across units: kilograms per day, litres per day, kilometres per day, tons per day, tons per sortie and rounds per gun are six incommensurable quantities and are never summed. rate_key is nominal. The row that reads 0–0 is not on any scale at all; it is a not-applicable, and is handled in §4 rather than averaged.
The decision rule above was written before the two tests were run, but not before the sheet had been read — the rows were read while establishing that the denominator was absent. That ordering is a real threat and is recorded as such at §6.4 rather than glossed.
Class 1 is only honest when the population is small enough to enumerate completely, so the admission rule below is a completeness rule rather than a selection rule. It is stated as numbered criteria and then applied.
logistics_rates of command-and-tactics.xlsx, below the header row.rate_key. A row with data and no key would be a defect and is checked for; none was found.=COUNTA(logistics_rates!$A$2:$A$400), a formula that counts non-empty keys, and it returns 18. The count returns 18, with zero wholly-empty rows skipped and zero rows carrying data but no key.man-food and horse-fodder. No third row was substituted after the result was seen.How the set was actually found, stated plainly. It was not found by search and it was not selected. The sheet is the population, which is the only reason a class 1 design is available here at all. One warning belongs with that, and it is the reason this paragraph exists rather than a line in a footnote: the same workbook is present at two paths on this machine, and reading both would look like corroboration. It is not. The two files are byte-identical — sha256 beginning d8af5fdf365ff1ac for both — so they are one extraction path in two coats, and are counted here as one.
Table 1 is the complete admitted set: all 18 rows, in the sheet's own order, so that the enumeration can be checked against the source line by line. Every quantity carries the unit it is measured in, the basis it is measured over, and a confidence.
Confidence is uniform and low for a stated reason. The workbook's own read-me says of these rows: "Logistics figures are order-of-magnitude bands drawn from general knowledge and need a named source before publication." Every row is therefore T0 — the estate's lowest evidence tier, meaning a figure asserted by a source rather than observed, replicated or derived. The bands are published as bands, low to high, because that is how the source gives them.
| Rate key | Measure | Band | Unit | Basis — what one unit is measured over | Confidence |
|---|---|---|---|---|---|
| man-food | Food, one soldier | 1.5–2.5 | kg per day | One man-day. Rations only; water excluded. Strength basis undeclared by the source. | T0 scaffold |
| man-water-temperate | Water, one soldier, temperate | 3–5 | litres per day | One man-day, drinking and cooking. Wet, not dry tonnage. | T0 scaffold |
| man-water-hot | Water, one soldier, hot climate | 8–15 | litres per day | One man-day in hot climate. Climate threshold undefined. | T0 scaffold |
| horse-fodder | Fodder, one horse | 9–14 | kg per day | One horse-day, hay and grain. One band over draught, cavalry and pack animals undivided, which do not eat alike. | T0 scaffold |
| horse-water | Water, one horse | 20–40 | litres per day | One horse-day. Wet, not dry tonnage. | T0 scaffold |
| march-foot | March rate, foot, sustained | 20–30 | km per day | One formation-day, sustained. Distance, not tonnage. | T0 scaffold |
| march-foot-forced | March rate, foot, forced | 40–60 | km per day | One formation-day, forced; source states not sustainable beyond a few days. | T0 scaffold |
| march-cavalry | March rate, mounted, sustained | 30–50 | km per day | One formation-day, mounted; limited by the horse, not the rider. | T0 scaffold |
| march-motor | March rate, motorised road | 150–300 | km per day | One formation-day on road, unopposed. | T0 scaffold |
| march-armour | Advance rate, armoured, opposed | 15–40 | km per day | One formation-day, opposed advance. | T0 scaffold |
| rail-throughput | Rail line throughput | 1,000–3,000 | tons per day | One line-day, single track. Capacity of a route, not consumption of a force. | T0 scaffold |
| truck-road | Road throughput, one route | 500–2,000 | tons per day | One route-day. Capacity, not consumption. | T0 scaffold |
| division-ww2-us | Supply, US infantry division in combat | 500–650 | tons per day | One division-day, all classes of supply. No men count, no horse count — cannot be decomposed into a fodder share. | T0 scaffold |
| division-ww2-ger | Supply, German infantry division | 200–300 | tons per day | One division-day, all classes; source notes substantially horse-drawn. No men count, no horse count. | T0 scaffold |
| division-napoleonic | Supply, Napoleonic corps | 0–0 | tons per day | Not applicable, written as a number. The corps lived off the country; the zero encodes "no supply column", not "zero tons". Blocked from summing, averaging and ranking. | Unusable |
| airlift-ju52 | Airlift capacity, one Ju 52 | 1.5–2 | tons per sortie | One sortie. Per-aircraft capacity, not a daily rate. | T0 scaffold |
| ammo-artillery | Artillery expenditure, active day | 20–100 | rounds per gun | One gun-day. Rounds, not tonnage — no shell weight and no gun count anywhere, so it cannot be converted to weight. This is the estate's only ammunition rate. | T0 scaffold |
| port-throughput | Deep-water berth | 1,000–3,000 | tons per day | One berth-day; source states cranes and clearance are the limit, not depth. Capacity, not consumption. | T0 scaffold |
Four rows are marked. Together they are the whole of the refusal in §5, and they can be read off the table without any argument from me. Three rows carry total supply tonnage and none of them carries a population to divide it by. The only ammunition row in the estate is in rounds per gun, with neither a shell weight nor a gun count, so it cannot be turned into weight and cannot enter a tonnage denominator. And one row writes a not-applicable as a zero, which will average and rank as though it were a measurement.
The denominator does not exist. The briefed ratio requires total supply tonnage. The only denominator computable from anything on this machine is rations plus fodder, which is subsistence tonnage. The workbook's own cell is mislabelled: summary!B25 reads =ROUND(B17*B19/(B16*B18+B17*B19),3), whose denominator is men × food plus horses × fodder, and it is captioned "Share of the tonnage that is fodder". Ammunition, fuel, ordnance and equipment appear in no per-head row anywhere in the estate. Two genuine total-supply rows exist — the US and German divisional figures in Table 1 — and neither carries a men count or a horse count, so neither can be decomposed. Writing "supply tonnage" over a subsistence denominator would produce a number that is too high by an amount nobody can bound, since no row constrains the non-subsistence classes at all.
The force composition is a demonstration cell. The only composition on this machine is summary!B16 = 15,000 men and summary!B17 = 4,000 horses: hardcoded spreadsheet inputs with no army, no date, no source and no declared strength basis. A search across every workbook in the reference directory for horse, fodder, mule, wagon, forage and remount returns no other animal count — every other mention is a rate or a qualitative remark. The atlas database cannot supply one either: across its 163 tables there is no supply, logistics or animal table, and the 29 strength rows mentioning cavalry, horses, mules or wagons are all parse_status = 'unparsed', all scale = 'structural', all with unit null — the database itself declines to treat them as numbers. Cavalry troopers would in any case be a floor on horses of unknown looseness, since it omits draught, pack, remounts and the baggage train.
Neither ground can be closed by finding one citation. The second needs one good source; the first needs an entire tonnage column that does not exist. Both are itemised as unblocking conditions in §7.
Both limbs of the decision rule fail. Claim B is refuted.
Limb (i) fails. The read-me asserts, in prose, that "a horse consumes roughly ten times a man, so in any pre-1940 army the majority of the supply tonnage feeds animals, not soldiers." Divide the sheet's own fodder band by its own food band and the achievable multiple runs from 9 ÷ 2.5 = 3.6 at the least favourable corner to 14 ÷ 1.5 = 9.333 at the most favourable. Ten is not reachable at any corner of the workbook's own bands. The assertion is not merely unsourced; it is contradicted by the rows printed four tabs away from it. This was parsed from the read-me cell by the instrument, not transcribed by hand.
Limb (ii) fails. On the workbook's own composition, the animal share of subsistence tonnage is 0.4898 to 0.7134. That band straddles one half. At the low end fodder is a minority of even the subsistence tonnage; at the high end it is a clear majority. The workbook's own summary cell reports a single point, 0.595, and names no end of any band it came from — so the reader is handed a number that appears settled from a range that is not.
| Quantity | Value | Basis — numerator over denominator | Confidence |
|---|---|---|---|
| Subsistence tonnage | 58.5–93.5 t/day | (men × rations) + (horses × fodder), on 15,000 ration-strength men and 4,000 undivided horses. Ration strength — every mouth drawing a ration, sick, attached and non-combatant included — is declared by the instrument and by nothing in the workbook. | Exact on T0 inputs |
| — single point | 76.0 t/day | Midpoint of both input bands. Coincides with the midpoint of the output band, because the quantity is linear in its inputs. | Exact, linear |
| Animal share of subsistence | 0.4898–0.7134 | Horse-days of fodder, over horse-days of fodder plus man-days of rations. Horse count undivided between draught, cavalry and pack; man count carries no declared strength basis. | Exact on T0 inputs |
| — single point | 0.6053 | Ratio of the input midpoints. The midpoint of the output band is 0.6016; they differ by 0.0037 because a ratio of midpoints is not the midpoint of a ratio band. The gap travels with the figure. | Exact, non-linear — carries a warning |
| Fodder-to-food per head | 3.6–9.333 | kg per horse-day over kg per man-day, dimensionless. Like-for-like midpoint 5.75; the midpoint of the band itself is 6.4665, and the two differ for the same reason as above. | Exact on T0 inputs |
| Multiple asserted in prose | 10 | Read-me assertion, no source, no derivation. Outside the band above at both corners. | T0, refuted by its own rows |
| Water | 125–235 m³/day | Same composition. Held separate from dry tonnage and never added to it. | Exact on T0 inputs |
| Flip threshold, both corners | 277.8 horses / 1,000 men | Exact rational arithmetic on the two rate bands only: share exceeds one half at every corner when H/M > 2.5 ÷ 9 = 5/18. Needs no force composition. | Structural — exact |
| Flip threshold, best corner | 107.1 horses / 1,000 men | Same arithmetic at the most favourable corner: H/M > 1.5 ÷ 14 = 3/28. | Structural — exact |
| The workbook's composition | 266.7 horses / 1,000 men | Cells B17 ÷ B16. No army, no date, no source. Sits 4% below the 277.8 threshold. | None — demonstration cell |
| Fodder share of total supply | — | Refused. No total-supply denominator exists per man or per horse. Lower than the subsistence share by an amount no row on this machine can bound. | Not computable |
The threshold in Table 2 is the one figure in this paper that survives every objection raised against the rest of it, because it is a property of the two rate bands alone and needs no force composition whatsoever. Write the share as fodder tonnage over fodder plus ration tonnage. It exceeds one half at both ends of the band exactly when the horses-per-man ratio exceeds 2.5 ÷ 9 — the worst case, where horses eat least and men eat most — which is 5/18, or 278 horses per 1,000 men. Below about 107 per 1,000 it fails even at the most generous corner. Between those two figures lies a region where the workbook's headline claim is neither true nor false but undetermined by the workbook's own numbers.
It is the force composition, and it belongs here in the body rather than in a note, because it is the row that most damages the paper's own source. The workbook asserts the majority claim, and then supplies a composition that does not satisfy it. Its own 267 horses per 1,000 men sits four per cent below the 278 at which the claim would hold at both corners. Push the horse count from 4,000 to 5,000 and the band becomes 0.5455 to 0.7568, entirely above one half, and the claim is settled. At 4,000 it is not. The workbook's headline claim therefore flips inside a region that nobody sourced — neither the composition nor the rate bands has a citation — and it lands, by whatever accident produced a round 4,000, on the wrong side.
Two further rows fit badly enough to name. division-napoleonic carries 0–0 tons per day, which is a not-applicable written as a number: the corps lived off the country and had no supply column to measure, and a zero standing in for that will sum, average and rank as a real measurement in any downstream use. And summary!B19, the fodder constant, is 11.0 while declaring itself the midpoint of its own 9–14 row, which is 11.5. That is a constant asserting a derivation it does not satisfy, and it is precisely the operand the headline share rests on. Both were caught by the instrument's audit pass rather than by reading.
The qualitative proposition — that animals consumed a large share of a pre-mechanised army's daily tonnage — is not touched by any of this. Nothing here shows it to be false. What is shown is narrower and, for the estate's purposes, more useful: the specific quantitative form of it that circulates in this workbook is not supported by this workbook, and the arithmetic needed to settle the question has never been done here, on any army, with any source. Three separate cells across two workbooks restate the same assertion — the read-me, the resources sheet's "a horse eats roughly ten times a man; fodder dominates tonnage", and the material-layer workbook's "an army's horses eat more tonnage than its men". Those are three coats on one recollection, not three attestations. Counting them as corroboration would be the same error as reading the two byte-identical workbook files as two sources.
ops/command_supply.py, whose gate passes 16 checks with zero violations and whose drill is 27 of 27 with 9 positive controls and 18 red-team cases that each prove a specific guard can fail. That is a real defence and it is not sufficient. Its guards test the shapes actually present in this workbook; a defect of a shape nobody imagined passes all of them silently, and every catalogued failure is one that was caught, so the catalogue understates by an unknown amount. The source checks test structure, never truth: a plausible fabrication passes every one of them.attested_absent rows, and rows six and seven record exactly analogous quantity-absences — Arrian giving no army total for Alexander at the Hydaspes, Chavannes giving no army size at Changping. No row records the absence of a logistics or animal-count layer. Until one exists, the next reader of the atlas has nothing to tell them this gap was ever looked for, which is how an absence gets rediscovered instead of remembered.Stated so that a reader without access to this machine can check each one.
logistics_rates sheet whose COUNTA returns a number other than 18, or a count returning a different number of rows from the same file, would break the completeness on which the class 1 design rests.Claim A is retired to refused_for_want_of_denominator. It is reinstated only when item 1 and item 2 above are both satisfied — not one of them, because either alone leaves a computable-looking number with an uncomputable error. Claim B is retired to refuted_by_its_own_source, and would be reinstated by a corrected sheet in which the asserted multiple falls inside the published bands and the supplied composition exceeds 278 horses per 1,000 men.
Neither claim is to be softened into a hedged version of itself. A retitled quantity is acceptable and is what §5.2 publishes: fodder share of subsistence tonnage, which is a real quantity honestly named. A share over a subsistence denominator described as a share of supply is not a rougher answer to the same question. It is an answer to a different one.
The 18 admitted rows live in the sheet logistics_rates of command-and-tactics.xlsx, present at two byte-identical paths on this machine and counted as one source. The force composition and the audited calculator cells are in the summary sheet of the same file, at B16 to B27. The absence findings are from war-atlas/db/atlas.db: 163 tables holding no supply, logistics or animal table, and 29 strength rows mentioning cavalry, horses, mules or wagons, every one of them parse_status = 'unparsed', scale = 'structural' and unit null.
Status: refusal published, figures pending source verification. Every band in Table 1 and every input to Table 2 is T0 scaffold on the workbook's own statement about itself, and none of it should be cited as a fact about any army. What can be cited is the structure: that the sheet contains 18 rows, that its asserted multiple of ten lies outside its own bands, that its majority claim is undetermined at its own composition, and that the threshold at which the claim becomes determinate is 278 horses per 1,000 men. Those four statements survive the sourcing problem entirely, because each is a property of the arithmetic rather than of the world.
One outstanding item is owed to the atlas and is recorded here so it is not lost: no attested_absent row exists for the missing logistics and animal-count layer, though the mechanism for recording exactly that kind of absence is already in use for army totals at the Hydaspes and Changping. The absence has been noted to the ledger; it has not yet been written to the atlas, and until it is, this paper is the only thing on the machine that knows the gap was looked for.
War Atlas method series, paper 03 · dylanvir.com/war · Registered 2026-09-09 · Class 1 — a corpus diagnostic over 18 enumerated rows. This paper makes no claim about any army, any period, or any population of forces. Claim A is refused; Claim B is refuted by its own source. Figures pending source verification.