Skip to content

fix(dcode): support managed MCP snapshots on private tmpfs - #8024

Merged
senthilr-nv merged 11 commits into
mainfrom
codex/fix-dcode-mcp-snapshot-8018
Aug 1, 2026
Merged

fix(dcode): support managed MCP snapshots on private tmpfs#8024
senthilr-nv merged 11 commits into
mainfrom
codex/fix-dcode-mcp-snapshot-8018

Conversation

@jyaunches

@jyaunches jyaunches commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

Summary

Deep Agents Code managed MCP startup currently fails in OpenShell when seccomp rejects memfd_create and the workspace-backed /tmp rejects O_TMPFILE. This change gives only Deep Agents Code a bounded private tmpfs and uses it for the existing anonymous snapshot fallback after validating the mount and preserving the descriptor integrity contract.

Related Issue

Fixes #8018

Changes

  • Add a Deep Agents Code-only OpenShell driver configuration for a 1 MiB tmpfs at /run/nemoclaw-dcode-mcp with explicit noexec, mode 01777, and Docker-provided nosuid and nodev defaults that are verified at runtime.
  • Grant the Deep Agents Code sandbox policy access to that exact path and fail closed unless the runtime observes the expected mount point, filesystem, mode, options, and size bound.
  • Fall back from /tmp to the private mount only for O_TMPFILE unsupported errors while preserving anonymous/unlinked mode 000, a read-only descriptor, and file descriptor/device/inode/size/SHA-256 binding.
  • Extend focused and exact-main live coverage for startup, restart, repeated real tool calls, same-size tampering, rebuild, mount lifecycle, and residue cleanup.
  • Reject ambiguous stacked mount records so a compliant lower tmpfs cannot conceal a noncompliant effective mount, with a focused regression for the fail-closed behavior.
  • Update the OpenShell 0.0.85 migration security review with the production mount and evidence boundary.

The current requirement and consumer are issue #8018 and the managed Deep Agents Code MCP runtime. A direct /tmp retry is insufficient because the supported OpenShell workspace mount rejects O_TMPFILE; test/langchain-deepagents-code-managed-mcp-hardening.test.ts and the exact-main MCP proof protect the fallback contract.

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)

Quality Gates

  • Tests added or updated for changed behavior
  • Existing tests cover changed behavior — justification:
  • Tests not applicable — justification:
  • Docs updated for user-facing behavior changes
  • Docs not applicable — justification:
  • 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: Codex security checklist reviewed all nine categories; no findings. The mount is constant, bounded, Deep Agents Code-only, and fail-closed; no secrets, dependencies, ports, authentication, or authorization surfaces changed.
  • Non-success, skipped, or missing CI check accepted by maintainer — check name, approval link, and follow-up issue:

Documentation Writer Review

  • Documentation writer subagent reviewed the completed changes
  • Result: docs-updated
  • Evidence: docs/security/openshell-0.0.85-migration-review.md; all 16 changed files were independently reviewed at exact head d8bde4e79. The bounded fail-closed E2E timeout retry and its linear test assertion change no product behavior, and no additional documentation change was needed.
  • Agent: Codex Desktop documentation writer subagent

DGX Station Hardware Evidence

  • Tested on DGX Station
  • Tested commit:
  • Station profile/scenario:
  • Result:
  • Supporting evidence:

Verification

  • PR description includes a Signed-off-by: line and every commit appears as Verified in GitHub
  • 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
  • Targeted behavior tests pass for the current change set, or tests are marked not applicable above — command/result or justification: 77 focused MCP discovery, driver configuration, onboarding, migration, hardening, and platform-parity tests passed with 5 platform-specific skips; semantic E2E phase coverage passed 114 tests across 71 files.
  • Applicable broad gate passed — npm test for broad runtime/test-harness changes; npm run check for repo-wide validation/coverage changes — command/result: Fresh trusted CI and selected live E2E are running for head d8bde4e7925941ef6b6f97086fd1103d0384046d.
  • Quality Gates section completed with required justifications or waivers
  • No secrets, API keys, or credentials committed
  • npm run 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)

