Skip to content

After CU27 — The wire leaves, and soma-fabric opens

soma/transport/ → soma-fabric/wire/ (sixteen commits, and their history)

Not a use case: nothing can be written the day after that could not be written the day before. It is a cut, made when four things that shared the name remote execution turned out to want opposite things:

what it iswhat it wantswhere it lives
placement.at("w1"): the graph says a node runs elsewhereto be a declaration, part of the graph’s meaningstays
transportbytes over a wire, framed, with codecslow latency, a hot connectionleaves
provisioninghow the code reaches the other sidereproducibilityleaves
coordinationwho does which workdurability, retries, leasesleaves

There is no single thing that is both a hot connection and durability with retries, which is why one name over the four of them read as a tangle rather than a design. Placement is a declaration and belongs beside the graph that makes it; the other three are mechanism. What soma keeps is Transport, a hole with one method, and the .at() that fills it with a name.

The boundary is not a layer, and pretending it were would have put the codec, the store or the Value on the wrong side of the cut: soma-fabric/wire depends on soma-core and soma-store, and soma-python depends on soma-fabric-wire. No cycle — they are different crates — but what the arrangement assumes is that the two repositories sit side by side and move together, which is what the path dependencies say out loud. The day either is published on its own they become versions.

It is not free, and the place it shows is the one nobody predicts: the cluster images build from two contexts now, because a single root over both is a directory of unrelated projects and every byte of it would go to the daemon.

The move is verified the only way a move can be: 87 tests green on the other side of it, having changed nothing.