Skip to content

fix(dcode): reap completed managed sessions - #6721

Merged
cv merged 8 commits into
mainfrom
codex/issue-6720
Jul 12, 2026
Merged

fix(dcode): reap completed managed sessions#6721
cv merged 8 commits into
mainfrom
codex/issue-6720

Conversation

@jyaunches

@jyaunches jyaunches commented Jul 12, 2026

Copy link
Copy Markdown
Contributor

Summary

Managed Deep Agents Code headless sessions now run through the existing session supervisor, so completion reaps their DCode and LangGraph descendants instead of leaving a retained process tree. The live Deep Code check now covers real headless completion, process-count recovery, bounded sandbox readiness, and reuse.

The interactive abrupt-relay case remains open: testing against pinned OpenShell 0.0.72 showed that its gateway retains the server-side relay/PTY after the client relay disappears, so the in-sandbox supervisor receives no SIGHUP, PTY HUP, or other safe disconnect signal. The issue explicitly permits fixing the UI-independent headless reproduction separately.

Related Issue

Refs #6720

Changes

  • Remove the non-interactive launcher bypass so -n and --non-interactive sessions use the same bounded descendant cleanup as interactive sessions.
  • Extend the live Deep Code lifecycle check with headless completion, baseline process counts, bounded sandbox readiness, and reuse evidence.
  • Add a focused launcher regression for the headless production boundary.
  • Update the Deep Agents Code quickstart to document supervision for headless sessions.

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: The launcher change removes only the headless bypass and keeps read-only identity commands direct; focused tests preserve parser/exit contracts and the live check proves cleanup without affecting sandbox readiness or reuse.
  • Non-success, skipped, or missing CI check accepted by maintainer — check name, approval link, and follow-up issue:

Verification

  • PR description includes the DCO sign-off declaration and every commit appears as Verified in GitHub
  • Normal pre-commit, commit-msg, and pre-push hooks passed, or npm run check:diff passed when hooks were skipped or unavailable
  • Targeted behavior tests pass for the current change set, or tests are marked not applicable above — npx vitest run test/dcode-session-supervisor.test.ts test/deepagents-code-tui-startup-check.test.ts test/langchain-deepagents-code-proxy-launcher.test.ts: 42 passed, 5 platform-skipped on macOS.
  • Applicable branch live gate passed — ubuntu-repo-cloud-langchain-deepagents-code run 29202535370: 13 passed, 0 failed in the lifecycle check; the overall selected target passed.
  • Applicable broad gate passed — npm test for broad runtime/test-harness changes; npm run check for repo-wide validation/coverage changes — command/result: not run; the issue defines the focused lifecycle suite and branch-level live target for this scoped launcher fix.
  • 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) — pinned Fern check passed with 0 errors and 2 existing warnings; route and agent-variant checks passed.
  • Doc pages follow the style guide (doc changes only)
  • New doc pages include SPDX header and frontmatter (new pages only) — no new pages.

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

@jyaunches jyaunches self-assigned this Jul 12, 2026
@coderabbitai

coderabbitai Bot commented Jul 12, 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

Managed Deep Agents Code one-shot invocations now use the session supervisor. The supervisor detects stdin disconnects and bounds child cleanup, while unit and end-to-end checks cover headless completion, interactive disconnects, Ctrl-C termination, process cleanup, and sandbox readiness.

Changes

Managed session lifecycle

Layer / File(s) Summary
Supervised launch routing
agents/langchain-deepagents-code/dcode-launcher.sh, test/langchain-deepagents-code-proxy-launcher.test.ts, docs/get-started/quickstart-langchain-deepagents-code.mdx
One-shot non-interactive invocations now use the session supervisor, with tests and documentation updated accordingly.
Stdin disconnect cleanup
agents/langchain-deepagents-code/dcode-session-supervisor.py, test/dcode-session-supervisor.test.ts
The supervisor polls stdin for disconnects, terminates supervised children, and bounds descendant cleanup.
TUI termination harness
test/deepagents-code-tui-startup-check.test.ts
The test harness supports disconnect termination markers, headless-session stubs, and updated sanitized-capture assertions.
Live session cleanup checks
test/e2e/e2e-cloud-experimental/checks/10-deepagents-code-tui-startup.sh
The live check exercises headless, disconnect, and Ctrl-C sessions while validating process cleanup and sandbox readiness.