Signed-off-by: Julie Yaunches jyaunches@nvidia.com

Summary by CodeRabbit

  • Security

    • Added a private, size-limited temporary storage area for Deep Agents Code snapshots.
    • Applied stricter protections to prevent execution, set-user-ID, and device-file access.
    • Added validation and fail-closed behavior for invalid or unsafe temporary storage.
  • Reliability

    • Improved fallback handling when secure anonymous snapshots cannot be created normally.
    • Ensured temporary snapshot data is cleaned up across restarts, credential rotation, rebuilds, and tool calls.
  • Testing

    • Expanded coverage for snapshot isolation, tampering detection, mount configuration, and cleanup behavior.

Signed-off-by: Julie Yaunches <jyaunches@nvidia.com>
@jyaunches jyaunches added area: sandbox OpenShell sandbox lifecycle, runtime, config, or recovery area: security Security controls, permissions, secrets, or hardening integration: dcode LangChain Deep Code integration behavior security labels Jul 31, 2026
@jyaunches jyaunches self-assigned this Jul 31, 2026
@coderabbitai

coderabbitai Bot commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Deep Agents Code now uses a validated private tmpfs for anonymous MCP snapshot fallback. Onboarding provisions the mount for the target agent. Tests verify integrity, mount properties, cleanup, and lifecycle residue.

Changes

Managed MCP snapshot fallback

Layer / File(s) Summary
Snapshot fallback runtime
agents/langchain-deepagents-code/managed-dcode-runtime.py, test/langchain-deepagents-code-managed-mcp-hardening.test.ts
The runtime validates a mounted mode-1777 tmpfs with required options and a 1 MiB limit. It falls back only for unsupported anonymous temporary-file errors.
Sandbox tmpfs provisioning
src/lib/onboard/..., agents/langchain-deepagents-code/policy-additions.yaml, test/e2e/support/..., test/e2e/live/openshell-exact-main-driver-config.ts
Deep Agents Code receives a writable /run/nemoclaw-dcode-mcp tmpfs mount with noexec, nosuid, nodev, a 1 MiB size, and mode 1777.
Driver configuration delegation
test/e2e/live/openshell-driver-config-test-wrapper.ts, test/e2e/live/openshell-exact-main-driver-config.ts
The test wrapper makes driver configuration optional and conditionally injects it. Exact-main checks validate delegation and runtime mount properties.
Platform and lifecycle proof
test/e2e/live/openshell-exact-main-mcp-proof.ts, test/e2e/live/mcp-bridge.test.ts, docs/security/openshell-0.0.85-migration-review.md, test/openshell-0.0.85-migration-review.test.ts
Live checks cover blocked temporary-file primitives, descriptor integrity, tamper detection, cleanup, mount properties, and empty snapshot storage across lifecycle operations.

Estimated code review effort: 4 (Complex) | ~45 minutes

Sequence Diagram(s)

sequenceDiagram
  participant Onboarding
  participant Sandbox
  participant DeepAgentsCode
  participant MCPProof
  Onboarding->>Sandbox: create Deep Agents Code sandbox with tmpfs configuration
  Sandbox-->>Onboarding: mount /run/nemoclaw-dcode-mcp
  DeepAgentsCode->>DeepAgentsCode: attempt memfd and /tmp O_TMPFILE snapshot creation
  DeepAgentsCode->>Sandbox: validate private tmpfs and create fallback snapshot
  MCPProof->>DeepAgentsCode: run platform and residue checks
  MCPProof-->>MCPProof: verify integrity, mount properties, and empty storage
Loading

Possibly related PRs

Suggested labels: bug-fix, area: e2e, platform: container

Suggested reviewers: apurvvkumaria, cv

