Skip to content

Collaboration Surfaces without Tangle

Page Maps

graph LR
  family["Python Programming"]
  program["Python Object-Oriented Programming"]
  section["Aggregates Events Collaboration Boundaries"]
  page["Collaboration Surfaces without Tangle"]
  capstone["Capstone evidence"]

  family --> program --> section --> page
  page -.applies in.-> capstone
flowchart LR
  orient["Orient on the page map"] --> read["Read the main claim and examples"]
  read --> inspect["Inspect the related code, proof, or capstone surface"]
  inspect --> verify["Run or review the verification path"]
  verify --> apply["Apply the idea back to the module and capstone"]

Read the first diagram as a placement map: this page is one concept inside its parent module, not a detached essay, and the capstone is the pressure test for whether the idea holds. Read the second diagram as the working rhythm for the page: name the problem, study the example, identify the boundary, then carry one review question forward.

Why this lesson matters

Objects have to collaborate, but uncontrolled collaboration turns into tangle quickly.

That usually looks like:

  • everyone reaches into everyone else’s internals
  • each object knows too many details about the others
  • changes ripple because boundaries are blurry

The goal is not zero collaboration. The goal is explicit, narrow collaboration surfaces.

What a collaboration surface is

A collaboration surface is the part of one object or boundary that another object is allowed to rely on.

A good collaboration surface is:

  • small
  • explicit
  • stable enough to review
  • focused on the real interaction, not internal convenience

If the only way to collaborate is to poke around inside another object’s internals, the surface is too weak.

Why tangle appears

Tangle appears when collaboration is designed as access instead of responsibility.

Examples:

  • callers mutate child collections directly
  • services depend on several internal details of an aggregate
  • one object reaches through another just to reach a third

Those are not only code smells. They are signs that ownership is being bypassed.

The practical design move

Instead of asking "what fields do I need from that object?", ask:

  • what authority should that object expose?
  • what question or action do I actually need?
  • how can the collaboration stay at the right level of meaning?

That shift usually turns low-level access into a clearer domain interaction.

What a good surface often looks like

Good collaboration surfaces often:

  • ask for a decision
  • request a state change through an owned method
  • publish a small result or event
  • expose a clear query that does not leak structure

The point is to collaborate through responsibility, not through accidental data reach.

Common mistakes

  • exposing whole collections just so callers can "help"
  • leaking internal child entities for direct mutation
  • adding broad helper methods that really just formalize boundary leaks
  • letting one service become the place that understands everyone’s internals

That last pattern is especially dangerous because it looks organized while actually concentrating tangle in one outer layer.

Review checklist

Question Good sign
can collaborators work without reaching into internals? yes
does the surface expose meaning instead of structure? yes
is the interaction small enough to review clearly? yes
do changes stay mostly local instead of rippling through many objects? yes

Capstone connection

In the capstone, inspect every place where one object reaches deep into another and ask whether that should become:

  • an owned method
  • a clearer query
  • an event
  • or a different boundary altogether

If collaboration still depends on internal reach-through, the model is not yet teaching good boundaries.

Exit check

Leave this lesson only when you can do all of these:

  • explain a collaboration surface in plain language
  • identify one capstone interaction that is currently too tangled
  • explain how collaboration through responsibility is stronger than collaboration through internals