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.