🚥 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
Linked Issues check ✅ Passed The implementation and tests address issue #8018 by adding a bounded private tmpfs fallback while preserving anonymity, integrity, security, cleanup, and lifecycle behavior.
Out of Scope Changes check ✅ Passed The code, policy, tests, and migration documentation changes directly support the managed MCP snapshot fallback required by issue #8018.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes the main change: private tmpfs support for managed Deep Agents Code MCP snapshots.
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/fix-dcode-mcp-snapshot-8018

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

@github-actions

Copy link
Copy Markdown
Contributor

@github-actions

github-actions Bot commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

PR Review Advisor — No blocking findings reported

Advisor assessment: No blocking advisor findings reported
Next action: Review the warnings below.
Findings: 0 blockers · 1 warning · 0 suggestions

Model lanes

  • GPT-5.6 Terra (primary): Completed · high confidence · 0 blockers · 1 warning · 0 suggestions
  • Nemotron 3 Ultra (second opinion): Completed · high confidence · 0 blockers · 0 warnings · 0 suggestions
  • Model comparison: normalized findings differ; normalized E2E selections differ; Nemotron reported the same number of blockers, 1 fewer warning, the same number of suggestions.
3 additional E2E selections from the second opinion

Advisory only. The primary lane did not select these E2E jobs or targets.

  • openshell-gateway-upgrade: The completed second-opinion lane identified E2E coverage that the primary lane omitted.
  • rebuild-hermes: The completed second-opinion lane identified E2E coverage that the primary lane omitted.
  • rebuild-openclaw: The completed second-opinion lane identified E2E coverage that the primary lane omitted.

Second-opinion E2E selections are advisory. They do not change the primary assessment or E2E / PR Gate.

E2E guidance

Advisory only. E2E / PR Gate selects and runs jobs independently.

Recommended E2E: cloud-inference, cloud-onboard, security-posture, mcp-bridge, mcp-bridge-dev, onboard-repair, onboard-resume, ubuntu-repo-cloud-langchain-deepagents-code

1 optional E2E recommendation
  • e2e-all
1 warning · 0 suggestions

Warnings

Warnings do not block.

PRA-1 Warning — Document the private-tmpfs fallback removal condition

  • Location: agents/langchain-deepagents-code/managed-dcode-runtime.py:966
  • Category: correctness
  • Problem: The new private-tmpfs fallback has a named invalid state, source boundary, and regression coverage, but neither its runtime rationale nor the migration record states when this compatibility path can be removed.
  • Impact: The compatibility mount can become a permanent security-sensitive runtime surface after the platform no longer requires it.
  • Recommendation: Add a concise comment or source-of-truth entry that names the upstream condition which permits deleting the private-tmpfs fallback and its mount/policy configuration.
  • Verification: Read the fallback rationale and migration record; confirm they name the precise upstream capability change that permits removal.
  • Test coverage: Existing focused tests cover allowed fallback and invalid-mount rejection; retain them until the stated removal condition is met, then remove the fallback and its tests together.
  • Evidence: agents/langchain-deepagents-code/managed-dcode-runtime.py:966-978 docs/security/openshell-0.0.85-migration-review.md:753-775 The fix(dcode): support managed MCP snapshots when memfd is blocked and /tmp lacks O_TMPFILE #8018 context identifies the OpenShell seccomp and workspace-backed `/tmp` limitations as the source condition.

Workflow run details

This automated review informs maintainers. Warnings and suggestions do not require a response. A maintainer decides whether to merge.

@github-code-quality

github-code-quality Bot commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

Code Coverage Overview

Languages: TypeScript

TypeScript / code-coverage/plugin

The overall coverage in commit d8bde4e in the codex/fix-dcode-mcp-... branch remains at 96%, unchanged from commit ffc1ae6 in the main branch.

TypeScript / code-coverage/cli

The overall coverage in commit d8bde4e in the codex/fix-dcode-mcp-... branch remains at 81%, unchanged from commit ffc1ae6 in the main branch.

Show a code coverage summary of the most impacted files.
File main ffc1ae6 codex/fix-dcode-mcp-... d8bde4e +/-
src/lib/sandbox...rce-identity.ts 88% 88% 0%
src/lib/onboard...erialization.ts 90% 92% +2%

