Skip to content

fix(status): report SSH-session count instead of a misleading Connected field - #7820

Merged
prekshivyas merged 11 commits into
mainfrom
fix/7805-status-ssh-sessions-label
Aug 1, 2026
Merged

fix(status): report SSH-session count instead of a misleading Connected field#7820
prekshivyas merged 11 commits into
mainfrom
fix/7805-status-ssh-sessions-label

Conversation

@Dongni-Yang

@Dongni-Yang Dongni-Yang commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

Summary

nemoclaw status and nemoclaw list printed a Connected: field that was derived only from the local interactive SSH-session count (ps | grep ssh), not from gateway or messaging health. A healthy foreground-managed gateway with a live Slack path but no open SSH session therefore showed Connected: no, and consumers that trust the summary classified an active agent as offline. This renames the field to SSH sessions: (reporting the count, or none) so it names what it actually measures, and drops the redundant, identically-misleading connected boolean from nemoclaw list --json.

Related Issue

Closes #7805

Scope note. This resolves the reported defect by removing the misleading signal: the Connected: line and the nemoclaw list --json connected boolean no longer report SSH-session presence as connection state, so an active agent is never misclassified as offline. It does not add a positive "effective managed Gateway and messaging state" indicator (the other half of the Expected Result); the genuine gateway diagnostic already exists as the gateway: down [state] (reason) line that nemoclaw status prints and exits 1 on. If you want the affirmative gateway/messaging readout, please reopen and we'll scope it as a follow-on.

