games/kaintuck: per-leg river hazards from navigation research

games/kaintuck: per-leg river hazards from navigation research

#37 in Riparion/riparion-retro — merged 2026-06-12

Ingest Chapter 3 ("The Art of Navigation") of Baldwin's The Keelboat Age on Western Waters into RESEARCH_NAVIGATION.md and turn its §5–§8 hazard taxonomy into distinct per-leg behavior on the river phase.

Previously only the Natchez leg had its own hazard character; the other river legs all fell through to one generic phase-wide table, so the Ohio headwaters, the Grand Chain, the confluence boils, and the Chickasaw eddies all played identically.

What changed (data-only)

kaintuck.ron reuses the existing Town.hazards override and existing outcomes (sandbar/patch/bail/pirates + the spoilage/crew-grumble Specials) — no Rust, no new goods, no new minigames:

  • Six new per-leg hazard tables, each keyed to the destination so the flavor lands where the hazard physically is:
    • Wheeling / Marietta — upper-Ohio riffles & bars (sandbar weighted up, piracy near nil)
    • Shawneetown — lower-Ohio snags / planters & sawyers (patch up to 17%)
    • Cairo — confluence boils at the mouth of the Ohio (bail up to 11%)
    • Grand Tower — the Grand Chain / Devil's Bake Oven ambush (pirates 14%, rock-snag patch 12%)
    • Memphis — Chickasaw-bluff basin eddies (sandbar 15%)
  • Retuned thresholds so each named danger dominates its stretch; folk-named, eyewitness-flavored messages.
  • Enriched falls-run success/partial prose from James Hall's account.
  • Maysville / Cincinnati / Louisville stay on the phase-wide table.

Tests

  • golden_trace_is_stable re-pinned (0x617f_b5bc_5588_aa65); win/loss pattern across seeds unchanged, no new deaths.
  • scenario_parses and scenario_is_self_consistent stay green (arm counts, outcome refs, slugs, sort order validated).
  • All 41 kaintuck tests pass; per-leg distributions verified to sum to 100% via print_leg_hazards.

Version bumped 0.1.10 → 0.1.11. Also reconciles RESEARCH_BOATMEN.md chapter number (Ch.3 → Ch.2) and cross-links the new navigation file.

🤖 Generated with Claude Code

Last updated 2026-06-13