Register the firewall before assigning it

'no module of that name: firewall'. The networking family is computed by the
control plane, so the mesh knows those exist without anyone saying so; the
firewall is an ordinary catalogue module and has to be added like any other.

That is a second way for a module to be absent, and a less obvious one than
being present and placed nowhere — the mesh does not hold it at all, so nothing
can even report it unassigned.

Claude-Session: https://claude.ai/code/session_01D6qtiYU3P9jk3pnAXyAFyx
This commit is contained in:
2026-09-14 22:52:26 +02:00
parent f132a4bcbd
commit 475fd9a088
2 changed files with 39 additions and 24 deletions
+8
View File
@@ -641,6 +641,14 @@ before(async () => {
// and the second is the more alarming of the two — every rule the mesh generates from module
// declarations had never been applied to any machine in this test.
await step("N2", FILTERED, NETWORKED, async () => {
// **Registered first: the mesh had never heard of it.** The networking family is computed by
// the control plane, so the mesh knows those modules exist without anyone saying so. The
// firewall is an ordinary catalogue module and needs adding like any other — "no module of
// that name: firewall" — which is a second way for a module to be absent, and less obvious
// than being present and placed nowhere.
//
// No build: its resources are a package and a service, so there is nothing to compile.
await registerModule(FILTER_MODULE, resolve(catalogDir, FILTER_MODULE, "module.json"));
await mesh(`assign ${CONTROL} ${FILTER_MODULE}`);
await mesh(`push ${CONTROL}`, 600_000);
const deadline = Date.now() + 180_000;