while-stopped names the container as the machine knows it (hq ADR 0189) #259

Merged
mesh-admin merged 1 commits from fix/while-stopped-names-the-composed-id into main 2026-10-04 02:18:45 +00:00
Contributor

Fixes a live fault: novox refuses every declaration. Since 04:15 the control node's host has been answering:

refused a declaration: this declaration is refused, and none of it was applied:
  - resource "distribution.collect": while-stopped names "store", and this
    declaration has no container by that id

A module names its own resources locally; the declaration a machine receives names them under the module. restart-on and reload-on are passed through reflectsRenamed for exactly that reason — while-stopped was not. So the store's step said it holds store still, and the machine's container is distribution.store.

One line, beside the other two.

The machine was never damaged. The host refuses a declaration carrying a container it does not have whole, which is what kept novox serving while it took nothing. That design is the only reason this is a short outage of change rather than a broken control node.

Why both sides' tests passed. The controller's tests read manifests; the host's read hand-written declarations with bare ids. Nothing composed a module through the controller and judged the result against what the host would accept. TestAComposedWindowNamesTheContainerAsTheMachineKnowsIt does, and fails against this branch with the fix reverted:

the composed step says it holds "store" still, and the machine's container is called
"distribution.store" — the host refuses a declaration naming a container it does not
have, whole, so the machine would take nothing at all

go vet, gofmt and the catalogue suite clean.

**Fixes a live fault: novox refuses every declaration.** Since 04:15 the control node's host has been answering: ``` refused a declaration: this declaration is refused, and none of it was applied: - resource "distribution.collect": while-stopped names "store", and this declaration has no container by that id ``` A module names its own resources locally; the declaration a machine receives names them under the module. `restart-on` and `reload-on` are passed through `reflectsRenamed` for exactly that reason — `while-stopped` was not. So the store's step said it holds `store` still, and the machine's container is `distribution.store`. One line, beside the other two. **The machine was never damaged.** The host refuses a declaration carrying a container it does not have *whole*, which is what kept novox serving while it took nothing. That design is the only reason this is a short outage of change rather than a broken control node. **Why both sides' tests passed.** The controller's tests read manifests; the host's read hand-written declarations with bare ids. Nothing composed a module through the controller and judged the result against what the host would accept. `TestAComposedWindowNamesTheContainerAsTheMachineKnowsIt` does, and fails against this branch with the fix reverted: ``` the composed step says it holds "store" still, and the machine's container is called "distribution.store" — the host refuses a declaration naming a container it does not have, whole, so the machine would take nothing at all ``` `go vet`, `gofmt` and the catalogue suite clean.
mesh-admin added 1 commit 2026-10-04 02:18:38 +00:00
A module names its own resources locally; a declaration names them under the
module. restart-on and reload-on are rewritten for exactly that reason and
while-stopped was not, so the store's step said it held "store" still while
the machine's container is "distribution.store".

The host refuses a declaration naming a container it does not have — whole.
So novox took nothing at all, on every push, from 04:15 until this. The
machine was never damaged: refusing whole is what kept it serving.

Both sides' tests passed throughout. The controller's read manifests, the
host's read hand-written declarations with bare ids, and nothing composed one
and judged the result. That test now exists.
mesh-admin merged commit a2003ab616 into main 2026-10-04 02:18:45 +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#259