Commit b251570
fix(onboard): stabilize Docker authority across terminals (#9666)
<!-- markdownlint-disable MD041 -->
## Summary
Docker host-local-inference authority no longer includes terminal
presentation metadata. Interactive onboarding and later non-interactive
lifecycle commands now resolve the same persisted authority, while an
actual Docker endpoint change remains denied.
## Related Issue
Fixes #9584
## Changes
- Extend the Docker authority regression test to vary caller terminal
and SSH session metadata while asserting stable authority and binding
IDs.
- Verify that caller metadata is not forwarded without assuming that
macOS `/bin/sh` leaves `TERM` unset.
## Type of Change
- [x] Code change (feature, bug fix, or refactor)
- [ ] Code change with doc updates
- [ ] Doc only (prose changes, no code sample modifications)
- [ ] Doc only (includes code sample changes)
## Quality Gates
- [x] Tests added or updated for changed behavior
- [ ] Existing tests cover changed behavior — justification:
- [ ] Tests not applicable — justification:
- [x] Sensitive paths changed (security, policy, credentials, preflight,
onboarding, inference, runner, sandbox, or messaging)
- [ ] Sensitive-path review completed or maintainer-approved waiver
recorded — reviewer/approval link/justification: Draft PR; maintainer
review is pending.
- [ ] Non-success, skipped, or missing CI check accepted by maintainer —
check name, approval link, and follow-up issue:
## DGX Station Hardware Evidence
- [ ] Tested on DGX Station
- Tested commit: Hardware validation used source snapshot
`2d05bce020821f4909bbaa1312cb6e52df296ebb` plus this exact two-file
patch. The published rebased commit is
`ef6855ab946c720bec2df65600825595135e4120`.
- Station profile/scenario: DGX Spark, NVIDIA GB10, Ubuntu 24.04
aarch64, driver 580.159.03, Docker 29.2.1, OpenShell 0.0.101, Node
24.18.0, npm 11.16.0, OpenClaw 2026.7.1, managed llama.cpp Muse Glimmer
30B.
- Result: Fresh interactive selection succeeded after one supported
`onboard --resume` caused by a validation-harness status probe racing
the initial transition. With `TERM` absent, status and doctor were
healthy and destroy succeeded. A different Docker socket still failed
closed with `Qualified container endpoint does not match persisted
authority`.
- Supporting evidence: `TERM=xterm-256color NEMOCLAW_EXPERIMENTAL=1 node
bin/nemoclaw.js onboard --fresh --name nc9584-cleanfinal
--yes-i-accept-third-party-software`; `TERM=xterm-256color
NEMOCLAW_EXPERIMENTAL=1 node bin/nemoclaw.js onboard --resume
--yes-i-accept-third-party-software`; `env -u TERM node bin/nemoclaw.js
nc9584-cleanfinal status`; `env -u TERM node bin/nemoclaw.js
nc9584-cleanfinal doctor`;
`DOCKER_HOST=unix:///tmp/nc9584-different-docker.sock env -u TERM node
bin/nemoclaw.js nc9584-cleanfinal doctor`; `env -u TERM node
bin/nemoclaw.js nc9584-cleanfinal destroy --yes`. Results were redacted;
validation sandbox, container, bridge process, and listener were cleaned
up. Existing v0.0.110 persisted authority state was not modified.
## Verification
- [x] PR description includes a `Signed-off-by:` line and every commit
appears as `Verified` in GitHub
- [x] Normal `pre-commit`, `commit-msg`, and `pre-push` hooks passed, or
`npm run validate:pr` passed after refreshing `origin/main` when hooks
were skipped or unavailable
- [x] Targeted behavior tests pass for the current change set, or tests
are marked not applicable above — `npx --no-install vitest run --project
cli src/lib/onboard/runtime-provider/docker-operation-authority.test.ts`
(19/19 passed); `npm run test:titles:check`, `npx --no-install oxfmt
--check
src/lib/onboard/runtime-provider/docker-operation-authority.test.ts`,
and `git diff --check` passed; hardware commands/results above.
- [ ] Applicable broad gate passed — `npm test` for broad
runtime/test-harness changes; `npm run check` for repo-wide
validation/coverage changes — command/result: Not applicable; this is a
focused authority environment-filter change with a targeted regression
test.
- [x] Quality Gates section completed with required justifications or
waivers
- [x] No secrets, API keys, or credentials committed
- [ ] `npm run docs` builds without warnings (doc changes only)
- [ ] Doc pages follow the [style
guide](https://github.com/NVIDIA/NemoClaw/blob/main/docs/CONTRIBUTING.md)
(doc changes only)
- [ ] New doc pages include SPDX header and frontmatter (new pages only)
---
Signed-off-by: Prekshi Vyas
<34834085+prekshivyas@users.noreply.github.com>
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **Tests**
* Verified managed llama.cpp authority remains stable when onboarding
changes the command path.
* Confirmed invalid or directory-only local OpenShell paths are
rejected.
* Expanded session metadata coverage for caller-provided terminal
settings, ensuring they are not forwarded unchanged to Docker commands.
* Accommodated macOS shell behavior while continuing to verify that XDG
session variables remain unset.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
---------
Signed-off-by: Prekshi Vyas <34834085+prekshivyas@users.noreply.github.com>
Signed-off-by: Senthil Ravichandran <senthilr@nvidia.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Senthil Ravichandran <senthilr@nvidia.com>1 parent c41e5ae commit b251570
1 file changed
Lines changed: 12 additions & 3 deletions
Lines changed: 12 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
198 | 198 | | |
199 | 199 | | |
200 | 200 | | |
201 | | - | |
| 201 | + | |
202 | 202 | | |
203 | | - | |
| 203 | + | |
204 | 204 | | |
205 | 205 | | |
206 | 206 | | |
207 | 207 | | |
208 | 208 | | |
209 | 209 | | |
210 | 210 | | |
| 211 | + | |
211 | 212 | | |
212 | 213 | | |
213 | 214 | | |
214 | 215 | | |
215 | 216 | | |
| 217 | + | |
216 | 218 | | |
217 | 219 | | |
218 | 220 | | |
219 | 221 | | |
220 | 222 | | |
221 | 223 | | |
| 224 | + | |
222 | 225 | | |
223 | 226 | | |
224 | 227 | | |
225 | 228 | | |
226 | 229 | | |
227 | 230 | | |
228 | | - | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
229 | 238 | | |
230 | 239 | | |
231 | 240 | | |
| |||
0 commit comments