
Agreed - and the trade-off profiles are quite different. Events push coupling into schema (silently breaking consumers when schema changes). Typed contracts put it up front - harder to ignore, but way easier to reason about and refactor. You can't eliminate coupling, only choose where it hides.
English

























