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
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.
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.
Deliverynovox/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.
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`.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Issue 734. Group fix/daemon-dir-kept with mesh-host.
execRunsets cmd.Dir throughstableDir: 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 asgo versionnever 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
pwdfrom 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
fd7d93333eDelivery
novox/mesh-sdk@fd7d93333e6b— merged since 2026-10-26T14:15:59ZSource — source.main moved to novox/mesh-sdk@d103ed88ab. Whether it reached the machines is
mesh-delivery-view's, derived fromsource.main, the wants and the haves.Group
fix/daemon-dir-kept: novox/mesh-host@65cd7b4787, novox/mesh-sdk@fd7d93333eTransitions
The commit's note under
refs/notes/mesh-plankeeps every transition of this change up to its merge:git log --notes=mesh-plan.