Learn / Wiring

Wiring versus Surface

Different questions, different values:

SurfaceWiring
Answers"What may this feature observe, and which Messages may it cause?""How does this integration join: route, start, subscribe, own?"
Owns transitionsNever. No private Model, no child update.Describes who folds what; the integration still owns its transitions.
MessagesAn allowlist of constructible variants (capability boundary).A routing table over tags already in the union (handles).
Has runtime behaviorNone. Pure contract.None itself — data plus pure functions. The derived config runs.
Wraps MessagesNever.Never; integrations speak flat union cases (see below).

A Surface never routes, starts, or subscribes, so it cannot replace a wiring. A wiring never declares what a feature may observe, so it cannot replace a Surface. They meet in the Module, which collects both, and in Remote, which reads a Surface's projections to plan its fetches.