Changes

  • Rename the Connected: line to SSH sessions: in nemoclaw status (status-text.ts) and nemoclaw list (inventory/index.ts); it reports the active SSH-session count, or none. SSH session(s) is the term already used by nemoclaw connect and the command docs.
  • Remove the redundant connected boolean from the nemoclaw list --json row and the SandboxInventoryRow type. It was derived from activeSessionCount, which already carries the honest value; the list marker now reads activeSessionCount directly (threshold > 0 unchanged, so marker behavior is identical). This is a small --json contract change (a redundant field is dropped, not added).
  • Update docs/reference/commands.mdx (and the regenerated agent-variant mirrors) for the renamed field.
  • Add a regression test (status-flow.test.ts, #7805): a sandbox with zero SSH sessions renders SSH sessions: none and never connection-negative language.

The genuine gateway-connectivity signal (the doctor checks and the gateway: down exit-1 diagnostic) is intentionally unchanged.

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:
  • 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: Updated docs/reference/commands.mdx documents the activeSessionCount integer-or-null contract, removal of connected, and exact SSH-session text behavior. All three generated agent variants contain the corrected contract. Focused tests pass 91/91, and npm run docs passes with 0 errors and two existing warnings.
  • Agent: Codex Desktop

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 check:diff passed when hooks were skipped or unavailable
  • Targeted behavior tests pass for the current change set — three focused status/inventory files pass 91/91; CLI and plugin builds, CLI typecheck, agent-variant sync, and git diff --check pass.
  • Applicable broad gate passed — not run; targeted tests cover this display/inventory change
  • Quality Gates section completed with required justifications or waivers
  • No secrets, API keys, or credentials committed
  • npm run docs builds without errors (doc changes only; two existing Fern warnings)
  • 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: Dongni Yang dongniy@nvidia.com
Signed-off-by: Charan Jagwani cjagwani@nvidia.com

Summary by CodeRabbit

  • Improvements
    • Updated sandbox status and inventory displays to show active SSH activity as SSH sessions: <count> (or SSH sessions: none) for both per-sandbox and global views.
    • Status output now omits SSH-session lines when session probing is unavailable.
    • Updated listing output to use numeric activeSessionCount instead of a connected boolean.
  • Documentation
    • Revised the command reference to match the new SSH session reporting wording and refined recovery verification guidance for OpenClaw/OpenShell behavior.

…ed field

`nemoclaw status` and `nemoclaw list` derived a `Connected:` field solely from
the local interactive SSH-session count (getActiveSandboxSessions -> ps | grep
ssh), not from gateway or messaging health. With a healthy foreground-managed
gateway and a live Slack path but no SSH session open, the field printed
`Connected: no`, so consumers that trust the summary classified an active agent
as offline.

- Rename the human-readable field to `SSH sessions:` (the term already used by
  `nemoclaw connect` and the docs) and report the count, or `none`.
- Drop the redundant `connected` boolean from the `nemoclaw list --json` row and
  the `SandboxInventoryRow` type; it was derived from `activeSessionCount`, which
  already carries the honest value. The `●` list marker now reads
  `activeSessionCount` directly.
- Update the command reference docs and add a regression test that zero sessions
  render `SSH sessions: none`, never connection-negative language.

The genuine gateway-connectivity signal remains the doctor / `gateway: down`
diagnostic, which is unchanged.

Refs #7805

Signed-off-by: Dongni Yang <dongniy@nvidia.com>
@Dongni-Yang Dongni-Yang self-assigned this Jul 29, 2026
@coderabbitai

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

The CLI now reports active SSH session counts instead of derived connection states. Inventory data exposes activeSessionCount, status output uses SSH sessions: <count> or none, unavailable probes omit the field, and tests and documentation reflect the updated contract.

Changes

SSH session reporting

Layer / File(s) Summary
Inventory contract and command rendering
src/lib/inventory/index.ts, src/lib/inventory/index.test.ts, test/cli/list-inference.test.ts, docs/reference/commands.mdx
Inventory rows now expose activeSessionCount; list and status output render labeled SSH session counts, while tests and command reference documentation use the updated wording. OpenClaw recovery documentation now describes gateway and host-forward verification.
Sandbox status session output
src/lib/actions/sandbox/status-text.ts, src/lib/actions/sandbox/status-flow.test.ts
Sandbox status renders numeric SSH session counts or none, with coverage for populated, empty, and unavailable session probes.

Estimated code review effort: 2 (Simple) | ~15 minutes

Suggested labels: area: sandbox, area: docs

Suggested reviewers: cjagwani, cv, disturbedsage5840c, jyaunches

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
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.
Title check ✅ Passed The title clearly and concisely describes replacing the misleading Connected field with an SSH-session count.
✨ 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/7805-status-ssh-sessions-label

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

@github-code-quality

github-code-quality Bot commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

Code Coverage Overview

Languages: TypeScript

TypeScript / code-coverage/plugin

The overall coverage in commit d269872 in the fix/7805-status-ssh-... branch remains at 96%, unchanged from commit 77ebb5b in the main branch.

TypeScript / code-coverage/cli

The overall coverage in commit d269872 in the fix/7805-status-ssh-... branch remains at 81%, unchanged from commit b5aaa27 in the main branch.

Show a code coverage summary of the most impacted files.
File main b5aaa27 fix/7805-status-ssh-... d269872 +/-
src/lib/domain/.../connect-env.ts 97% 89% -8%
src/lib/platform.ts 89% 84% -5%
src/lib/core/json-types.ts 100% 100% 0%
src/lib/inventory/index.ts 90% 90% 0%
src/lib/messagi...nnels/policy.ts 100% 100% 0%
src/lib/sandbox...rce-identity.ts 88% 88% 0%
src/lib/state/config-io.ts 93% 93% 0%
src/lib/tunnel/services.ts 75% 75% 0%
src/lib/actions.../status-text.ts 41% 42% +1%

Updated August 01, 2026 12:30 UTC

@github-actions

Copy link
Copy Markdown
Contributor

@github-actions

github-actions Bot commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

PR Review Advisor — No blocking findings reported

Advisor assessment: No blocking advisor findings reported
Next action: No advisor follow-up needed.
Findings: 0 blockers · 0 warnings · 0 suggestions

Model lanes

  • GPT-5.6 Terra (primary): Completed · high confidence · 0 blockers · 0 warnings · 0 suggestions
  • Nemotron 3 Ultra (second opinion): Completed · high confidence · 0 blockers · 0 warnings · 0 suggestions
  • Model comparison: normalized findings match; normalized E2E selections differ; severity counts match.
6 additional E2E selections from the second opinion

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

  • sandbox-operations: The completed second-opinion lane identified E2E coverage that the primary lane omitted.
  • ubuntu-repo-docker-post-reboot-recovery: The completed second-opinion lane identified E2E coverage that the primary lane omitted.
  • ubuntu-repo-cloud-openclaw: The completed second-opinion lane identified E2E coverage that the primary lane omitted.
  • sandbox-survival: The completed second-opinion lane identified E2E coverage that the primary lane omitted.
  • state-backup-restore: The completed second-opinion lane identified E2E coverage that the primary lane omitted.
  • full-e2e: 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: onboard-repair, onboard-resume

1 optional E2E recommendation
  • sessions-agents-cli

Workflow run details

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

@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 `@docs/reference/commands.mdx`:
- Line 1372: Update the `SSH sessions` documentation to state that the line is
emitted only when the active-session probe is available; when OpenShell or
session detection is unavailable, the line is omitted rather than reporting
`none`.

In `@src/lib/inventory/index.ts`:
- Around line 347-355: The list renderer in src/lib/inventory/index.ts lines
347-355 should preserve the existing session dot while emitting “SSH sessions:
<count|none>” for non-null activeSessionCount, using “none” for zero and
omitting the field when the probe is unavailable. Update
docs/reference/commands.mdx line 3084 to document this count-or-none output and
omission behavior; ensure the shared list rendering is authoritative for all
in-scope entrypoints.
🪄 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: 2ac85957-1284-4981-80bf-62fff8f6983f

📥 Commits

Reviewing files that changed from the base of the PR and between eeab81c and a2d56b2.

📒 Files selected for processing (6)
  • docs/reference/commands.mdx
  • src/lib/actions/sandbox/status-flow.test.ts
  • src/lib/actions/sandbox/status-text.ts
  • src/lib/inventory/index.test.ts
  • src/lib/inventory/index.ts
  • test/cli/list-inference.test.ts
💤 Files with no reviewable changes (1)
  • test/cli/list-inference.test.ts

Comment thread docs/reference/commands.mdx Outdated
Comment thread src/lib/inventory/index.ts
…vailable

Address CodeRabbit review on #7820: the `SSH sessions` line is emitted only when
the active-session probe is available; when OpenShell or session detection is
unavailable the line is omitted rather than reporting `none`.

Refs #7805

Signed-off-by: Dongni Yang <dongniy@nvidia.com>
@Dongni-Yang

Copy link
Copy Markdown
Contributor Author

Thanks @coderabbitai — resolutions below.

Finding 1 (docs, commands.mdx:1372) — addressed in f4e32b5. Both SSH sessions doc lines now state the line is omitted when the session probe is unavailable (rather than reporting none).

Finding 2 (list renderer, index.ts:347-355) — respectfully dismissing (misattribution). The cited doc line commands.mdx:3084 sits under the ### nemoclaw status section, which renders via showStatusCommand and does emit the labeled SSH sessions: <count|none> line (src/lib/inventory/index.ts:548) — so the doc matches. nemoclaw list (renderSandboxInventoryText) intentionally shows the compact marker; that is the pre-existing split (list = marker, status = labeled line). This PR preserved it, and no doc claims list prints the count. Adding a labeled count line to list would change its output format beyond the scope of #7805 (the misleading Connected label). Happy to file a follow-up if list/status parity is wanted.

@coderabbitai

coderabbitai Bot commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

git show --no-patch --format='%H%n%s' f4e32b5d9 2>/dev/null || true

docs_file=$(fd -t f '^commands\.mdx$' | head -n 1)
inventory_file=$(fd -t f '^index\.ts$' src/lib/inventory | head -n 1)

printf '\n--- docs: relevant headings and SSH-session wording ---\n'
rg -n -C 4 'SSH sessions|### nemoclaw status|### nemoclaw list|session probe' "$docs_file"

printf '\n--- inventory: renderer/status symbols ---\n'
ast-grep outline "$inventory_file" --items all --type function --match 'renderSandboxInventoryText|showStatusCommand' --view expanded

printf '\n--- inventory: relevant implementation excerpts ---\n'
rg -n -A 45 -B 8 'function renderSandboxInventoryText|function showStatusCommand|SSH sessions|activeSessionCount' "$inventory_file"

Length of output: 21596


@Dongni-Yang, thanks for the clarification and the verified evidence.

  • Finding 1: Confirmed—the updated documentation correctly distinguishes none (a completed probe with zero sessions) from an unavailable probe (line omitted).
  • Finding 2: Confirmed—my attribution was incorrect. commands.mdx:3084 documents nemoclaw status, and showStatusCommand renders the labeled count; nemoclaw list intentionally preserves the compact session marker. I’m withdrawing that finding.

🐇 ✓


✏️ Learnings added
Learnt from: Dongni-Yang
URL: https://github.com/NVIDIA/NemoClaw/pull/7820

Timestamp: 2026-07-29T12:25:06.124Z
Learning: In the NemoClaw CLI, `nemoclaw status` and `nemoclaw list` deliberately use different SSH-session presentations: `showStatusCommand` renders `SSH sessions: <count|none>` when the probe is available, whereas `renderSandboxInventoryText` preserves the compact `●` marker for a positive active session count. Documentation for the labeled count belongs to the `nemoclaw status` section, not `nemoclaw list`.

Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.

@wscurran wscurran added area: cli Command line interface, flags, terminal UX, or output bug-fix PR fixes a bug or regression labels Jul 29, 2026

@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)
src/lib/actions/sandbox/status-flow.test.ts (1)

