Only a thing built and never run is unassignable #25

Merged
jschoubben merged 1 commits from fix/only-a-build-input-is-unassignable into main 2026-09-14 15:33:03 +00:00
Owner

A regression I introduced, caught by the four-machine bed at its first assignment.

The check read "declares no resources" as "runs nowhere". Those are not the same thing. The private network declares no resources either — the control plane computes them when it composes a machine's declaration — and it is assigned to every machine that has to reach another one. Refusing it meant nothing could reach anything else, and the bed stopped dead.

The signal is narrower: a module that builds an artifact and places nothing. That is the case this was for — the image every module in the scripted toolchain is compiled on top of, which is registered so the mesh can build and version it and is not a thing any machine runs.

Made a function of its own and tested three ways, including the private network. It is a judgement rather than a lookup, and a judgement whose wrong answer costs a whole mesh should not need a database to check. Nothing guarded it before, which is how it shipped.

A regression I introduced, caught by the four-machine bed at its first assignment. The check read "declares no resources" as "runs nowhere". Those are not the same thing. The private network declares no resources either — the control plane computes them when it composes a machine's declaration — and it is assigned to every machine that has to reach another one. Refusing it meant nothing could reach anything else, and the bed stopped dead. The signal is narrower: a module that builds an artifact and places nothing. That is the case this was for — the image every module in the scripted toolchain is compiled on top of, which is registered so the mesh can build and version it and is not a thing any machine runs. Made a function of its own and tested three ways, including the private network. It is a judgement rather than a lookup, and a judgement whose wrong answer costs a whole mesh should not need a database to check. Nothing guarded it before, which is how it shipped.
jschoubben added 1 commit 2026-09-14 15:32:56 +00:00
The check read "declares no resources" as "runs nowhere", and those are not
the same. The private network declares no resources either — the control plane
computes them when it composes a machine's declaration — and it is assigned to
every machine that has to reach another one. Refusing it stopped a four-machine
bed at its first assignment.

The signal is narrower: it builds an artifact and places nothing. Made a
function of its own, because a judgement with a wrong answer this expensive
should be testable without a database — nothing guarded it, which is how it
shipped.
jschoubben merged commit 30dfc9969c into main 2026-09-14 15:33:03 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: novox/mesh-controller#25