The controller maps the request body to an input record and calls one driving
port. It holds no rule.
The service validates — the plan limit comes from Organizations' public
contract — adds the entity through its repository and lets the entity raise
WorkspaceCreatedDomainEvent.
The controller commits. Before SaveChanges, an interceptor dispatches the
domain event: the team is created in the same transaction, and the integration event
for the other domains joins the outbox.
After the commit, the outbox sends WorkspaceCreatedIntegrationEvent, and the
Webhooks module dispatches it to the endpoints the organization subscribed. (Creating a
workspace is not audited — it is reversible; deleting one is.)