151-160: 🎯 Functional Correctness | 🔵 Trivial | ⚡ Quick win

Cover the complete SSH-session migration contract.

This only exercises detected: true with zero sessions and rejects the exact "Connected: no" string. It would still pass if an unavailable probe incorrectly rendered SSH sessions: none, or if the removed field returned as another Connected: value. Add a detected: false case expecting no SSH sessions: line, and assert no legacy field prefix (for example, /^\s*Connected:/m).

As per path instructions, tests should prove the observable migrated contract rather than only a narrow implementation string.

🤖 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 `@src/lib/actions/sandbox/status-flow.test.ts` around lines 151 - 160, Add
coverage to the SSH-session migration tests around showSandboxStatus: add a
detected: false case that verifies the output contains no “SSH sessions:” line,
and strengthen the existing detected: true assertion to reject any legacy
“Connected:” field using a line-anchored prefix check rather than only
“Connected: no”.

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.

Nitpick comments:
In `@src/lib/actions/sandbox/status-flow.test.ts`:
- Around line 151-160: Add coverage to the SSH-session migration tests around
showSandboxStatus: add a detected: false case that verifies the output contains
no “SSH sessions:” line, and strengthen the existing detected: true assertion to
reject any legacy “Connected:” field using a line-anchored prefix check rather
than only “Connected: no”.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: cad0b2e4-940c-4a78-84ba-f777548e2a57

