kaintuck: log market reports to a notification center

kaintuck: log market reports to a notification center

#58 in Riparion/riparion-retro — merged 2026-06-16

What

The trader's name in the upper-left status bar becomes a badge button. Market reports — the wharf-factor reality line, the rumor payoff (held/wind), the next-leg price tip, and (multiplayer-only) trader gossip — now log to a per-run notification center instead of stacking up as one-at-a-time popups on every arrival.

Tapping the name drops a sheet down from the top with the full log, newest-first, and marks everything read (clearing the unread-count badge). True decisions (crew desertion, the Duck River ferry) still pop up unchanged.

How

  • Engine: new Notification type + persisted state.reports log + Game::report() (does not touch pending, so no popup). Four market-report call sites switched from message() to report(). The cap (40) trims the oldest read report first, so an unopened center never silently drops unread reports.
  • retro-kit: Sheet gains a backward-compatible from_top variant (new .crt-sheet-top CSS); existing bottom-sheet callers are unchanged.
  • Gossip: voice_trader_gossip now drains the shared feed into the log silently rather than competing for the popup beat slot; dead GOSSIP_PRESSURE/gossip_pending removed.
  • Golden trace re-pinned (narrative-routing only, RNG-neutral): the diff is the snapshot losing the extra Mode::Interaction pause-frames those reports used to produce — verified by diffing print_golden_trace, no numeric/outcome drift.

Test

  • cargo test -p kaintuck-engine — 78 pass incl. re-pinned golden trace; gossip unit test rewritten for the log.
  • cargo check --target wasm32-unknown-unknown clean for the kaintuck bundle.

Versions bumped: kaintuck-engine 0.1.8, retro-kit 0.1.11, kaintuck 0.1.31.

🤖 Generated with Claude Code

Last updated 2026-06-16