forgekey: a command starts in a directory that exists (issue 734) #93

Merged
mesh-tools merged 2 commits from fix/daemon-dir-kept into main 2026-10-26 14:15:57 +00:00
Member

Issue 734. Group fix/daemon-dir-kept with mesh-host.

execRun sets cmd.Dir through stableDir: a clean runner starts its command in the HOME it is given when that exists, else os.TempDir(); the other runners keep the process's own directory while it exists and use os.TempDir() once it is gone. So a probe such as go version never inherits a deleted working directory. Every clean-runner caller in the build modules already names its directory (-C, env -C, --prefix), so none depended on the inherited one.

Tests: a case in TestExecRunnerCleanGivesTheCommandOnlyTheEnvArgument runs pwd from a deleted directory (fails on main). Suite and vet clean. Try try-1793023868240818055 passed.

After delivery the build modules need a mesh-sdk pin bump in mesh-catalog to carry it (the mesh-host change alone removes the cause).

Reviewed-by: review-daemondir@shanks at fd7d93333e

Issue 734. Group fix/daemon-dir-kept with mesh-host. `execRun` sets cmd.Dir through `stableDir`: a clean runner starts its command in the HOME it is given when that exists, else os.TempDir(); the other runners keep the process's own directory while it exists and use os.TempDir() once it is gone. So a probe such as `go version` never inherits a deleted working directory. Every clean-runner caller in the build modules already names its directory (-C, env -C, --prefix), so none depended on the inherited one. Tests: a case in TestExecRunnerCleanGivesTheCommandOnlyTheEnvArgument runs `pwd` from a deleted directory (fails on main). Suite and vet clean. Try try-1793023868240818055 passed. After delivery the build modules need a mesh-sdk pin bump in mesh-catalog to carry it (the mesh-host change alone removes the cause). Reviewed-by: review-daemondir@shanks at fd7d93333e6b2540936536393009a9865e81e4a1
mesh-tools added 2 commits 2026-10-26 14:15:17 +00:00
A build module runs in the directory its build was unpacked in. When the
node-engine replaced that build, every command the module started inherited a
deleted working directory, and the toolchain probe's failure became a final
refusal of the check that asked it (three checks on ace on 2026-10-26).

forgekey: ExecRunnerClean starts its command in the HOME it is given, or the
temporary directory; the other runners keep the process's directory while it
exists and use the temporary directory once it is gone.

buildstep: a guard whose probe failed answers a Refusal with Again set; the
puller declines such an ask (delivery.StepDeclined) so its asker puts it again
for another node or a later pull, instead of ending it refused. A version
mismatch stays a refusal.
Keep a failed toolchain probe a loud refusal; only the command directory is fixed (issue 734, review round 1)
mesh/delivery merged: source.main moved to novox/mesh-sdk@d103ed88ab17
mesh/delivery-group group fix/daemon-dir-kept merged: every member is merged
mesh/check checking fd7d93333e6b on 21252194d530 | novox/mesh-sdk#93 in group fix/daemon-dir-kept
fd7d93333e
Declining an ask whose probe failed would turn a truly broken toolchain into a
wait of up to the decline bound that then fails with an empty "needs a node
with" reason. With the node-engine no longer deleting a running build and
commands started in a directory that exists, the getwd cause is gone, so the
guard's refusal stays as it was. The decline refactor goes with it.
Author
Member

Delivery novox/mesh-sdk@fd7d93333e6b — merged since 2026-10-26T14:15:59Z

Source — source.main moved to novox/mesh-sdk@d103ed88ab. Whether it reached the machines is mesh-delivery-view's, derived from source.main, the wants and the haves.

Group fix/daemon-dir-kept: novox/mesh-host@65cd7b4787, novox/mesh-sdk@fd7d93333e

Transitions

  • 2026-10-26 14:15 (new) → proposed (announced): novox/mesh-sdk#93's head announced
  • 2026-10-26 14:15 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)
  • 2026-10-26 14:15 ready → merged (merged): on the trunk its modules follow: merged there

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-sdk@fd7d93333e6b` — **merged** since 2026-10-26T14:15:59Z **Source** — source.main moved to novox/mesh-sdk@d103ed88ab17. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves. **Group** `fix/daemon-dir-kept`: novox/mesh-host@65cd7b47873a, novox/mesh-sdk@fd7d93333e6b **Transitions** - 2026-10-26 14:15 (new) → proposed (announced): novox/mesh-sdk#93's head announced - 2026-10-26 14:15 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) - 2026-10-26 14:15 ready → merged (merged): on the trunk its modules follow: merged there 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-tools merged commit d103ed88ab into main 2026-10-26 14:15:57 +00:00
mesh-tools deleted branch fix/daemon-dir-kept 2026-10-26 14:15:57 +00:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: novox/mesh-sdk#93