Estimated code review effort: 3 (Moderate) | ~30 minutes

Sequence Diagram(s)

sequenceDiagram
  participant Caller
  participant dcode_launcher
  participant dcode_session_supervisor
  participant LangGraphTree
  Caller->>dcode_launcher: Start headless or interactive dcode session
  dcode_launcher->>dcode_session_supervisor: Launch supervised session
  dcode_session_supervisor->>LangGraphTree: Run managed child tree
  Caller-->>dcode_session_supervisor: Complete or disconnect
  dcode_session_supervisor->>LangGraphTree: Terminate and reap descendants
Loading

Suggested labels: bug-fix, area: sandbox

Suggested reviewers: cv, ericksoa

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 25.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 code and tests address #6720 by supervising headless sessions and cleaning up descendants on completion or disconnect.
Out of Scope Changes check ✅ Passed The docs and tests are directly tied to the session-reaping fix, with no unrelated changes evident.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly matches the main change: fixing managed DCode sessions to be reaped after completion.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/issue-6720

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

@github-code-quality

github-code-quality Bot commented Jul 12, 2026

Copy link
Copy Markdown
Contributor

Code Coverage Overview

Languages: TypeScript

TypeScript / code-coverage/plugin

The overall coverage remains at 96%, unchanged from the main branch.

TypeScript / code-coverage/cli

The overall coverage in the codex/issue-6720 branch remains at 79%, unchanged from the main branch.

Show a code coverage summary of the most impacted files.
File main 6eb7ca7 codex/issue-6720 308f3a4 +/-
src/lib/onboard...eway-process.ts 85% 79% -6%
src/lib/onboard...get-identity.ts 96% 93% -3%
src/lib/onboard...ess-identity.ts 90% 87% -3%
src/lib/state/m...ock-identity.ts 100% 98% -2%
src/lib/gateway...ntime-action.ts 83% 81% -2%
src/lib/core/wait.ts 93% 94% +1%

Updated July 12, 2026 18:45 UTC
Code Coverage is in Public Preview. Learn more and provide us with your feedback.

@github-actions

Copy link
Copy Markdown
Contributor

@github-actions

github-actions Bot commented Jul 12, 2026

Copy link
Copy Markdown
Contributor

E2E Advisor Recommendation

Required E2E: cloud-onboard
Optional E2E: None

Dispatch hint: cloud-onboard

Workflow run

Full advisor summary

E2E Recommendation Advisor

Base: origin/main
Head: HEAD
Confidence: high

Required E2E

  • cloud-onboard (high): Validates the complete hosted onboarding flow and runs the changed Deep Agents live check, including a real headless PONG request, process-tree cleanup to baseline, sandbox Ready state, and interactive TUI lifecycle.

Optional E2E

  • None.

New E2E recommendations

  • None.

Dispatch hint

  • Workflow: e2e.yaml
  • jobs input: cloud-onboard

@github-actions

Copy link
Copy Markdown
Contributor

E2E Target Results — ❌ Some tests failed

Run: 29200689140
Workflow ref: codex/issue-6720
Requested targets: ubuntu-repo-cloud-langchain-deepagents-code
Requested test IDs: (default — all default-enabled tests; explicit-only tests openshell-gateway-auth-contract, mcp-bridge-dev, hermes-gpu-startup, sandbox-rlimits-connect, and jetson-nvmap-gpu are skipped unless selected)
Summary: 0 passed, 1 failed, 0 cancelled, 0 skipped, 0 unknown

