Learn / Wiring
Wiring versus Surface
Different questions, different values:
| Surface | Wiring | |
|---|---|---|
| Answers | "What may this feature observe, and which Messages may it cause?" | "How does this integration join: route, start, subscribe, own?" |
| Owns transitions | Never. No private Model, no child update. | Describes who folds what; the integration still owns its transitions. |
| Messages | An allowlist of constructible variants (capability boundary). | A routing table over tags already in the union (handles). |
| Has runtime behavior | None. Pure contract. | None itself — data plus pure functions. The derived config runs. |
| Wraps Messages | Never. | 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.