Skip to content

fix(sandbox): include generate-openclaw-config.py in optimized build context#2565

Merged
cv merged 1 commit intomainfrom
fix/optimized-build-context-missing-config-generator
Apr 27, 2026
Merged

fix(sandbox): include generate-openclaw-config.py in optimized build context#2565
cv merged 1 commit intomainfrom
fix/optimized-build-context-missing-config-generator

Conversation

@brandonpelfrey
Copy link
Copy Markdown
Collaborator

@brandonpelfrey brandonpelfrey commented Apr 27, 2026

Summary

PR #2449 extracted inline Python config generation from the Dockerfile into scripts/generate-openclaw-config.py and added a COPY instruction (Dockerfile line 195), but did not update stageOptimizedSandboxBuildContext() to include the new file. This causes every nemoclaw onboard to fail with a Docker COPY failed: file not found in build context error. This PR adds the missing copyFileSync and a regression test assertion.

Related Issue

Fixes #2503
Closes #2509

Changes

  • src/lib/sandbox-build-context.ts — Added fs.copyFileSync for scripts/generate-openclaw-config.py in stageOptimizedSandboxBuildContext(), alongside the existing nemoclaw-start.sh and lib/sandbox-init.sh copies.
  • test/sandbox-build-context.test.ts — Added assertion that scripts/generate-openclaw-config.py is present in the staged optimized build context, preventing future regressions.

Type of Change

  • 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)

Verification

  • npx prek run --all-files passes
  • npm test passes
  • Tests added or updated for new or changed behavior
  • No secrets, API keys, or credentials committed
  • Docs updated for user-facing behavior changes
  • make docs builds without warnings (doc changes only)
  • Doc pages follow the style guide (doc changes only)
  • New doc pages include SPDX header and frontmatter (new pages only)

AI Disclosure

  • AI-assisted — tool: Claude Code (pi)

Signed-off-by: Brandon Pelfrey bpelfrey@nvidia.com

@brandonpelfrey brandonpelfrey self-assigned this Apr 27, 2026
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Apr 27, 2026

📝 Walkthrough

Walkthrough

This PR updates NemoClaw policy management documentation to highlight custom preset security considerations and workflow details, while extending the sandbox build context to stage a Python script (generate-openclaw-config.py) for Docker builds.

Changes

Cohort / File(s) Summary
Documentation Updates
.agents/skills/nemoclaw-user-manage-policy/SKILL.md
Adds "Gotchas" section warning that custom preset hosts bypass NemoClaw review and may expand sandbox egress. Updates warning formatting. Documents custom preset removal workflow, noting that presets applied via --from-file/--from-dir are tracked in the sandbox registry and can be removed by name using policy-remove.
Sandbox Build Context & Tests
src/lib/sandbox-build-context.ts, test/sandbox-build-context.test.ts
Extends optimized sandbox path to copy generate-openclaw-config.py into the staged scripts directory during build context staging. Adds corresponding test assertion to verify the script is present in staged output.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Poem

🐰 A Python script hops into the scripts folder with care,
While warnings about presets float through the air,
NemoClaw's gotchas are now crystal clear,
Custom preset journeys documented here! ✨

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately summarizes the main change: including a missing Python script in the optimized sandbox build context to fix Docker build failures.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/optimized-build-context-missing-config-generator

Comment @coderabbitai help to get the list of available commands and usage tips.

@brandonpelfrey brandonpelfrey requested a review from ericksoa April 27, 2026 20:54
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
.agents/skills/nemoclaw-user-manage-policy/SKILL.md (1)

132-133: Inconsistent warning format styles.