Test Result
live ❌ failure

Failed tests: live. Check run artifacts for logs.

@github-actions

github-actions Bot commented Jul 12, 2026

Copy link
Copy Markdown
Contributor

PR Review Advisor — Changes requested

Merge posture: Do not merge until required findings are fixed
Primary next action: Fix the required findings below.
Findings: 1 required · 0 warnings · 0 optional suggestions
Since last review: 0 prior items resolved · 1 still applies · 0 new items found

Required before merge

PRA-1 Required — Cover relay disconnect cleanup without Ctrl-C

  • Location: test/e2e/e2e-cloud-experimental/checks/10-deepagents-code-tui-startup.sh:345
  • Category: tests
  • Problem: The interactive runtime check reaches readiness and always sends Ctrl-C twice before waiting for exit. The added headless case covers normal completion, but no checked-in runtime case closes an active OpenShell PTY/relay without Ctrl-C and verifies cleanup through the deployed launcher/supervisor chain.
  • Impact: A regression in OpenShell relay-close signal delivery or the deployed session cleanup path can retain an interactive DCode/LangGraph process tree while the changed checks continue to pass, because they exercise explicit Ctrl-C or headless completion rather than relay disconnection.
  • Required action: Add one focused case to this existing live check that starts a managed interactive or long-running DCode session, closes/disconnects its production OpenShell PTY/relay without sending Ctrl-C, then requires supervisor, deepagents_code, and LangGraph process counts to return to the recorded baseline and the sandbox to remain Ready. Retain the explicit Ctrl-C case.
  • Verification: Inspect run_tui_expect: after NEMOCLAW_TUI_READY, it sends Ctrl-C twice. Confirm the new case instead disconnects the production OpenShell PTY/relay and polls the existing baseline and Ready helpers.
  • Test coverage: A checked-in runtime E2E case that launches DCode through the production OpenShell PTY/relay, disconnects that relay without Ctrl-C, and asserts bounded return to the existing DCode/LangGraph baseline plus sandbox_is_ready().
  • Evidence: test/e2e/e2e-cloud-experimental/checks/10-deepagents-code-tui-startup.sh:345-349 closes the ready TUI via two Ctrl-C sends. test/e2e/e2e-cloud-experimental/checks/10-deepagents-code-tui-startup.sh:449-470 adds headless completion, baseline, and Ready checks only. agents/langchain-deepagents-code/dcode-session-supervisor.py:139-163 contains distinct SIGHUP/SIGTERM disconnect handling that is not exercised by the changed runtime check.

Workflow run details

This is an automated review. Required findings need action before merge. Warnings and optional suggestions do not require a response or follow-up. A human maintainer makes the final merge decision.

@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.

🧹 Nitpick comments (1)
test/e2e/e2e-cloud-experimental/checks/10-deepagents-code-tui-startup.sh (1)

485-489: 🩺 Stability & Availability | 🔵 Trivial | ⚡ Quick win

Consider polling sandbox_is_ready instead of a single check.

Unlike wait_for_dcode_process_baseline, this check runs once immediately after headless completion. If sandbox status takes a moment to settle back to Ready, this could flake in CI even though the sandbox eventually recovers.

♻️ Proposed retry wrapper
-  if sandbox_is_ready; then
+  local ready_deadline=$((SECONDS + PROCESS_CLEANUP_TIMEOUT))
+  local is_ready=1
+  while [ "$SECONDS" -lt "$ready_deadline" ]; do
+    if sandbox_is_ready; then
+      is_ready=0
+      break
+    fi
+    sleep 1
+  done
+  if [ "$is_ready" -eq 0 ]; then
     pass "sandbox remained Ready after headless completion"
   else
     fail_test "sandbox was not Ready after headless completion"
   fi
