Event bus topology for systems where multiple services need to react to the same business events without knowing about each other, the architecture that lets you add a new service that reacts to order.placed without modifying the order service or any other existing subscriber. Domain event catalog: every business event named using past-tense domain language (OrderPlaced, PaymentCaptured, ShipmentDispatched), with the event type, version, schema, producing service, and consuming services documented in a contract registry. Event envelope structure: a standard wrapper (event_id, event_type, aggregate_id, aggregate_type, occurred_at, schema_version, payload) applied to every event regardless of domain, making serialisation, routing, and consumer filtering consistent across the system. Schema evolution policy: v1 events remain supported until all consumers have migrated, new required fields added as optional with a defined deadline for consumer updates, breaking changes published as v2 events with a migration period where both versions are produced. CloudEvents standard specification used as the event envelope format where cross-organisation or cross-platform interoperability is required. Consumer contract testing with Pact: consumer publishes its expectations of the event schema, producer CI validates that the produced event satisfies all registered consumer contracts before merging, preventing the producer from shipping a schema change that silently breaks a consumer in a separate repository.