Node-engine: a node names its provisioner account even when no module's files are filled this pass (issue 774) #205

Open
mesh-tools wants to merge 1 commits from fix/node-account-always into main
Member

Blocking fault on ace (issue 774 notes 111-115). Since 01:27:49 local, every module with filled files on ace is held by the forge-account ssh_alias refusal (mesh-build-go, -image, -node, ssh-client). internal/compose/node.go named the node's provisioner account only beside filled files, so ace's own composition named none, and the node-engine refused every provisioner-client write (filling.go:236). #204's held-client fix covers a different case and stays.

The fix (8e325830): the envelope and Declared name the account whenever the declaration has one, filled files or not. Every reader accepts provisioner_account without filled_files (mesh-sdk 85ba0a9a checkProvisioner, read by the review). The node's own composition is judged "neither", so it applies without a yes. The refused writes were marked owed.noAccount, and the knock after the apply refills them.
One row in TestTheProvisionedMeshHandsAPlanWithItsProvision (filledHeld): a node whose every filled-file module is held still names its account. It fails without the change. Net zero test functions.
quick vs thorough: thorough here. The quick recovery, fixing the forge-account binding, is fix-1965@shanks's fix/handed-one-rule (issue 1966), which also ends the plan loop for postgres, restic and power.
Expect: one apply of the node's own composition on ace at the delivery, then the provisioner client refills.

Reviewed-by: mesh-code-reviewer@shanks at 8e32583089
Pushed-by: lead-47@shanks

https://claude.ai/code/session_01JG73KG7AfSdh6FP8VrBqCn

Blocking fault on ace (issue 774 notes 111-115). Since 01:27:49 local, every module with filled files on ace is held by the forge-account ssh_alias refusal (mesh-build-go, -image, -node, ssh-client). internal/compose/node.go named the node's provisioner account only beside filled files, so ace's own composition named none, and the node-engine refused every provisioner-client write (filling.go:236). #204's held-client fix covers a different case and stays. The fix (8e325830): the envelope and Declared name the account whenever the declaration has one, filled files or not. Every reader accepts provisioner_account without filled_files (mesh-sdk 85ba0a9a checkProvisioner, read by the review). The node's own composition is judged "neither", so it applies without a yes. The refused writes were marked owed.noAccount, and the knock after the apply refills them. One row in TestTheProvisionedMeshHandsAPlanWithItsProvision (filledHeld): a node whose every filled-file module is held still names its account. It fails without the change. Net zero test functions. quick vs thorough: thorough here. The quick recovery, fixing the forge-account binding, is fix-1965@shanks's fix/handed-one-rule (issue 1966), which also ends the plan loop for postgres, restic and power. Expect: one apply of the node's own composition on ace at the delivery, then the provisioner client refills. Reviewed-by: mesh-code-reviewer@shanks at 8e325830891c54b63e5fc0002c2d0d89220f3b43 Pushed-by: lead-47@shanks https://claude.ai/code/session_01JG73KG7AfSdh6FP8VrBqCn
mesh-tools added 1 commit 2026-11-04 01:19:36 +00:00
A node names its provisioner client's account whenever a client runs there, filled files or not (issue 774)
mesh/delivery ready: it is merged on the Approve
mesh/check pass 8e325830891c on 6019c6d514a7 | unit 1589 run, 420 kept, 31 skipped | integration 1600 run, 420 kept, 26 skipped | over bound: unit (sl…
8e32583089
The declaration named the account only beside its filled files (node.go), so a node whose every filled-file module
was held this pass named none: on ace from 2026-11-04 01:29 its build modules and ssh-client were held for their
forge binding, and the node-engine refused every write of the files they keep, and of every other module's. The
account is the node's, named whenever the rendering has one. A row holds restic, the provisioned mesh's one
filled-file module, with the client placed: the node's own still names the account; it named none before.

Claude-Session: https://claude.ai/code/session_01JG73KG7AfSdh6FP8VrBqCn
Author
Member

Delivery novox/mesh-host@8e325830891c — ready since 2026-11-04T01:19:39Z

Transitions

  • 2026-11-04 01:19 (new) → proposed (announced): novox/mesh-host#205's head announced
  • 2026-11-04 01:19 proposed → ready (accepted): a verdict names this commit and the trunk's head as its trunk commit, the gate passed or warned, and the repository's own check did not fail; or the check gates no merge (check-gates-merge false)

The commit's note under refs/notes/mesh-plan keeps every transition of this change up to its merge: git log --notes=mesh-plan.

<!-- mesh-delivery:view --> **Delivery** `novox/mesh-host@8e325830891c` — **ready** since 2026-11-04T01:19:39Z **Transitions** - 2026-11-04 01:19 (new) → proposed (announced): novox/mesh-host#205's head announced - 2026-11-04 01:19 proposed → ready (accepted): a verdict names this commit and the trunk's head as its trunk commit, the gate passed or warned, and the repository's own check did not fail; or the check gates no merge (check-gates-merge false) The commit's note under `refs/notes/mesh-plan` keeps every transition of this change up to its merge: `git log --notes=mesh-plan`.
All checks were successful
mesh/delivery ready: it is merged on the Approve
mesh/check pass 8e325830891c on 6019c6d514a7 | unit 1589 run, 420 kept, 31 skipped | integration 1600 run, 420 kept, 26 skipped | over bound: unit (sl…
You are not authorized to merge this pull request.
This pull request can be merged automatically.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin fix/node-account-always:fix/node-account-always
git checkout fix/node-account-always
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: novox/mesh-host#205