kaintuck: Trace-phase banter & hazard tuning

kaintuck: Trace-phase banter & hazard tuning

#50 in Riparion/riparion-retro — merged 2026-06-14

Two small kaintuck Trace-phase fixes, both engine-only (bumps kaintuck-engine 0.1.1 → 0.1.3).

1. Silence shared-world river gossip on the Trace (a20490c)

Trader gossip from the shared-world feed is news of river trades, but voice_trader_gossip wasn't phase-gated the way authored crew beats are — so dockside chatter kept narrating to a crew walking the overland Trace. Gated the single chokepoint to Phase::River: off the water it returns false without draining, so both call sites fall through to authored Trace beats and the CAP-bounded feed simply goes unvoiced (the Trace is the last phase, so it's never drained later anyway).

Offline single-player has no feed, so this is behavior-neutral there and the golden trace is unchanged (no re-pin). Added a regression assertion that a queued event stays silent and undrained on the Trace.

2. Retune Trace hazards toward outlaws over sickness (18bb31f)

Shifted the Trace hazard-table band widths from illness to brigands:

Outcome Type Before After
mason (Mason's men, gunpoint) brigand 8% 14%
dose (swamp fever) illness 10% 6%
swamp (mud crossing) terrain 16% 14%
clean 44% 44%

Total hazard load unchanged, so the road is no deadlier overall — just more lawless than feverish. The RNG stream is untouched (same uniform() draws); only which arm each Trace roll lands in moves. Verified by diffing print_golden_trace that the drift is confined to Trace| lines (River phase byte-identical) and the fixture still ends in the same Victory; re-pinned golden_trace_is_stable accordingly.

Verification

  • cargo test -p kaintuck-engine — 77 pass
  • cargo check --workspace — clean

🤖 Generated with Claude Code

Last updated 2026-06-15