🤖 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/e2e-cloud-experimental/checks/10-deepagents-code-tui-startup.sh`
around lines 485 - 489, Update the post-headless-completion check around
sandbox_is_ready to poll until the sandbox returns to Ready, using the existing
retry or wait pattern from wait_for_dcode_process_baseline where appropriate.
Only call fail_test after the polling timeout expires, while preserving the
current pass/fail messages.
🤖 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.

Nitpick comments:
In `@test/e2e/e2e-cloud-experimental/checks/10-deepagents-code-tui-startup.sh`:
- Around line 485-489: Update the post-headless-completion check around
sandbox_is_ready to poll until the sandbox returns to Ready, using the existing
retry or wait pattern from wait_for_dcode_process_baseline where appropriate.
Only call fail_test after the polling timeout expires, while preserving the
current pass/fail messages.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: cc7333b8-e870-4f29-97c9-f6c8c880c8e8

📥 Commits

Reviewing files that changed from the base of the PR and between 62b7749 and 17187e0.

📒 Files selected for processing (5)
  • agents/langchain-deepagents-code/dcode-launcher.sh
  • docs/get-started/quickstart-langchain-deepagents-code.mdx
  • test/deepagents-code-tui-startup-check.test.ts
  • test/e2e/e2e-cloud-experimental/checks/10-deepagents-code-tui-startup.sh
  • test/langchain-deepagents-code-proxy-launcher.test.ts
💤 Files with no reviewable changes (1)
  • agents/langchain-deepagents-code/dcode-launcher.sh

@github-actions

Copy link
Copy Markdown
Contributor

E2E Target Results — ❌ Some tests failed

Run: 29200982050
Workflow ref: codex/issue-6720
Requested targets: ubuntu-repo-cloud-langchain-deepagents-code
Requested test IDs: (default — all default-enabled tests; explicit-only tests openshell-gateway-auth-contract, mcp-bridge-dev, hermes-gpu-startup, sandbox-rlimits-connect, and jetson-nvmap-gpu are skipped unless selected)
Summary: 0 passed, 1 failed, 0 cancelled, 0 skipped, 0 unknown

Test Result
live ❌ failure

Failed tests: live. Check run artifacts for logs.

@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: 1

🤖 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 `@test/deepagents-code-tui-startup-check.test.ts`:
- Around line 101-109: Make the disconnect test’s EOF event depend on the
simulated termination in the fake exec path. Update the Tcl fake event setup and
the fake exec procedure around `fake_closed` so `eof` is enqueued only after the
expected `kill -TERM 4242` call, or make the EOF handling fail unless
`fake_closed` is set. Apply the same requirement to the additional
disconnect-test occurrence.
🪄 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: 41162f2d-c81a-4320-a505-b53c5533d210

📥 Commits

Reviewing files that changed from the base of the PR and between 17187e0 and 520542f.

📒 Files selected for processing (2)
  • test/deepagents-code-tui-startup-check.test.ts
  • test/e2e/e2e-cloud-experimental/checks/10-deepagents-code-tui-startup.sh
🚧 Files skipped from review as they are similar to previous changes (1)
  • test/e2e/e2e-cloud-experimental/checks/10-deepagents-code-tui-startup.sh

Comment thread test/deepagents-code-tui-startup-check.test.ts Outdated

@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.

🧹 Nitpick comments (1)
test/dcode-session-supervisor.test.ts (1)

253-262: 🩺 Stability & Availability | 🔵 Trivial | 💤 Low value

Guard against leaked long-sleeping processes on harness timeout.

supervisor.wait(timeout=10) has no except subprocess.TimeoutExpired. If a future regression under-terminates, this raises unhandled, failing the test correctly but leaving session.py's SIGTERM-ignoring descendant (30s sleep) running in the CI sandbox for the remainder of its sleep. Consider force-killing the tracked PIDs in a finally/except before re-raising, to bound worst-case leakage on test failure.

🤖 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/dcode-session-supervisor.test.ts` around lines 253 - 262, Update the
generated supervisor cleanup script around supervisor.wait(timeout=10) to catch
subprocess.TimeoutExpired, force-kill all tracked PIDs before re-raising the
timeout, and preserve the existing post-wait liveness check for successful
termination. Ensure cleanup runs on failure so SIGTERM-ignoring descendants
cannot remain sleeping in the CI sandbox.
🤖 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.

