Intent requests outcomes. Events share facts.


Responsibilities collaborate in exactly two ways.

When one responsibility needs another to produce an outcome, it expresses intent. Book this room. Process this payment. Assign this coach. Intent is a request — it names the desired outcome and leaves the how to the responsibility that owns it. The requesting party does not need to know how the outcome is produced. Ownership stays clear. Crucially, context travels with the intent — everything the receiving responsibility needs to fulfil its obligation is passed at the point of request. No responsibility should need to call back to a central record to assemble context mid-process.

When a responsibility observes a fact, it shares it as an event. Room booked. Payment cleared. Coach assigned. An event is not a request. It carries no expectation of response. Anyone who cares about this fact can react. Anyone who does not care ignores it.

These two patterns — intent for requests, events for facts — are sufficient to model every interaction between responsibilities. Direct calls, shared databases, synchronous coupling — these are not collaboration patterns. They are implementation details leaking across boundaries that should be clean.

Two patterns. That is the complete vocabulary.

Subscribe to 8861 Lab

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.
jamie@example.com
Subscribe