📥 Commits

Reviewing files that changed from the base of the PR and between dec587e and 2874b1f.

📒 Files selected for processing (2)
  • docs/reference/commands.mdx
  • src/lib/actions/sandbox/status-flow.test.ts
🚧 Files skipped from review as they are similar to previous changes (1)
  • docs/reference/commands.mdx

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

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

Approved exact head 33f09f7 after the .98 maintainer gate. The SSH-session status change and added regression coverage have no remaining security blocker; all commits are validly signed, both advisor lanes report 0 findings, no unresolved current threads remain, the unrelated CI flake passed on retry, and trusted plan 255968d9 passed onboard repair and resume. Documentation review found no user-facing update needed.

@cjagwani

Copy link
Copy Markdown
Collaborator

Exact-head review remains approved at 33f09f710501c58dd7936001637cb04afd8078cc, but the PR is still based on 795de982e26b400009bf1fc0f3826845d79acc4d while current main is 376beb50b6d184675283bdbc4f2eca18d7200a86. Maintainer edits are disabled, so the merge gate needs an author refresh before current-base CI/evidence can be accepted. I will re-gate the next quiet revision. This is a plain handoff comment, not Changes Requested.

@cjagwani

Copy link
Copy Markdown
Collaborator

Correction to my prior handoff: conflict-free base refreshes are explicitly waived. Please do not merge main solely for base currency; preserving exact-head CI/E2E and documentation receipts is preferred unless GitHub reports a real conflict or reviewed behavior requires a change. The existing approval/review evidence remains in force, and I will continue monitoring mergeability. This is a plain coordination comment, not Changes Requested.

@prekshivyas
prekshivyas enabled auto-merge (squash) August 1, 2026 12:35
@prekshivyas
prekshivyas merged commit d47ffe5 into main Aug 1, 2026
88 of 94 checks passed
@prekshivyas
prekshivyas deleted the fix/7805-status-ssh-sessions-label branch August 1, 2026 12:41
senthilr-nv added a commit that referenced this pull request Aug 4, 2026
<!-- markdownlint-disable MD041 -->
## Summary

Adds the canonical dated `v0.0.101` changelog entry that was missing
when the release tag was cut. This post-release recovery records the
shipped behavior on current `main` without changing or replacing the
existing tag.