Nitpick comments:
In `@test/dcode-session-supervisor.test.ts`:
- Around line 253-262: Update the generated supervisor cleanup script around
supervisor.wait(timeout=10) to catch subprocess.TimeoutExpired, force-kill all
tracked PIDs before re-raising the timeout, and preserve the existing post-wait
liveness check for successful termination. Ensure cleanup runs on failure so
SIGTERM-ignoring descendants cannot remain sleeping in the CI sandbox.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: ff7447b8-f8a8-4da0-945d-e17712b1629e

📥 Commits

Reviewing files that changed from the base of the PR and between 520542f and 51150dd.

📒 Files selected for processing (2)
  • agents/langchain-deepagents-code/dcode-session-supervisor.py
  • test/dcode-session-supervisor.test.ts

@github-actions

Copy link
Copy Markdown
Contributor

E2E Target Results — ❌ Some tests failed

Run: 29201297543
Workflow ref: codex/issue-6720
Requested targets: ubuntu-repo-cloud-langchain-deepagents-code
Requested test IDs: (default — all default-enabled tests; explicit-only tests openshell-gateway-auth-contract, mcp-bridge-dev, hermes-gpu-startup, sandbox-rlimits-connect, and jetson-nvmap-gpu are skipped unless selected)
Summary: 0 passed, 1 failed, 0 cancelled, 0 skipped, 0 unknown

Test Result
live ❌ failure

Failed tests: live. Check run artifacts for logs.

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

Copy link
Copy Markdown
Contributor

E2E Target Results — ❌ Some tests failed

Run: 29201625618
Workflow ref: codex/issue-6720
Requested targets: ubuntu-repo-cloud-langchain-deepagents-code
Requested test IDs: (default — all default-enabled tests; explicit-only tests openshell-gateway-auth-contract, mcp-bridge-dev, hermes-gpu-startup, sandbox-rlimits-connect, and jetson-nvmap-gpu are skipped unless selected)
Summary: 0 passed, 1 failed, 0 cancelled, 0 skipped, 0 unknown

Test Result
live ❌ failure

Failed tests: live. Check run artifacts for logs.

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/e2e-cloud-experimental/checks/10-deepagents-code-tui-startup.sh (1)

560-568: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Reject normal exit markers in disconnect mode.

The branch only requires NEMOCLAW_TUI_DISCONNECTED; a regression could emit both that marker and NEMOCLAW_TUI_EXIT_CAPTURED:* and still pass. Mirror the unit test’s negative assertion so disconnect sessions prove they did not fall through the Ctrl-C exit path.

As per path instructions, this test should validate the observable disconnect behavior without accepting a mixed terminal state.

Suggested fix
-      if grep -q "NEMOCLAW_TUI_DISCONNECTED" "$plain_capture_file"; then
+      if grep -q "NEMOCLAW_TUI_DISCONNECTED" "$plain_capture_file" &&
+        ! grep -q "NEMOCLAW_TUI_EXIT_CAPTURED:" "$plain_capture_file"; then
🤖 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/e2e-cloud-experimental/checks/10-deepagents-code-tui-startup.sh`
around lines 560 - 568, Update the termination_mode="disconnect" branch in the
session validation logic to require NEMOCLAW_TUI_DISCONNECTED and reject any
NEMOCLAW_TUI_EXIT_CAPTURED:* marker, mirroring the unit test’s negative
assertion. Keep the existing clean-exit validation for non-disconnect modes
unchanged.

Source: Path instructions

🤖 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/e2e-cloud-experimental/checks/10-deepagents-code-tui-startup.sh`:
- Around line 560-568: Update the termination_mode="disconnect" branch in the
session validation logic to require NEMOCLAW_TUI_DISCONNECTED and reject any
NEMOCLAW_TUI_EXIT_CAPTURED:* marker, mirroring the unit test’s negative
assertion. Keep the existing clean-exit validation for non-disconnect modes
unchanged.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 791376e7-112b-4a0d-9f38-9a4c90aeb21e

