Skip to content

fix(policy): keep preset descriptions line-scoped (Fixes #4312)#4328

Merged
cv merged 1 commit into
NVIDIA:mainfrom
deepujain:fix/4312-policy-description-parser
Jun 5, 2026
Merged

fix(policy): keep preset descriptions line-scoped (Fixes #4312)#4328
cv merged 1 commit into
NVIDIA:mainfrom
deepujain:fix/4312-policy-description-parser

Conversation

@deepujain
Copy link
Copy Markdown
Contributor

@deepujain deepujain commented May 27, 2026

Summary

Fixes #4312.

policy-list was reading preset descriptions with a regex that could keep matching into the rest of the YAML body. The WhatsApp preset then showed part of network_policies as if it were description text.

Changes

  • Keep preset description parsing scoped to a single line in src/lib/policy/index.ts.
  • Quote the WhatsApp preset description in nemoclaw-blueprint/policies/presets/whatsapp.yaml.
  • Add a regression test that checks the WhatsApp description is exact and does not include the YAML body.

Testing

  • npm run build:cli
  • npm run typecheck:cli
  • npx vitest run test/policies.test.ts
  • npm test -- test/policies.test.ts

The focused policy suite passes with 152/152 tests.

Signed-off-by: Deepak Jain deepujain@gmail.com

Summary by CodeRabbit

  • Bug Fixes

    • Preset descriptions now render exactly as intended; stray YAML markers no longer appear.
    • WhatsApp preset description normalized for consistent display and robust parsing to prevent spillover into the YAML body.
  • Tests

    • Added tests to validate preset description parsing and prevent regressions.

@copy-pr-bot
Copy link
Copy Markdown

copy-pr-bot Bot commented May 27, 2026

This pull request requires additional validation before any workflows can run on NVIDIA's runners.

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 27, 2026

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: f458920d-1407-4eae-9ae6-669dc17b78e3

📥 Commits

Reviewing files that changed from the base of the PR and between 07fd452 and e5735f7.

📒 Files selected for processing (1)
  • nemoclaw-blueprint/policies/presets/whatsapp.yaml
💤 Files with no reviewable changes (1)
  • nemoclaw-blueprint/policies/presets/whatsapp.yaml

📝 Walkthrough

Walkthrough

Updates the preset description extraction to use a line-scoped regex, quotes the WhatsApp preset's description in the blueprint, and adds a test asserting the parsed description is the single-line human-readable string (no YAML body).

Changes

Preset description parser fix

Layer / File(s) Summary
Regex update, WhatsApp preset quoting, and regression test
src/lib/policy/index.ts, nemoclaw-blueprint/policies/presets/whatsapp.yaml, test/policies.test.ts
listPresets() now uses a line-scoped regex to extract description: values. The WhatsApp preset's preset.description is converted to a quoted string. A new test verifies the parsed description equals the expected human-readable text and does not include the YAML network_policies: body.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Suggested labels

v0.0.58

Suggested reviewers

  • prekshivyas

Poem

🐰 I hopped through files with nimble paws,
found a regex eating extra claus.
We boxed the words and made them neat,
now presets list tidy, short, and sweet. 🥕

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The PR title clearly summarizes the main fix: making preset descriptions line-scoped to prevent regex greedy capture, directly addressing issue #4312.
Linked Issues check ✅ Passed The PR fully implements both suggested fixes from #4312: hardening the regex with stricter character class [^\\n]* and quoting the WhatsApp preset description.
Out of Scope Changes check ✅ Passed All changes are directly scoped to resolving issue #4312: regex fix, preset quoting, and regression test. No unrelated modifications present.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.

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

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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

@wscurran
Copy link
Copy Markdown
Contributor

✨ Thanks for submitting this detailed PR that fixes the preset description parsing issue. This proposes a fix for the bug reported in #4312 and updates the policy-list to keep preset descriptions line-scoped.


Related open issues:

@deepujain
Copy link
Copy Markdown
Contributor Author

Rebased on current main. build:cli and the focused policy description parser tests pass.

@cv cv added the integration: whatsapp WhatsApp integration or channel behavior label May 30, 2026
@wscurran wscurran added area: cli Command line interface, flags, terminal UX, or output area: messaging Messaging channels, bridges, manifests, or channel lifecycle area: policy Network policy, egress rules, presets, or sandbox policy bug-fix PR fixes a bug or regression feature PR adds or expands user-visible functionality and removed NemoClaw CLI labels Jun 3, 2026
@cv cv added the v0.0.59 Release target label Jun 4, 2026
Fixes NVIDIA#4312

Signed-off-by: Deepak Jain <deepujain@gmail.com>
@deepujain deepujain force-pushed the fix/4312-policy-description-parser branch from 0fba8bd to e5735f7 Compare June 4, 2026 19:37
@deepujain
Copy link
Copy Markdown
Contributor Author

Rebased onto current main and kept this as a clean signed one-commit stack. build:cli and the focused policy description parser tests pass.

@cv cv added v0.0.60 Release target and removed v0.0.59 Release target labels Jun 4, 2026
@prekshivyas prekshivyas self-assigned this Jun 5, 2026
@cv cv merged commit 57db85d into NVIDIA:main Jun 5, 2026
19 of 21 checks passed
miyoungc added a commit that referenced this pull request Jun 6, 2026
## Summary
- Adds the `v0.0.60` section to `docs/about/release-notes.mdx` using the
dev announcement from discussion #4877.
- Fills the source-doc gaps found during release-prep review across
inference, policy tiers, command behavior, security boundaries, Hermes
dashboard/tooling, runtime context, and troubleshooting.
- Refreshes generated agent skills under `.agents/skills/` from the
current Fern docs output and upgrades Fern from `5.44.3` to `5.45.0`.

## Source summary
- #4037 -> `docs/reference/architecture.mdx`,
`docs/about/how-it-works.mdx`, `docs/about/release-notes.mdx`: Documents
system-only runtime context that stays out of visible chat.
- #4875 -> `docs/reference/architecture.mdx`,
`docs/about/how-it-works.mdx`, `docs/about/release-notes.mdx`: Documents
try-first sandbox network/filesystem guidance and clearer failure
classification.
- #4788 -> `docs/security/best-practices.mdx`,
`docs/about/release-notes.mdx`: Documents shared OpenClaw
device-approval policy for startup and connect.
- #4768 -> `docs/reference/network-policies.mdx`,
`docs/network-policy/integration-policy-examples.mdx`,
`docs/get-started/quickstart.mdx`,
`docs/get-started/quickstart-hermes.mdx`, `docs/reference/commands.mdx`:
Documents `weather`, `public-reference`, and Hermes managed-tool gateway
preset behavior.
- #3788 and #4864 -> `docs/reference/network-policies.mdx`,
`docs/reference/commands.mdx`: Documents non-interactive policy-tier
fail-fast behavior and interactive prompt fallback.
- #4756 and #4866 -> `docs/reference/commands.mdx`: Documents env-aware
default sandbox resolution for `list`, `status`, and `tunnel` commands.
- #4320 -> `docs/reference/commands.mdx`: Documents `$$nemoclaw tunnel
status` behavior.
- #4328 -> `docs/reference/commands.mdx`: Documents line-scoped policy
preset descriptions in `policy-list`.
- #4580 and #4748 -> `docs/reference/architecture.mdx`: Documents
package-managed OpenShell gateway service and Docker-driver
gateway-marker behavior.
- #4598 -> `docs/manage-sandboxes/lifecycle.mdx`: Documents concurrent
gateway/dashboard cleanup isolation by sandbox name and port.
- #4777 -> `docs/reference/troubleshooting.mdx`: Documents Docker GPU
patch rollback behavior.
- #4610 -> `docs/reference/troubleshooting.mdx`,
`docs/reference/commands.mdx`: Keeps mutable OpenClaw config permission
guidance aligned and removes skipped experimental wording.
- #4868 -> `docs/reference/commands.mdx`: Keeps `.dockerignore` handling
for custom `onboard --from <Dockerfile>` contexts in generated skills.
- #4870 -> `docs/reference/commands.mdx`,
`docs/manage-sandboxes/runtime-controls.mdx`: Documents
`NEMOCLAW_MINIMAL_BOOTSTRAP` and generated skill coverage.
- #4641 -> `docs/inference/inference-options.mdx`,
`docs/reference/troubleshooting.mdx`: Documents local NVIDIA NIM
platform-digest pulls and served-model id adoption.
- #4810 and #4867 -> `docs/inference/inference-options.mdx`: Documents
stable NGC managed-vLLM image lineage and DGX Station DeepSeek V4 Flash
coverage.
- #4852 -> `docs/inference/use-local-inference.mdx`,
`docs/reference/troubleshooting.mdx`: Documents Ollama model fit
filtering, 16K context floor, cold-load retry, and failed-model
exclusion.
- #4847 -> `docs/inference/switch-inference-providers.mdx`: Documents
API-family sync, Hermes `api_mode`, and Bedrock Runtime exception.
- #4800 -> `docs/inference/tool-calling-reliability.mdx`: Documents
Nemotron managed-inference native tool-search fallback.
- #4333 -> `docs/inference/switch-inference-providers.mdx`: Documents
interactive multimodal input prompting.
- #4086 -> `docs/reference/troubleshooting.mdx`: Keeps proxy bypass
normalization in generated troubleshooting coverage.
- #4811 and #4855 -> `docs/get-started/quickstart-hermes.mdx`: Documents
prebuilt Hermes dashboard assets and TUI recovery without runtime
rebuilds.
- #4854 -> `docs/inference/switch-inference-providers.mdx`,
`docs/reference/commands.mdx`: Documents Hermes proxy API-key
placeholder preservation during inference switches.
- #4248 -> `docs/manage-sandboxes/messaging-channels.mdx`,
`.agents/skills/`: Keeps messaging enrollment behavior aligned with
manifest-hook implementation.
- #4771 -> `docs/security/best-practices.mdx`,
`docs/security/credential-storage.mdx`: Documents Hermes
placeholder-only secret boundary for sandbox-visible runtime files.
- #4787 -> `docs/security/best-practices.mdx`,
`docs/about/release-notes.mdx`: Documents expanded memory scanner
examples for OpenAI project keys and Slack app-level tokens.
- #4848 -> `docs/reference/commands.mdx`: Documents OpenClaw skill
install mirroring into the agent home directory.
- #4790 -> `docs/about/release-notes.mdx`: Uses the prior release-prep
structure and generated `.agents/skills/` refresh as the template for
this release.

## Verification
- `python3 scripts/docs-to-skills.py docs/ .agents/skills/ --prefix
nemoclaw-user --doc-platform fern-mdx`
- `python3 scripts/docs-to-skills.py docs/ .agents/skills/ skills/
--prefix nemoclaw-user --doc-platform fern-mdx --dry-run`
- `npm run docs`
- `git diff --check`
- skip-term scan across `docs/`, `.agents/skills/`, and `skills/`
- `npm run build:cli`
- `npm run typecheck:cli`
- Commit and pre-push hook suites, including markdownlint, gitleaks,
env-var docs gate, docs-to-skills verification, and skills YAML tests

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

## Summary by CodeRabbit

## Release Notes

* **New Features**
* DeepSeek-V4-Flash now available as default inference model for DGX
Station.
* Hermes dashboard improved with dedicated port and OAuth-authenticated
tool gateway selection.
* Added weather and public-reference policy presets for expanded agent
capabilities.
* Enhanced Ollama model selection with GPU memory filtering and
automatic retry for timeouts.

* **Bug Fixes**
  * Improved policy tier validation to prevent invalid configurations.
* Better sandbox cleanup scoping by port to prevent conflicts across
deployments.
  * Added GPU patch failure recovery with automatic rollback.

* **Documentation**
* Expanded troubleshooting guides for inference, security, and sandbox
lifecycle.
  * Added .dockerignore best practices for custom deployments.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Carlos Villela <cvillela@nvidia.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: cli Command line interface, flags, terminal UX, or output area: messaging Messaging channels, bridges, manifests, or channel lifecycle area: policy Network policy, egress rules, presets, or sandbox policy bug-fix PR fixes a bug or regression feature PR adds or expands user-visible functionality integration: whatsapp WhatsApp integration or channel behavior v0.0.60 Release target

Projects

None yet

5 participants