Skip to content

Surface

Status: open/active · Aliases: published surface

What a component exposes for others to use: its CLI verbs, HTTP routes, or library exports. A published surface is one that outside code depends on, so changing it requires coordinating with its consumers (S-0008).

Not an adapter: an adapter is a surface generated from the op registry (CLI, MCP, HTTP — D-0001-project-structure). Not a protocol: a protocol is a wire-level contract, like a stdio message format. Every adapter produces a surface; most surfaces are not adapters.

“Published” follows Fowler’s published-vs-public distinction: public means callable, published means others rely on it staying stable. The substrate’s published surfaces today are the sdlc CLI, service HTTP APIs, and the API libraries under packages/<ecosystem>/.

The working test: a surface is unpublished while you can change it and every caller in one commit. For now the line is the repo boundary — used outside this repo means published; inside-only means unpublished.


← Back to the Glossary