Line 314 uses a bold "Warning:" blockquote format, while Line 132 uses the > [!WARNING] GitHub callout format. Consider standardizing on one format throughout the document for consistency.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.agents/skills/nemoclaw-user-manage-policy/SKILL.md around lines 132 - 133,
The document mixes two warning styles: the GitHub callout `> [!WARNING]` used
for the `openshell policy set` note and a bold "Warning:" block used elsewhere
(e.g., the other warning around "Warning:" text); standardize them by picking
one style and converting the other to match—either replace the `> [!WARNING]`
callout that precedes the line "`openshell policy set` **replaces** the
sandbox's live policy..." to the bold block format used at Line 314, or convert
the bold "Warning:" block to the `> [!WARNING]` callout so all warnings use the
same format throughout SKILL.md.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In @.agents/skills/nemoclaw-user-manage-policy/SKILL.md:
- Around line 132-133: The document mixes two warning styles: the GitHub callout
`> [!WARNING]` used for the `openshell policy set` note and a bold "Warning:"
block used elsewhere (e.g., the other warning around "Warning:" text);
standardize them by picking one style and converting the other to match—either
replace the `> [!WARNING]` callout that precedes the line "`openshell policy
set` **replaces** the sandbox's live policy..." to the bold block format used at
Line 314, or convert the bold "Warning:" block to the `> [!WARNING]` callout so
all warnings use the same format throughout SKILL.md.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 45889ab1-2f2e-43aa-8658-4c5da26421ea

📥 Commits

Reviewing files that changed from the base of the PR and between db1ef3c and 73e9564.

📒 Files selected for processing (3)
  • .agents/skills/nemoclaw-user-manage-policy/SKILL.md
  • src/lib/sandbox-build-context.ts
  • test/sandbox-build-context.test.ts

@cv cv merged commit a323104 into main Apr 27, 2026
41 of 42 checks passed
ericksoa added a commit that referenced this pull request Apr 28, 2026
Pulls in:
- a323104 fix(sandbox): include generate-openclaw-config.py in
  optimized build context (#2565) — same fix as the cherry-pick on
  this branch (ddb9e15), collapses cleanly.
- d392ec0 fix(onboard): clarify preflight messages reference local NIM (#2575)

# Conflicts:
#	test/sandbox-build-context.test.ts
@miyoungc miyoungc mentioned this pull request Apr 28, 2026
13 tasks
miyoungc added a commit that referenced this pull request Apr 28, 2026
## Summary
Refreshes user-facing docs for the last 24 hours of merged NemoClaw
history and bumps the docs metadata to 0.0.29, the next version after
v0.0.28. The updates are limited to behavior supported by merged PR
descriptions and diffs.

## Changes
- `docs/reference/commands.md`: documented `nemoclaw <name> policy-add
--from-file` and `--from-dir`, including custom preset review guidance,
from #2077 / commit `7720b175`.
- `docs/deployment/deploy-to-remote-gpu.md`: clarified that non-loopback
`CHAT_UI_URL` disables OpenClaw device pairing for remote browser-only
deployments, from #2449 / commit `f5ee8a4d`.
- `docs/inference/inference-options.md`: documented provider-aware
credential retry validation and the NVIDIA-only `nvapi-` prefix check,
from #2389 / commit `6f7f0c6d`.
- `docs/inference/switch-inference-providers.md`: documented
`NEMOCLAW_INFERENCE_INPUTS` for text/image-capable model metadata baked
into `openclaw.json`, from #2441 / commit `f4391892`.
- `docs/reference/troubleshooting.md`: added the Git certificate
verification entry for proxy CA propagation through `GIT_SSL_CAINFO`,
`GIT_SSL_CAPATH`, `CURL_CA_BUNDLE`, and `REQUESTS_CA_BUNDLE`, from #2345
/ commit `fa0dc1ab`.
- `docs/versions1.json` and `docs/project.json`: promoted docs version
`0.0.29`; `docs/versions1.json` omits unpublished `0.0.26`, `0.0.27`,
and `0.0.28` entries.
- `.agents/skills/nemoclaw-user-*`: regenerated derived user skill
references from the updated docs.
- Reviewed with no extra doc changes: #2575 / `d392ec07`, #2565 /
`a3231049`, #1965 / `db1ef3ca`, #1990 / `db665834`, #2495 / `7da86fa3`,
#2496 / `3192f4f4`, #2490 / `8c209058`, #2487 / `1f615e2f`, #2483 /
`5653d33a`, #2482 / `31c782c0`, #2464 / `23bb5703`, #2472 / `a54f9a34`,
and #2437 / `6bc860d7`.
- Skipped per docs policy: #2420 / `7b76df6b` touched the experimental
sandbox config path listed in `docs/.docs-skip`; #2466 / `cc15689c`
touched a skipped term and CI-only sandbox image files.

## Type of Change
- [ ] Code change (feature, bug fix, or refactor)
- [ ] Code change with doc updates
- [ ] Doc only (prose changes, no code sample modifications)
- [x] Doc only (includes code sample changes)

## Verification
<!-- Check each item you ran and confirmed. Leave unchecked items you
skipped. -->
- [x] `npx prek run --all-files` passes
- [ ] `npm test` passes — failed locally in installer-integration tests
and one onboard helper timeout; the doc-scoped hook test projects passed
under `prek`.
- [ ] Tests added or updated for new or changed behavior
- [x] No secrets, API keys, or credentials committed
- [x] Docs updated for user-facing behavior changes
- [ ] `make docs` builds without warnings (doc changes only) — build
succeeded, but local Sphinx emitted the existing version-switcher file
read message.
- [x] 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)

## AI Disclosure
<!-- If an AI agent authored or co-authored this PR, check the box and
name the tool. Remove this section for fully human-authored PRs. -->
- [x] AI-assisted — tool: Codex

---
<!-- DCO sign-off required by CI. Run: git config user.name && git
config user.email -->
Signed-off-by: Miyoung Choi <miyoungc@nvidia.com>


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* Support for custom YAML presets in policy configuration via
--from-file and --from-dir.
* New build-time inference input option to declare accepted modalities
(text or text,image).

* **Improvements**
* Credential validation now offers interactive recovery: re-enter key,
retry, choose another provider, or exit.
* Clarified provider-specific API key prefix handling (nvapi- only
applies to NVIDIA keys).

* **Documentation**
  * TLS certificate troubleshooting for inspected networks.
* Clarified remote dashboard security/device-pairing behavior; command
docs updated; docs version bumped.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Signed-off-by: Miyoung Choi <miyoungc@nvidia.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Onboard] [All Platform] Docker image build fails copying generate-openclaw-config.py

2 participants