## Changes

- Add `docs/changelog/2026-08-03.mdx` with the exact `## v0.0.101`
heading, release summary, detailed behavior changes, support boundaries,
and links to durable documentation.
- [#7317](#7317) ->
`docs/changelog/2026-08-03.mdx`: Records experimental OpenClaw Google
Chat support and its restricted credential and webhook boundary.
- [#7715](#7715) ->
`docs/changelog/2026-08-03.mdx`: Records strict onboarding recovery
state and authoritative resume identity.
- [#7749](#7749) ->
`docs/changelog/2026-08-03.mdx`: Records the provider-neutral policy
seam and unchanged runtime support boundary.
- [#7817](#7817) ->
`docs/changelog/2026-08-03.mdx`: Records preserved Hermes home-channel
assignments across rebuilds.
- [#7820](#7820) ->
`docs/changelog/2026-08-03.mdx`: Records the SSH-session status field
correction.
- [#7847](#7847) ->
`docs/changelog/2026-08-03.mdx`: Records fail-closed credential
filtering for migration and rebuild backups.
- [#7870](#7870) ->
`docs/changelog/2026-08-03.mdx`: Records sandbox-qualified in-sandbox
host command hints.
- [#7875](#7875) ->
`docs/changelog/2026-08-03.mdx`: Records Microsoft Teams stop and start
E2E coverage.
- [#7885](#7885) ->
`docs/changelog/2026-08-03.mdx`: Records Hermes managed gateway
detection in status.
- [#7889](#7889) ->
`docs/changelog/2026-08-03.mdx`: Records policy-authenticated HTTPS Pin
Runtime route revocation.
- [#7891](#7891) ->
`docs/changelog/2026-08-03.mdx`: Records default fallback for negative
timeout and polling overrides.
- [#7993](#7993) ->
`docs/changelog/2026-08-03.mdx`: Records correct sibling detection
during uninstall.
- [#7995](#7995) ->
`docs/changelog/2026-08-03.mdx`: Records absent configuration-hash
handling before shields lock.
- [#8001](#8001) ->
`docs/changelog/2026-08-03.mdx`: Records the dormant atomic managed
workload replacement foundation.
- [#8029](#8029) ->
`docs/changelog/2026-08-03.mdx`: Records repository terminology review
in PR Review Advisor.
- [#8031](#8031) ->
`docs/changelog/2026-08-03.mdx`: Records provider-neutral managed
snapshot authority.
- [#8032](#8032) ->
`docs/changelog/2026-08-03.mdx`: Records immutable managed clone handoff
contracts.
- [#8034](#8034) ->
`docs/changelog/2026-08-03.mdx`: Records the dormant provider-owned
clone transaction surface.
- [#8035](#8035) ->
`docs/changelog/2026-08-03.mdx`: Records the dormant Hermes managed
clone broker boundary.
- [#8036](#8036) ->
`docs/changelog/2026-08-03.mdx`: Records the dormant transactional
managed bootstrap boundary.
- [#8037](#8037) ->
`docs/changelog/2026-08-03.mdx`: Records dormant Docker bootstrap
primitives and the unchanged provider support boundary.
- [#8070](#8070) ->
`docs/changelog/2026-08-03.mdx`: Records consolidated sandbox
resource-limit E2E coverage.
- [#8071](#8071) ->
`docs/changelog/2026-08-03.mdx`: Records escaped and bounded CLI
validation diagnostics.
- [#8081](#8081) ->
`docs/changelog/2026-08-03.mdx`: Records bounded linear snapshot Base64
validation.
- [#8085](#8085) ->
`docs/changelog/2026-08-03.mdx`: Records commit-bound workflow approval
for eligible same-repository maintainers.
- [#8088](#8088) ->
`docs/changelog/2026-08-03.mdx`: Records Hermes managed-policy E2E
selection.
- [#8090](#8090) ->
`docs/changelog/2026-08-03.mdx`: Records pinned CI search-tool
provisioning.
- [#8106](#8106) ->
`docs/changelog/2026-08-03.mdx`: Records fallback from failed managed
OpenShell gateway startup.
- [#8107](#8107) ->
`docs/changelog/2026-08-03.mdx`: Records Hermes adapter lifecycle E2E
selection.
- [#8128](#8128) ->
`docs/changelog/2026-08-03.mdx`: Records the dormant transactional
Docker bootstrap adapter and rollback authority.
- [#8140](#8140) ->
`docs/changelog/2026-08-03.mdx`: Records Slack conflict scope across
independent OpenShell gateways.
- [#8147](#8147) ->
`docs/changelog/2026-08-03.mdx`: Records completion of durable v0.0.100
documentation audit follow-ups.

## 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 documentation-only
recovery does not change executable behavior.
- [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: Independently reviewed `docs/changelog/2026-08-03.mdx` at
commit `0bebe1f568e3dc85cf410aac1dfb8f8830070b85`. Its blob is
`82887920f9720eafd75db6b2271c35f7477edb9b`. The entry follows the
writing guide, controlled terminology, changelog structure, MDX SPDX
format, literal CLI-name rule, and root-absolute route requirements. It
accurately records the `v0.0.100...v0.0.101` release range, Announcement
#8162, accepted scope boundaries, and shipped security behavior. There
are no code samples. Focused changelog tests and the documentation build
pass for this commit.
- Agent: Codex Desktop independent documentation writer
<!-- docs-review-head-sha: 0bebe1f -->
<!-- docs-review-agents-blob-sha:
3dd7c24 -->

## Security Review

- Result: `PASS`
- Reviewed commit: `0bebe1f568e3dc85cf410aac1dfb8f8830070b85`
- Base commit: `643a4ab8b5f583d8555192a37927268b26022c51`
- Findings: None.
- Secrets and credentials: `PASS`. No credential values or secret files
are present.
- Input validation and data sanitization: `PASS`. No executable input
path changes.
- Authentication and authorization: `PASS`. No identity or permission
logic changes.
- Dependencies and third-party libraries: `PASS`. No dependency changes.
- Error handling and logging: `PASS`. No runtime path changes;
diagnostic-security claims are precise.
- Cryptography and data protection: `PASS`. No implementation changes.
- Configuration and security controls: `PASS`. No configuration,
container, port, or HTTP changes.
- Security testing: `PASS`. No coverage is removed; the entry records
shipped test and security behavior.
- System security: `PASS`. No runtime control changes; dormant and
non-activation boundaries are explicit.
- Agent: Codex Desktop independent security reviewer

## Verification

- [ ] PR description includes a `Signed-off-by:` line and every commit
appears as `Verified` in GitHub — verification is pending after commit
`0bebe1f568e3dc85cf410aac1dfb8f8830070b85` is pushed.
- [ ] 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 — commit hooks passed; pre-push is pending.
- [x] Targeted behavior tests pass for the current change set, or tests
are marked not applicable above — tests are not applicable to this
documentation-only recovery.
- [x] Applicable broad gate passed — not applicable to this
documentation-only recovery.
- [x] Quality Gates section completed with required justifications or
waivers
- [x] No secrets, API keys, credentials, or private keys are added by
this diff.
- [ ] `npm run docs` builds without warnings (doc changes only) — GitHub
documentation checks are pending.
- [x] Doc pages follow the [style
guide](https://github.com/NVIDIA/NemoClaw/blob/main/docs/CONTRIBUTING.md)
(doc changes only) — independent documentation review passed.
- [x] New doc pages include SPDX header and frontmatter (new pages only)
— the native changelog entry uses the required parser-safe MDX SPDX
comment and intentionally has no frontmatter.

GitHub CI is authoritative.
Focused changelog tests and `npm run docs` passed after the merge
refresh.

---
Signed-off-by: Apurv Kumaria <akumaria@nvidia.com>


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

* **New Features**
  * Added experimental Google Chat support.
  * Improved runtime and session status visibility.
  * Added onboarding recovery and persistence safeguards.
  * Added snapshot validation and dormant managed-workload support.

* **Bug Fixes**
* Improved backup sanitization, route handling, and gateway reliability.

* **Documentation**
  * Added the v0.0.101 changelog and related updates.

* **Tests**
  * Expanded end-to-end coverage and strengthened trusted CI validation.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Signed-off-by: Apurv Kumaria <akumaria@nvidia.com>
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
Co-authored-by: Carlos Villela <cvillela@nvidia.com>
Co-authored-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: cli Command line interface, flags, terminal UX, or output bug-fix PR fixes a bug or regression

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Ubuntu 24.04][CLI&UX] nemoclaw status reports Connected: no while the Slack Gateway is active

5 participants