From 60a0c2746f411bd7baf5f1a1faed9de23c71380d Mon Sep 17 00:00:00 2001 From: daniel Date: Sun, 22 Feb 2026 22:38:08 +0000 Subject: [PATCH] Enrich Battle of Cannae: fix duplicate title, add Carthaginian losses, cavalry commanders, survivors, Maharbal quote, Zama connection, archaeology section --- .automate/.improve-state.tsv | 1 + .automate/continuous-improve.log | 8 +++ .automate/improve-history.log | 3 ++ .factbase/factbase.db-shm | Bin 32768 -> 32768 bytes .factbase/factbase.db-wal | Bin 4152992 -> 4152992 bytes battles/battle-of-cannae.md | 81 +++++++----------------------- logs/mcp-puppeteer-2026-02-22.log | 2 + 7 files changed, 33 insertions(+), 62 deletions(-) diff --git a/.automate/.improve-state.tsv b/.automate/.improve-state.tsv index a02b99a..3d94bac 100644 --- a/.automate/.improve-state.tsv +++ b/.automate/.improve-state.tsv @@ -2,3 +2,4 @@ 06d51f 1771799636 25cc1e 1771799702 4fb0a1 1771799764 +009548 1771799832 diff --git a/.automate/continuous-improve.log b/.automate/continuous-improve.log index dd0f847..b945087 100644 --- a/.automate/continuous-improve.log +++ b/.automate/continuous-improve.log @@ -570,3 +570,11 @@ To https://gitea.home.everyonce.com/daniel/factbase-ancient-history.git [?25h status: UPDATED | Ramesses II | changes: Fixed duplicate H1 heading; added birth year (~1303 BCE), regnal name (Usermaatre Setepenre), Greek name (Ozymandias), principal wife (Nefertari), tomb (KV7), Ramesseum mortuary temple, Levant/Nubia campaign details, mummy health findings, "Great Ancestor" epithet, and recent Sorbonne sarcophagus identification; added footnotes [^3] (Wikipedia) and [^4] (Ancient Origins 2025) +[main ae585b8] improve: Ramesses II + 2 files changed, 94 insertions(+) +[2026-02-22 22:37:12] ✅ Committed: improve: Ramesses II +[2026-02-22 22:37:12] Done (62s) — UPDATED +[2026-02-22 22:37:17] [6/66] Next up... +[2026-02-22 22:37:17] ━━━ [Battle of Cannae] (05754a) reviews=0 garbage=0 ━━━ +[2026-02-22 22:37:17] 🧹 Bash cleanup applied +[2026-02-22 22:37:17] 🔍 Enrichment + review pass diff --git a/.automate/improve-history.log b/.automate/improve-history.log index e7316ed..08e07c9 100644 --- a/.automate/improve-history.log +++ b/.automate/improve-history.log @@ -10,3 +10,6 @@ [2026-02-22T22:36:04+00:00] 4fb0a1 | Augustus status: UPDATED | Augustus | changes: fixed duplicate # heading, corrected malformed @t[=14] to @t[=0014], removed answered review queue section, added wife/children facts, added Succession section with Julio-Claudian dynasty info, added religious and social reform details (pontifex maximus, Lex Julia, Ara Pacis, Ludi Saeculares), added two new scholarly footnotes from World History Encyclopedia duration: 56s +[2026-02-22T22:37:12+00:00] 009548 | Ramesses II + status: UPDATED | Ramesses II | changes: Fixed duplicate H1 heading; added birth year (~1303 BCE), regnal name (Usermaatre Setepenre), Greek name (Ozymandias), principal wife (Nefertari), tomb (KV7), Ramesseum mortuary temple, Levant/Nubia campaign details, mummy health findings, "Great Ancestor" epithet, and recent Sorbonne sarcophagus identification; added footnotes [^3] (Wikipedia) and [^4] (Ancient Origins 2025) + duration: 62s diff --git a/.factbase/factbase.db-shm b/.factbase/factbase.db-shm index 1891051b3ca3de445e4311742362dadfda45e008..d26ac124bd2f36f3d7994dd8e42f831d4271b66b 100644 GIT binary patch delta 345 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 HrT_dN`h?;8 delta 12433 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 We5K&a!I!|7#Fxqv-BP>%=l=j_P9Pru diff --git a/battles/battle-of-cannae.md b/battles/battle-of-cannae.md index bcd99ec..5226ae0 100644 --- a/battles/battle-of-cannae.md +++ b/battles/battle-of-cannae.md @@ -1,85 +1,42 @@ # Battle of Cannae -# Battle of Cannae - ## Overview The Battle of Cannae (216 BCE) was Hannibal Barca's masterpiece — a devastating double envelopment of a much larger Roman army during the Second Punic War. It remains one of the most studied tactical victories in military history. ## Key Facts - Date: 2 August 216 BCE -- Location: Cannae, Apulia (southeastern Italy) +- Location: Cannae, Apulia (southeastern Italy), near the River Aufidus (modern Ofanto) - Belligerents: Carthage vs. Roman Republic - Commanders: Hannibal Barca (Carthage), Lucius Aemilius Paullus and Gaius Terentius Varro (Rome) - Result: Decisive Carthaginian victory [^1] ## The Battle -- Romans: ~86,000; Carthaginians: ~50,000 -- Hannibal placed his weakest troops in a convex center, with veteran infantry and cavalry on the flanks +- Romans: ~70,000–86,000; Carthaginians: ~40,000–50,000 [^3] +- Hannibal placed his weakest troops (Gauls and Iberians) in a convex center, with veteran African infantry and cavalry on the flanks - Roman advance pushed the center back into a concave shape, drawing them in - Carthaginian flanks and cavalry closed the trap in a complete double envelopment -- Roman losses: ~50,000–70,000 killed — the worst single-day defeat in Roman history [^2] +- Hasdrubal commanded the Carthaginian heavy cavalry; Maharbal led the Numidian cavalry [^3] +- Roman losses: ~50,000–70,000 killed — the worst single-day defeat in Roman history [^2]; ~10,000 captured; survivors (~14,000) fled to Canusium +- Carthaginian losses: ~6,000, mostly the Gauls who formed the front lines [^1] +- Consul Paullus was killed in the battle; Varro survived and returned to Rome [^1] + +## Aftermath +After the battle, Maharbal reportedly urged Hannibal to march immediately on Rome, saying he could "dine on the Capitol in five days." Hannibal declined, prompting Maharbal's famous rebuke: "You know how to win a victory, Hannibal; you do not know how to use one." [^1] + +Rome refused to negotiate or ransom prisoners. Emergency levies were raised and slaves were armed. Quintus Fabius Maximus Verrucosus (*cunctator*, "the Delayer") was restored to prominence and his strategy of attrition was finally embraced. ## Legacy - Hannibal's double envelopment became the gold standard of tactical warfare - Despite the victory, Hannibal could not take Rome itself - Rome eventually adopted Fabian attrition strategy and won the war +- Scipio Africanus later used Hannibal's own encirclement tactics to defeat him at the Battle of Zama (202 BCE), ending the Second Punic War [^1] +- Cannae is still studied in military academies worldwide as a model of operational art [^2] + +## Archaeology +Archaeological investigations near Cannae have uncovered weapon fragments, sling bullets, coinage, and scattered human remains. Precise mass graves described in ancient sources remain debated, as centuries of agriculture have altered the flat landscape. Material evidence supports large-scale conflict but cannot confirm exact casualty figures. [^3] --- -[^1]: Polybius, *Histories* 3.107–117 +[^1]: Polybius, *Histories* 3.107–117; Mark, J.J. "Battle of Cannae." *World History Encyclopedia*, 24 March 2020. https://www.worldhistory.org/Battle_of_Cannae/ [^2]: Goldsworthy, A. *Cannae: Hannibal's Greatest Victory* (2001) ---- - -## Review Queue - - -- [x] `@q[temporal]` Line 10: "Date: 2 August 216 BCE" - when was this true? -> Static historical fact. Battle occurred 2 August 216 BCE. No temporal tag needed. -- [x] `@q[temporal]` Line 11: "Location: Cannae, Apulia (southeastern Italy)" - when was this true? -> Static historical fact. No temporal tag needed. -- [x] `@q[temporal]` Line 12: "Belligerents: Carthage vs. Roman Republic" - when was this true? -> Static historical fact. No temporal tag needed. -- [x] `@q[temporal]` Line 13: "Commanders: Hannibal Barca (Carthage), Lucius Aemilius Paullus and Gaius Tere..." - when was this true? -> Static historical fact. No temporal tag needed. -- [x] `@q[temporal]` Line 14: "Result: Decisive Carthaginian victory [^1]" - when was this true? -> Static historical fact. No temporal tag needed. -- [x] `@q[temporal]` Line 17: "Romans: ~86,000; Carthaginians: ~50,000" - when was this true? -> Static historical fact. Troop estimates for the battle. No temporal tag needed. -- [x] `@q[temporal]` Line 18: "Hannibal placed his weakest troops in a convex center, with veteran infantry ..." - when was this true? -> Static historical fact. Tactical description of the battle. No temporal tag needed. -- [x] `@q[temporal]` Line 19: "Roman advance pushed the center back into a concave shape, drawing them in" - when was this true? -> Static historical fact. No temporal tag needed. -- [x] `@q[temporal]` Line 20: "Carthaginian flanks and cavalry closed the trap in a complete double envelopment" - when was this true? -> Static historical fact. No temporal tag needed. -- [x] `@q[temporal]` Line 21: "Roman losses: ~50,000–70,000 killed — the worst single-day defeat in Roma..." - when was this true? -> Static historical fact. No temporal tag needed. -- [x] `@q[temporal]` Line 24: "Hannibal's double envelopment became the gold standard of tactical warfare" - when was this true? -> Static historical fact / enduring scholarly assessment. No temporal tag needed. -- [x] `@q[temporal]` Line 25: "Despite the victory, Hannibal could not take Rome itself" - when was this true? -> Static historical fact. No temporal tag needed. -- [x] `@q[temporal]` Line 26: "Rome eventually adopted Fabian attrition strategy and won the war" - when was this true? -> Static historical fact. Rome won the Second Punic War in 201 BCE. No temporal tag needed. -- [x] `@q[missing]` Line 10: "Date: 2 August 216 BCE" - what is the source? -> Source: Polybius, Histories 3.107-117 [^1]. Primary source. -- [x] `@q[missing]` Line 11: "Location: Cannae, Apulia (southeastern Italy)" - what is the source? -> Source: Polybius, Histories 3.107 [^1]. -- [x] `@q[missing]` Line 12: "Belligerents: Carthage vs. Roman Republic" - what is the source? -> Source: Polybius, Histories 3.107 [^1]. -- [x] `@q[missing]` Line 13: "Commanders: Hannibal Barca (Carthage), Lucius Aemilius Paullus and Gaius Tere..." - what is the source? -> Source: Polybius, Histories 3.107 [^1]; Livy, Ab Urbe Condita 22.44-49. -- [x] `@q[missing]` Line 17: "Romans: ~86,000; Carthaginians: ~50,000" - what is the source? -> Source: Polybius, Histories 3.107 [^1]; Goldsworthy (2001) [^2]. Ancient estimates vary. -- [x] `@q[missing]` Line 18: "Hannibal placed his weakest troops in a convex center, with veteran infantry ..." - what is the source? -> Source: Polybius, Histories 3.113-115 [^1]. -- [x] `@q[missing]` Line 19: "Roman advance pushed the center back into a concave shape, drawing them in" - what is the source? -> Source: Polybius, Histories 3.115 [^1]. -- [x] `@q[missing]` Line 20: "Carthaginian flanks and cavalry closed the trap in a complete double envelopment" - what is the source? -> Source: Polybius, Histories 3.116 [^1]. -- [x] `@q[missing]` Line 24: "Hannibal's double envelopment became the gold standard of tactical warfare" - what is the source? -> Source: Goldsworthy (2001) [^2]; Clausewitz and subsequent military theorists studied Cannae extensively. -- [x] `@q[missing]` Line 25: "Despite the victory, Hannibal could not take Rome itself" - what is the source? -> Source: Polybius, Histories 3.117 [^1]; Livy 22.51. -- [x] `@q[missing]` Line 26: "Rome eventually adopted Fabian attrition strategy and won the war" - what is the source? -> Source: Polybius, Histories 3.89-90 [^1]; Livy 22.8-12 (Fabius Maximus' strategy). -- [x] `@q[stale]` Line 21: "Roman losses: ~50,000–70,000 killed — the worst single-day defeat in Roma..." - Goldsworthy source from 2001 may be outdated, is this still accurate? -> Goldsworthy (2001) remains a standard reference on Cannae. The casualty estimate of 50,000-70,000 is consistent with Polybius and Livy and is still the scholarly consensus. Still accurate. \ No newline at end of file +[^3]: "Forces, Tactics and Archaeology." *Seven Swords*, 2026. https://sevenswords.uk/battle-of-cannae/ \ No newline at end of file diff --git a/logs/mcp-puppeteer-2026-02-22.log b/logs/mcp-puppeteer-2026-02-22.log index d616bc7..64f9103 100644 --- a/logs/mcp-puppeteer-2026-02-22.log +++ b/logs/mcp-puppeteer-2026-02-22.log @@ -46,3 +46,5 @@ {"level":"info","message":"Starting MCP server","service":"mcp-puppeteer","timestamp":"2026-02-22 22:36:12.664"} {"level":"info","message":"MCP server started successfully","service":"mcp-puppeteer","timestamp":"2026-02-22 22:36:12.668"} {"level":"info","message":"Puppeteer MCP Server closing","service":"mcp-puppeteer","timestamp":"2026-02-22 22:37:10.952"} +{"level":"info","message":"Starting MCP server","service":"mcp-puppeteer","timestamp":"2026-02-22 22:37:19.950"} +{"level":"info","message":"MCP server started successfully","service":"mcp-puppeteer","timestamp":"2026-02-22 22:37:19.952"}