Commit 39e7926
fix(onboard): complete Discord managed bootstrap (NVIDIA#9474)
## Summary
Make the current managed OpenClaw Discord startup profile consumable by
the reused `8cdc3c41` image. NemoClaw continues to hydrate and validate
the complete messaging plan, then omits only the valid boolean
package-install `pin` from the derived managed startup profile because
that field controls image construction rather than runtime startup.
## Related Issue
Fixes NVIDIA#9399
## Changes
- Validate and hydrate the complete messaging plan before producing the
managed startup profile.
- Omit only a valid boolean `messaging.plan.buildSteps[0].value.pin`
from the derived runtime profile.
- Preserve malformed and misplaced pin rejection so credential-shaped
input continues to fail closed.
- Add positive and negative profile-builder regressions for the
projection boundary.
## Acceptance Criteria
- [x] Complete managed OpenClaw Discord startup against reused image
source revision `8cdc3c41eadf51cd817df9a0f738656d8c940be5`, without
rebuilding or publishing an image or changing managed-image
dependencies.
- [x] Keep the replacement stable through bootstrap completion and
OpenShell supervisor reconnect.
- [x] Reach and pass configuration inspection, fake Discord Gateway
routing, pairing-request, connect-shell approval, and cleanup phases.
- [x] Preserve full-plan validation: malformed or misplaced pins still
fail closed.
- [x] Pass the issue-reported failing `openclaw-discord-pairing` target
on an exact candidate containing PR head
`2f865a9d65d672fb14b1995b6659d8ff1c4d1eda`: [run 32164856423, job
95802476184](https://github.com/NVIDIA/NemoClaw/actions/runs/32164856423/job/95802476184).
Candidate `17b18b962ed64b913f240f9fcd2040b69c8fb163`; evidence manifest
reports 80 product files, all 7 phases passed, and cleanup passed 4/4
with no failures.
## 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)
- [x] Sensitive-path review completed or maintainer-approved waiver
recorded — exact-head approval: [jyaunches
review](NVIDIA#9474 (review))
- [ ] 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:
- Station profile/scenario:
- Result:
- Supporting evidence:
## 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 — `vitest run --project cli
src/lib/onboard/managed-startup-profile-builder.test.ts
src/lib/onboard/managed-startup-profile.test.ts
src/lib/onboard/managed-startup-agent-environment.test.ts
src/lib/onboard/managed-bootstrap/docker.test.ts` (244 passed); `tsc -p
nemoclaw/tsconfig.json --noEmit` and `tsc -p nemoclaw/tsconfig.test.json
--noEmit` passed
- [x] Applicable broad gate passed — exact-head GitHub CI is the
applicable broad gate and is required green before merge
- [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: Aaron Erickson <aerickson@nvidia.com>
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **Bug Fixes**
* Managed startup profiles now omit internal pin details from valid
package-install steps.
* Invalid or misplaced pin values continue to be rejected during profile
validation.
* **Tests**
* Added coverage for removing derived pin fields and rejecting malformed
credential-shaped values.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
---------
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>1 parent c7e96ec commit 39e7926
2 files changed
Lines changed: 106 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
243 | 243 | | |
244 | 244 | | |
245 | 245 | | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
| 260 | + | |
| 261 | + | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
| 266 | + | |
| 267 | + | |
| 268 | + | |
| 269 | + | |
| 270 | + | |
| 271 | + | |
| 272 | + | |
| 273 | + | |
| 274 | + | |
| 275 | + | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
246 | 331 | | |
247 | 332 | | |
248 | 333 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
398 | 398 | | |
399 | 399 | | |
400 | 400 | | |
401 | | - | |
| 401 | + | |
| 402 | + | |
| 403 | + | |
| 404 | + | |
| 405 | + | |
| 406 | + | |
| 407 | + | |
| 408 | + | |
| 409 | + | |
| 410 | + | |
| 411 | + | |
| 412 | + | |
| 413 | + | |
| 414 | + | |
| 415 | + | |
| 416 | + | |
| 417 | + | |
| 418 | + | |
| 419 | + | |
| 420 | + | |
| 421 | + | |
402 | 422 | | |
403 | 423 | | |
404 | 424 | | |
| |||
0 commit comments