✎ Text Section 9 of 10

The pieces, assembled

Put the vocabulary together on one feature and the flow becomes precise.

Put the vocabulary together on the one feature and watch it collapse into a single sentence.

A request arrives and becomes the command InviteTeammate. Its handler loads the Workspace aggregate through the repository port. The aggregate — guarding its invariants over its Member entities and EmailAddress value objects — either accepts the invite and emits TeammateInvited, or refuses because the seats are full. The handler saves the workspace through the port.

Later, a query reads a projection to answer “seats remaining” without touching any of that machinery.

Illustration note: the same flow as a single left-to-right strip — command → handler → load via port → aggregate guarding invariants → event → save via port → query reading a projection. Each box labelled with its vocabulary word.

Every noun in that paragraph is a precise, shared word. That precision is the entire point of the module.