11 · 3 roles

Capability seams

Every interchangeable capability has three roles, and you have to design all three.

  • Role one The interface Declares what can be done, without saying how
  • Role two The provider Implements it. There can be several and they swap for each other
  • Role three The consumer Uses it, usually a tool the model can call

One role alone is not enough. Adding a capability means designing all three, and the documentation insists on it.

The example that explains it best

File access and process launching share a single execution world. Pointing them at a remote environment moves the terminal, the persistent sessions and the language servers along with them. With no forking.

That is the property a well placed seam gives you: you swap one piece and everything that depended on the same interface moves with it.