Time gap, back-channel, and who pays
Which variable organizes every interface mechanism, and why does cost move to the other party?
The organizing variable: time gap and back-channel
This mechanism has three families of interface. They are three positions on one variable: how much time separates the producer from the consumer, and whether the consumer can answer back.
| Time gap | Back-channel | Consequence | |
|---|---|---|---|
| File formats | Unbounded: the writer may be gone | None | Everything needed to read the bytes must travel with the bytes, or live in a catalog agreed in advance |
| Access protocols | Short, interactive | Full | Meaning can be negotiated live, so the contract moves from the data to the conversation. Errors, limits and capabilities become part of the contract |
| Integration patterns | Repeated, indefinite | Exists, but the relationship outlives any single conversation | The position must be stored as durable state (offsets, cursors, high-watermarks), because neither side can remember it in memory |
One line rebuilds why each family looks the way it does: no back-channel, then a back-channel, then a back-channel plus memory.
- Self-description is mandatory in the first family (nobody can ask).
- It is optional in the second (you can ask).
- It is irrelevant in the third, where the hard problem is instead resumability: starting again from where you stopped.
Who pays: cost moves to the other party
In earlier mechanisms, cost could move between time, space, energy, money and complexity. At a boundary there is a new place to move it: onto the other party. This is the signature move of this whole mechanism. Examples we will meet:
- Schema-on-write (check and fix the data when writing) charges the producer once. Schema-on-read (accept anything, interpret when reading) charges every consumer, forever.
- Pagination pushes state to whichever side holds the cursor.
- Pushdown moves computation to the party that holds the data.
- ELT versus ETL (explained in Integration patterns) is, without the vocabulary, an argument about which organization's budget pays for the transformation.
This gives two useful questions a sharp answer at a boundary:
- What does an interface assume that it cannot verify? That the other side reads the bytes the way you do: the same rules for null values, decimal versus floating point, character encoding, timestamp meaning, and what an empty string means.
- Who pays when it breaks? Not the producer. The producer ships. The consumer finds the problem months later, at read time.
Three principles this mechanism adds
Principle A: At a boundary, no change is atomic. Every change to an interface becomes a migration, with a required interval in which both the old and the new contract must work at the same time (dual-running). So the cost of an interface is paid at change time, not at design time. That is why interfaces are chronically under-priced when they are chosen.
Principle B: Adoption is a resource, and it compounds. An interface's fitness is set by the size of its reader population, not by its technical properties. So inferior formats win and stay won. The derived mechanism is the compatibility layer: speaking someone else's protocol is often worth more than designing a better one.
Principle C: A boundary gives work to the party with less power to refuse. "Costs are conserved" says a cost only moves; this says which way. The direction of the move is predicted by who has less power to refuse, not by efficiency. The examples in this mechanism:
| Example | Who is charged | Why they cannot refuse |
|---|---|---|
| Schema-on-read | Every consumer | They have no say in what the producer wrote |
| Caller-specified queries (GraphQL) | The server | It does not know in advance what it will be asked |
| Webhooks | The receiver, who must be idempotent | The producer decides to retry |
| Federation | A production database | It did not choose to be queried |
| Reverse ETL | A destination that rate-limits you | It rate-limits because it is defending itself |
This is what makes interfaces an organizational topic, not only a technical one: interface design is usually a negotiation about budgets, wearing a technical costume.