📥 Commits

Reviewing files that changed from the base of the PR and between 9d40d20 and 24f3e90.

📒 Files selected for processing (2)
  • test/deepagents-code-tui-startup-check.test.ts
  • test/e2e/e2e-cloud-experimental/checks/10-deepagents-code-tui-startup.sh

@github-actions

Copy link
Copy Markdown
Contributor

E2E Target Results — ❌ Some tests failed

Run: 29201937216
Workflow ref: codex/issue-6720
Requested targets: ubuntu-repo-cloud-langchain-deepagents-code
Requested test IDs: (default — all default-enabled tests; explicit-only tests openshell-gateway-auth-contract, mcp-bridge-dev, hermes-gpu-startup, sandbox-rlimits-connect, and jetson-nvmap-gpu are skipped unless selected)
Summary: 0 passed, 1 failed, 0 cancelled, 0 skipped, 0 unknown

Test Result
live ❌ failure

Failed tests: live. Check run artifacts for logs.

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

Copy link
Copy Markdown
Contributor

E2E Target Results — ✅ All selected tests passed

Run: 29202218652
Workflow ref: codex/issue-6720
Requested targets: ubuntu-repo-cloud-langchain-deepagents-code
Requested test IDs: (default — all default-enabled tests; explicit-only tests openshell-gateway-auth-contract, mcp-bridge-dev, hermes-gpu-startup, sandbox-rlimits-connect, and jetson-nvmap-gpu are skipped unless selected)
Summary: 1 passed, 0 failed, 0 cancelled, 0 skipped, 0 unknown

Test Result
live ✅ success

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

Copy link
Copy Markdown
Contributor

E2E Target Results — ✅ All selected tests passed

Run: 29202535370
Workflow ref: codex/issue-6720
Requested targets: ubuntu-repo-cloud-langchain-deepagents-code
Requested test IDs: (default — all default-enabled tests; explicit-only tests openshell-gateway-auth-contract, mcp-bridge-dev, hermes-gpu-startup, sandbox-rlimits-connect, and jetson-nvmap-gpu are skipped unless selected)
Summary: 1 passed, 0 failed, 0 cancelled, 0 skipped, 0 unknown

Test Result
live ✅ success

@jyaunches

Copy link
Copy Markdown
Contributor Author

PRA-1 investigation / scope note

I exercised the requested production relay-disconnect case before scoping this PR to the issue's independently reproducible headless defect:

  • Run 29201625618 terminated the complete local ssh + OpenShell ProxyCommand process group after TUI readiness. The local relay disappeared, but the managed DCode/LangGraph tree remained above baseline.
  • Run 29201937216 attempted OpenSSH's protocol disconnect escape. In this OpenShell exec path it was forwarded into the remote TUI rather than handled locally, and no relay-close event reached the sandbox.
  • Polling the sandbox PTY for POLLHUP|POLLERR|POLLNVAL also remained false in the live target.

The pinned OpenShell v0.0.72 gateway bridge explains the result: client-stream EOF shuts down only the relay write half while the relay read half remains owned and waiting on the supervisor. The supervisor relay therefore retains its SSH Unix stream, so the remote PTY stays open and the in-sandbox DCode supervisor receives no SIGHUP or PTY HUP. An inactivity timeout would break legitimate idle interactive sessions and is not a safe substitute.