Updated August 01, 2026 00:36 UTC

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@agents/langchain-deepagents-code/managed-dcode-runtime.py`:
- Around line 919-931: Update the mount-entry scan to continue through all
mountinfo lines instead of breaking on the first matching directory. In the loop
that sets mount_options, retain only the options from the last matching tmpfs
entry, while preserving fail-closed behavior when no valid tmpfs entry is found.

In `@docs/security/openshell-0.0.85-migration-review.md`:
- Around line 361-366: Reformat the affected documentation sections so each
sentence occupies a single raw line and ends with a period. Apply this
consistently to the sentences near the mount description and the additional
ranges identified in the review, without changing their technical content.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 00446d8f-f3d3-4341-95ca-bcc992d47930

📥 Commits

Reviewing files that changed from the base of the PR and between 1e57000 and 5cca8ea.

📒 Files selected for processing (11)
  • agents/langchain-deepagents-code/managed-dcode-runtime.py
  • agents/langchain-deepagents-code/policy-additions.yaml
  • docs/security/openshell-0.0.85-migration-review.md
  • src/lib/onboard/sandbox-create-plan-materialization.ts
  • src/lib/onboard/sandbox-create-plan.test.ts
  • test/e2e/live/mcp-bridge.test.ts
  • test/e2e/live/openshell-driver-config-test-wrapper.ts
  • test/e2e/live/openshell-exact-main-driver-config.ts
  • test/e2e/live/openshell-exact-main-mcp-proof.ts
  • test/e2e/support/openshell-exact-main-driver-config.test.ts
  • test/langchain-deepagents-code-managed-mcp-hardening.test.ts

Comment thread agents/langchain-deepagents-code/managed-dcode-runtime.py Outdated
Comment thread docs/security/openshell-0.0.85-migration-review.md Outdated

@senthilr-nv senthilr-nv left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Blocking: _validate_private_managed_mcp_tmpfs() stops at the first same-path mountinfo record. With stacked mounts, a compliant lower tmpfs can make an effective upper mount that lacks noexec, nosuid, or nodev pass validation. Resolve or reject stacked mounts and add a regression for this case.

Signed-off-by: Julie Yaunches <jyaunches@nvidia.com>
Signed-off-by: Julie Yaunches <jyaunches@nvidia.com>
Signed-off-by: Julie Yaunches <jyaunches@nvidia.com>

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
test/e2e/live/openshell-exact-main-driver-config.ts (1)

585-586: 🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

Pass EXACT_MAIN_DRIVER_CONFIG_JSON to the live wrapper.

Without driverConfigJson, the wrapper delegates sandbox create without --driver-config-json. The live proof does not validate the 1 MiB tmpfs contract.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@test/e2e/live/openshell-exact-main-driver-config.ts` around lines 585 - 586,
Update the exact-main-driver-config live wrapper configuration to pass
EXACT_MAIN_DRIVER_CONFIG_JSON as driverConfigJson alongside
delegatedCapabilityMarkers and label, ensuring sandbox create includes
--driver-config-json and validates the 1 MiB tmpfs contract.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Outside diff comments:
In `@test/e2e/live/openshell-exact-main-driver-config.ts`:
- Around line 585-586: Update the exact-main-driver-config live wrapper
configuration to pass EXACT_MAIN_DRIVER_CONFIG_JSON as driverConfigJson
alongside delegatedCapabilityMarkers and label, ensuring sandbox create includes
--driver-config-json and validates the 1 MiB tmpfs contract.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 8e03b0ff-8dc1-430c-9d71-3fd9114d8350

📥 Commits

Reviewing files that changed from the base of the PR and between e4b7592 and 4362e4b.

📒 Files selected for processing (5)
  • docs/security/openshell-0.0.85-migration-review.md
  • src/lib/onboard/sandbox-create-plan-materialization.ts
  • src/lib/onboard/sandbox-create-plan.test.ts
  • test/e2e/live/openshell-exact-main-driver-config.ts
  • test/e2e/support/openshell-exact-main-driver-config.test.ts
🚧 Files skipped from review as they are similar to previous changes (4)
  • src/lib/onboard/sandbox-create-plan.test.ts
  • src/lib/onboard/sandbox-create-plan-materialization.ts
  • test/e2e/support/openshell-exact-main-driver-config.test.ts
  • docs/security/openshell-0.0.85-migration-review.md

Signed-off-by: Julie Yaunches <jyaunches@nvidia.com>
Signed-off-by: Julie Yaunches <jyaunches@nvidia.com>

@senthilr-nv senthilr-nv left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

The stacked-mount validation now fails closed on ambiguous same-path entries, with focused regression coverage and an installed-runtime live proof. No blocking findings.

@senthilr-nv senthilr-nv assigned senthilr-nv and unassigned jyaunches Jul 31, 2026
Signed-off-by: Senthil Ravichandran <senthilr@nvidia.com>
@senthilr-nv
senthilr-nv enabled auto-merge (squash) July 31, 2026 22:27
senthilr-nv added a commit that referenced this pull request Jul 31, 2026
<!-- markdownlint-disable MD041 -->
## Summary

Make the trusted PR E2E coordinator account for the credential-window
job that the workflow couples to every MCP bridge selection. This
prevents successful evidence from being rejected as an unexpected job.

## Related Issue

Prerequisite for #8024.

## Changes

- Expand MCP bridge selections with the coupled credential-window job
before dispatch.
- Expect the coupled job's signed evidence during coordinator
validation.
- Add a regression test for the exact selection and shard contract.

## 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:
- [ ] Docs updated for user-facing behavior changes
- [x] Docs not applicable — justification: This changes only the
internal trusted PR E2E coordinator and does not change supported
product behavior.
- [x] Sensitive paths changed (security, policy, credentials, preflight,
onboarding, inference, runner, sandbox, or messaging)
- [x] Sensitive-path review completed or maintainer-approved waiver
recorded — reviewer/approval link/justification: The change preserves
fail-closed SHA, plan, correlation, job, and shard validation and only
adds the workflow-defined coupled job.
- [ ] Non-success, skipped, or missing CI check accepted by maintainer —
check name, approval link, and follow-up issue:

## Documentation Writer Review

- [x] Documentation writer subagent reviewed the completed changes
- Result: `no-docs-needed`
- Evidence: `tools/e2e/pr-e2e-gate.mts`,
`test/pr-e2e-gate-signal-shards.test.ts`
- Agent: Codex Desktop
<!-- docs-review-head-sha: a8e8406 -->
<!-- docs-review-agents-blob-sha: 3dd7c24 -->

