The reroute
One flow, moving between two rows — Bab el-Mandeb falling as the Cape of Good Hope rises, in the same period.
the reroute
One flow, moving between two rows
Traffic left the Red Sea and went round the Cape. The two rows move in opposite directions and the difference is paid in DAYS, which is why this pair belongs on a timetable and not on a volume chart.
why no difference is stated
8.7 - 4.0 and 9.2 - 6.0 are not the same 4.7 and 3.2 barrels. The figures come from different reporting periods in one brief and the rows overlap by construction. The direction of each pair is the finding; the difference between them is not a quantity.
where these four numbers come from
Not from a column. The chokepoint schema holds a single mb_d at a single as_of and has no before/after pair at all, so the exporter read the slope out of free text. Both source sentences are reprinted whole — including the parts the slope does not use — so the parse can be checked against the prose it came from rather than trusted.
- Bab el-Mandeb[T3 · BRIEF-2026-09-08C · unverified · unresolved]
- “Fell from 8.7 mb/d in 2023 to 4.0 through August 2024 as traffic went round the Cape at roughly ten extra days. Reported back up to 8.1 with Saudi crude rerouted through the East-West pipeline to Yanbu — that last figure is the least attested in the table.”
parsed as 8.7 → 4.0, fell The same row’s storedmb_dis 4.2, which matches no figure in its own note. Neither field is wrong on its face — they are as-of different moments — but a reader who takes the column and the note as one measurement is combining two, so the stored value is drawn detached rather than as the end of the line. The note also reports 8.1 and calls that figure the least attested in the table. It is drawn as a detached ghost ring and joined to nothing. - Cape of Good Hope[T3 · BRIEF-2026-09-08C · unverified · unresolved]
- “The release valve itself. Rose from 6.0 to 9.2 as the Red Sea fell.”
parsed as 6.0 → 9.2, rose The same row’s storedmb_dis 9.1, which matches no figure in its own note. Neither field is wrong on its face — they are as-of different moments — but a reader who takes the column and the note as one measurement is combining two, so the stored value is drawn detached rather than as the end of the line.
parser controls · positive 'rose from 6.0 to 9.2' -> [6.0, 9.2] · negative '... in 2025' -> [] (a bare year is not a volume) · PASS - the comparison can fire and can stay quiet, so a flag below is about the row
the weaker argument, named and not used
There is a second route to this conclusion: these volumes sum to more than world seaborne oil trade, so they must be counting the same cargo twice. It is not made here, and it is the weaker one. It reaches outside this table for a denominator built by someone else to a different definition of what counts, so a reader can always answer it with your total is wrong and nothing in this atlas can settle that. The reroute needs no outside number at all. It is two rows in this table moving against each other, in one period, with the falling row’s own note naming where the traffic went. That is why the sum appears nowhere on this page.
- the rule
- mb/d is NEVER summed, stacked, totalled or put in a pie.
- why
- One Gulf-to-Europe voyage transits Hormuz AND Bab el-Mandeb AND Suez and is counted at all three. A total would count that cargo three times and would not say so.
- how volume is encoded in the table
- Criticality is the ranked and coloured field on this page. Volume appears as a numeral beside its as_of date and is given no length, area or angle - nothing a reader can add up by eye.
- criticality is not volume
- Malacca carries the most at 23.2 mb/d and rates MODERATE; Hormuz carries less at 20.9 and rates VERY HIGH, because no maritime alternative exists. Sizing these by volume would invert the only ranking that matters.
- and how it is encoded on the figure above
- Differently, and the sentence beside this one is about the table, not the slope. The slope does give volume a vertical position and a slope angle, on one shared axis holding two rows, so a reader can compare Bab el-Mandeb and Cape of Good Hope by height. That is deliberate — comparable steepness is the finding — and it is volume, not rank. Nothing is sized by volume, no total is drawn, and criticality travels with each plotted row in words so the height is never mistaken for the ranking.
what each row says it double-counts with
Printed as the column holds it, in both directions. double_counts_with is not reciprocal in this table. Hormuz names Bab el-Mandeb and Suez; neither names Hormuz back. A reader who de-duplicates by reading the field from one side gets a different answer from a reader who reads it from the other, so the relation is published as declared and NOT symmetrised here.
that sentence names one of the declaring rows · the one-way declarations are made by Cape of Good Hope and Strait of Hormuz, counted from the rows and listed in full below
| gate | mb/d · as of | alternative | criticality | declares it double-counts with | tier · source |
|---|---|---|---|---|---|
| Strait of Hormuz | 20.9 · 2025-H1 | none | very high | Bab el-Mandeb, Suez Canal and SUMED | T3 · BRIEF-2026-09-08C |
| Danish Straits | 4.9 · 2025-H1 | far | high | not recorded — which is not “none exists” | T3 · BRIEF-2026-09-08C |
| Suez Canal and SUMED | 4.9 · 2025-H1 | far | high | Bab el-Mandeb | T3 · BRIEF-2026-09-08C |
| Bab el-Mandeb | 4.2 · 2025-H1 | far | high | Suez Canal and SUMED | T3 · BRIEF-2026-09-08C |
| Turkish Straits | 3.7 · 2025-H1 | none | high | not recorded — which is not “none exists” | T3 · BRIEF-2026-09-08C |
| Panama Canal | 2.3 · 2025-H1 | far | high | not recorded — which is not “none exists” | T3 · BRIEF-2026-09-08C |
| Strait of Malacca | 23.2 · 2025-H1 | close | moderate | not recorded — which is not “none exists” | T3 · BRIEF-2026-09-08C |
| Cape of Good Hope | 9.1 · 2025-H1 | n a | low | Bab el-Mandeb, Suez Canal and SUMED | T3 · BRIEF-2026-09-08C |
4 of the declared pairs are one-way. CP-CAPE → CP-BABMANDEB · CP-CAPE → CP-SUEZ · CP-HORMUZ → CP-BABMANDEB · CP-HORMUZ → CP-SUEZ. The relation is published exactly as declared and is not symmetrised, because reading it from one side would silently answer a question the table never settled.
what this page cannot show you
- One witness, not two. Neither table carries a verification column. Every one of the 15 rows traces to BRIEF-2026-09-08C and to nothing else, so the T2 and T3 tiers here are SELF-DECLARED BY ONE BRIEF. Two figures from one source are one witness, and finding a second document that repeats this brief would not change that. Single-source dependence is a permanent property of these rows, not a field waiting to be revised upward.
- Tiers, counted. 6 at T2, 9 at T3 across 15 rows, from 1 distinct source reference (BRIEF-2026-09-08C). 0 verified. Neither table carries a verification column, so that zero is a fact about the schema and not a count of failed checks.
- The source reference resolves to nothing. 1 of 1 source_ref values resolve to no row in source / source_register / source_doc (1532 rows searched). The badge on every figure here is an identifier internal to this brief, not a citation that can be retrieved. danglingReferences validates double_counts_with ids against chokepoint.id ONLY. It never reads source_ref, so its empty list is not a clean bill for the citations printed on this page. The integrity block above reports 0 dangling references, and that number is about double_counts_with ids checked against chokepoint.id. This check does NOT read source_ref - see sourceRefResolution. A green tick on a check that cannot see the field is not a clean bill, so the resolver carries its own positive control: 'cliopatria' resolves in source_register (1 rows) - the resolver can find a reference that exists, so an unresolved verdict below is about the reference and not about the search.
- The tier gate ran. 15 rows examined across chokepoint and route_corridor, 0 excluded. PASS - admit() was handed a row declared T0 and refused it, and 1 genuinely T0 row(s) exist elsewhere in atlas.db, so the zero below is a fact about these two tables rather than a gate that never ran
- No route is drawn here, and none could be. A corridor is not a straight line between its two nodes: the volta do mar and the Brouwer route sail away from the destination and are shorter in time for it, so a straight segment would make the record look like a mistake. This atlas holds a coordinate for almost none of the names in these tables. The only length in the reroute record is roughly ten extra days round the Cape — a duration.
- And the part that cannot be foreclosed. Two rows agreeing about a reroute, both drawn from one brief, would look exactly like this whether the reroute happened or the brief was wrong about it. Internal consistency is what is shown. Nothing on this page can distinguish it from corroboration, and no further reading of this table will.
generated by war-atlas db/export_routes.py on 2026-09-08 · recompute · python db/export_routes.py · this component reads only the committed payload and queries nothing