I removed the ineffective polling workaround rather than make the test pass without the production event. The PR body now says Refs #6720 and scopes this PR to headless completion, as the issue permits; #6720 remains open for the OpenShell/embedded-terminal follow-up.

Current evidence:

  • Focused suite: 42 passed, 5 platform-skipped on macOS.
  • Latest exact-target live run 29202535370: success; lifecycle check 13 passed, 0 failed.
  • All PR checks pass on b6036793a.

PRA-1 is valid for the full issue outcome, but it cannot be satisfied safely within NemoClaw's in-sandbox launcher on OpenShell 0.0.72.

@cv
cv merged commit 82aa4c2 into main Jul 12, 2026
51 checks passed
@cv
cv deleted the codex/issue-6720 branch July 12, 2026 21:47
cv pushed a commit that referenced this pull request Jul 14, 2026
<!-- markdownlint-disable MD041 -->
## Summary

Release-prep documentation for v0.0.82 now summarizes user-facing
changes merged since v0.0.81.
It also closes stale wording in the stopped-sandbox backup,
snapshot-clone, Ollama selection, and custom-policy authoring guidance.

## Changes

- Add the `v0.0.82` section to `docs/about/release-notes.mdx` with links
to the focused user guides.
- Document that snapshot clones receive a destination-owned dashboard
port before destructive replacement begins.
- Align `backup-all` guidance with eligible stopped Docker-driver
sandboxes that NemoClaw starts temporarily.
- Describe the running and stopped Ollama menu states without claiming
one fixed label.
- Document runtime rejection of catch-all hosts in custom policy files.

### Source summary