## 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 — command/result or justification: 40
PR-gate tests and 14 MCP workflow-boundary tests passed.
- [ ] Applicable broad gate passed — `npm test` for broad
runtime/test-harness changes; `npm run check` for repo-wide
validation/coverage changes — command/result:
- [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: Senthil Ravichandran <senthilr@nvidia.com>

---------

Signed-off-by: Senthil Ravichandran <senthilr@nvidia.com>
Comment on lines +479 to +496
const result = spawnSync(
"/bin/bash",
[
"-c",
'source "$1"; CLI="$2"; SANDBOX_NAME="deepagents-sandbox"; NEMOCLAW_E2E_DCODE_REBUILD_RETRY_DELAY_SECONDS=0; rebuild_named_sandbox disabled',
"bash",
dcodeApprovalCheck,
mockCli,
],
{
encoding: "utf8",
env: {
...process.env,
MOCK_REBUILD_COUNTER_FILE: counterFile,
MOCK_REBUILD_MODE: mode,
},
},
);
Signed-off-by: Senthil Ravichandran <senthilr@nvidia.com>
@senthilr-nv
senthilr-nv merged commit 1be4fb3 into main Aug 1, 2026
82 of 84 checks passed
@senthilr-nv
senthilr-nv deleted the codex/fix-dcode-mcp-snapshot-8018 branch August 1, 2026 01:01
@senthilr-nv senthilr-nv mentioned this pull request Aug 1, 2026
23 tasks
senthilr-nv added a commit that referenced this pull request Aug 1, 2026
<!-- markdownlint-disable MD041 -->
## Summary

Adds the canonical dated changelog entry for `v0.0.100` so the
maintainer release plan can verify the pre-tag documentation
prerequisite. The entry summarizes the user-facing changes merged since
`v0.0.99` and links to the relevant guides.

## Changes

- Add `docs/changelog/2026-07-31.mdx` with the exact `## v0.0.100`
heading.
- Cover restored OpenClaw pairing, transactional replacement, Deep
Agents Code, onboarding recovery, lifecycle cleanup, Hermes builds, host
provenance, documentation, and trusted E2E evidence.
- Distinguish active Docker and Kubernetes runtime-bundle enforcement
from the still-inactive managed shared-state transaction foundation.

## Source Coverage

The release entry maps the doc-impacting merged PRs in the
`v0.0.99..main` release range to `docs/changelog/2026-07-31.mdx`: #8021,
#8024, #7973, #8028, #7947, #7788, #7884, #8023, #7969, #8020, #7989,
#8000, #7907, #7942, #7567, #8013, #7955, #8017, #8014, #8015, #7629,
#7644, #7821, #7971, and #7991.

PR #7974 was reviewed after the final rebase and excluded because it
changes internal maintainer-skill attribution policy and tests only; it
does not change a user-facing product or documentation surface.

## Type of Change

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

## Quality Gates

- [ ] Tests added or updated for changed behavior
- [x] Existing tests cover changed behavior — justification: the
changelog contract test validates the dated entry, version heading, SPDX
form, and route constraints.
- [ ] Tests not applicable — justification:
- [x] Docs updated for user-facing behavior changes
- [ ] Docs not applicable — justification:
- [ ] 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:
- [ ] Non-success, skipped, or missing CI check accepted by maintainer —
check name, approval link, and follow-up issue:

## Documentation Writer Review

- [x] Documentation writer subagent reviewed the completed changes
- Result: `docs-updated`
- Evidence: `docs/changelog/2026-07-31.mdx`; exact-head review passed
for `6093f44f`; writing rules and documentation style reviewed; `npx
vitest run test/changelog-docs.test.ts` passed 6/6; `npm run docs`
passed with zero Fern errors and two generic Fern upgrade notices.
- Agent: Codex Desktop
<!-- docs-review-head-sha: 6093f44 -->
<!-- docs-review-agents-blob-sha: 3dd7c24 -->

## DGX Station Hardware Evidence

- [ ] Tested on DGX Station
- Tested commit: Not applicable; no DGX Station host script changed.
- Station profile/scenario: Not applicable.
- Result: Not applicable.
- Supporting evidence: Not applicable.

## 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 — command/result or justification: `npx
vitest run test/changelog-docs.test.ts` passed 6/6 at `6093f44f`.
- [ ] 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 to a dated
prose-only release entry.
- [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) —
validation passed with zero errors; Fern emitted two generic upgrade
notices.
- [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)
— the changelog entry has the required parser-safe MDX SPDX header;
dated changelog entries intentionally do not use page frontmatter.

---

Signed-off-by: Senthil Ravichandran <senthilr@nvidia.com>


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

## Summary by CodeRabbit

* **Documentation**
  * Added release notes for v0.0.100.
* Documented improvements to restore pairing, sandbox replacement,
onboarding recovery, lifecycle cleanup, runtime handling, build support,
host readiness, and end-to-end validation.

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

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

Labels

area: sandbox OpenShell sandbox lifecycle, runtime, config, or recovery area: security Security controls, permissions, secrets, or hardening integration: dcode LangChain Deep Code integration behavior security

Projects

None yet

Development

Successfully merging this pull request may close these issues.

fix(dcode): support managed MCP snapshots when memfd is blocked and /tmp lacks O_TMPFILE

3 participants