A seat event's stream has one bus name, seatdef.KeptStream's, which the
generated contract carries as Stream<E>: HearSeatEvents takes it as it
stands and refuses a dotted or unprefixed name by name, so no part makes
the name a second time (SEAT_SEAT_...).
Builds: design 47 G §260
Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