- [#6748](#6748) ->
`docs/about/release-notes.mdx`, `docs/manage-sandboxes/lifecycle.mdx`,
and `docs/reference/commands.mdx`: Summarize non-destructive sandbox
`stop` and `start` commands.
- [#6723](#6723) ->
`docs/about/release-notes.mdx`,
`docs/manage-sandboxes/backup-restore.mdx`, and
`docs/reference/commands.mdx`: Record temporary startup and cleanup for
eligible stopped-sandbox backups.
- [#6749](#6749) ->
`docs/about/release-notes.mdx` and
`docs/manage-sandboxes/backup-restore.mdx`: Document destination-owned
dashboard ports for snapshot clones.
- [#6764](#6764) ->
`docs/about/release-notes.mdx`: Summarize installer handling of
route-only onboarding placeholders.
- [#6771](#6771) ->
`docs/about/release-notes.mdx`, `docs/inference/set-up-vllm.mdx`,
`docs/inference/choose-inference-provider.mdx`,
`docs/reference/commands.mdx`, and
`docs/reference/platform-support.mdx`: Summarize managed-vLLM storage
gates, immutable image digests, and the explicit override boundary.
- [#6759](#6759) ->
`docs/about/release-notes.mdx`: Record early, actionable OpenShell
gateway-port conflict diagnostics.
- [#6753](#6753) ->
`docs/about/release-notes.mdx` and `docs/inference/set-up-ollama.mdx`:
Document truthful running and stopped Ollama menu states.
- [#6776](#6776) ->
`docs/about/release-notes.mdx`: Summarize proxy-independent loopback
readiness checks.
- [#6769](#6769) ->
`docs/about/release-notes.mdx`: Record compatible endpoint and agent
guidance when Chat Completions is unavailable.
- [#6730](#6730) ->
`docs/about/release-notes.mdx`: Summarize bounded reuse of an eligible
successful Chat Completions check.
- [#6768](#6768) ->
`docs/about/release-notes.mdx`: Record route-reservation repair during
resumed onboarding.
- [#6742](#6742) ->
`docs/about/release-notes.mdx`: Summarize pre-mutation resolution of
secret-free sandbox create intent.
- [#6721](#6721) ->
`docs/about/release-notes.mdx` and
`docs/get-started/quickstart-langchain-deepagents-code.mdx`: Record
bounded cleanup of completed managed Deep Agents headless sessions.
- [#6731](#6731) ->
`docs/about/release-notes.mdx` and
`docs/network-policy/customize-network-policy.mdx`: Document runtime
rejection of catch-all custom-policy destinations.
- [#6729](#6729) ->
`docs/about/release-notes.mdx` and `docs/get-started/prerequisites.mdx`:
Record the Node.js 22.19 minimum.
- [#6735](#6735) ->
`docs/about/release-notes.mdx` and
`docs/reference/platform-support.mdx`: Summarize the Ubuntu 26.04
userspace contract without claiming pending host or live validation.
- [#6775](#6775) ->
`docs/about/release-notes.mdx` and
`docs/resources/community-contributions.mdx`: Route independent
solutions outside canonical supported-product documentation.
- [#6740](#6740) ->
`docs/about/release-notes.mdx`: Summarize the semantic
dependency-upgrade contributor workflow.
- [#6777](#6777) ->
`docs/about/release-notes.mdx` and `docs/CONTRIBUTING.md`: Summarize the
route-safe documentation-refactor workflow.
- [#6741](#6741) ->
`docs/about/release-notes.mdx` and
`docs/security/openclaw-2026.6.10-dependency-review.md`: Summarize
reviewed npm archive verification and audit enforcement.
- [#6739](#6739) ->
`docs/about/release-notes.mdx` and
`docs/security/openclaw-2026.6.10-dependency-review.md`: Record the
locked offline dependency graph for the managed OpenClaw WeChat runtime.
- [#6737](#6737) ->
`docs/about/release-notes.mdx`: Record removal of the messaging build
plan from final OpenClaw and Hermes image environments.
- [#6733](#6733) ->
`docs/about/release-notes.mdx`: Summarize cached plugin dependency
layers for source and blueprint rebuilds.

### Skipped from docs-skip

- None. No commit or changed path in `v0.0.81..origin/main` matched
`openclaw-sandbox-permissive.yaml` or `config-show`, and the drafted
content contains none of the configured skip terms.

## 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
- [ ] Existing tests cover changed behavior — justification:
- [x] Tests not applicable — justification: This is a documentation-only
release-prep update; behavior is protected by the merged source PRs, and
the documentation build validates the changed routes and agent variants.
- [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:

## Verification

- [x] PR description includes the DCO sign-off declaration and every
commit appears as `Verified` in GitHub
- [x] Normal `pre-commit`, `commit-msg`, and `pre-push` hooks passed, or
`npm run check:diff` passed when hooks were skipped or unavailable
- [x] Targeted behavior tests pass for the current change set, or tests
are marked not applicable above — tests are not applicable for this
documentation-only change.
- [ ] Applicable broad gate passed — `npm test` for broad
runtime/test-harness changes; `npm run check` for repo-wide
validation/coverage changes — command/result: not run for this
documentation-only change.
- [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) — 0
errors; two pre-existing Fern warnings remain.
- [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)
— no new pages.

---
Signed-off-by: Charan Jagwani <cjagwani@nvidia.com>


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

## Summary by CodeRabbit

* **Documentation**
* Updated release notes with improvements to sandbox recovery,
onboarding, session management, policy validation, storage checks, and
system requirements.
  * Clarified Ollama setup instructions and status labels.
* Documented safer snapshot restoration, including dedicated ports and
protection against destructive failures.
* Expanded `backup-all` coverage to include eligible stopped sandboxes.
* Added guidance rejecting broad or catch-all network destinations in
custom policies.

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

Signed-off-by: Charan Jagwani <cjagwani@nvidia.com>
@wscurran wscurran added bug-fix PR fixes a bug or regression integration: dcode LangChain Deep Code integration behavior labels Jul 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug-fix PR fixes a bug or regression integration: dcode LangChain Deep Code integration behavior

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants