Skip to content

chore(openshell): upgrade supported version to 0.0.71 - #5596

Merged
jyaunches merged 157 commits into
mainfrom
dep/openshell-v0.0.67
Jun 30, 2026
Merged

chore(openshell): upgrade supported version to 0.0.71#5596
jyaunches merged 157 commits into
mainfrom
dep/openshell-v0.0.67

Conversation

@ericksoa

@ericksoa ericksoa commented Jun 22, 2026

Copy link
Copy Markdown
Contributor

Summary

This PR advances NemoClaw's stable OpenShell support from 0.0.44 on current main to 0.0.71, including checksum-pinned installation, authenticated Docker-driver gateway startup, fail-closed recovery behavior, and unified E2E coverage. It preserves the existing CLI integration and adds the full nemoclaw <sandbox> logs --tail 50 denied-egress regression required by #4760.

Related Issue

Fixes #4760

Refs #5591
Refs #5513

Changes

  • Pin OpenShell 0.0.71 across the blueprint, installer, onboarding version checks, Brev launchable bootstrap, and unified E2E workflow, with published release SHA-256 digests for supported CLI and gateway assets.
  • Generate and validate NemoClaw-owned local TLS, mTLS user auth, and OpenShell sandbox JWT configuration for Docker-driver gateways; reject unauthenticated and wildcard-bind paths while preserving OpenShell-managed Docker bridge callbacks.
  • Keep the older-glibc gateway compatibility container behind explicit opt-in, loopback binding, dropped capabilities, no-new-privileges, and a validated Unix Docker socket.
  • Recover gateway JWT generation only when the recorded owner is provably gone, and keep malformed, live, replaced, or unprobeable lock states fail-closed.
  • Fail Hermes recovery closed when the sandbox lacks the secret-boundary validator, and accept markerless OpenShell relaunch output only after the gateway health probe succeeds.
  • Harden the Brev bootstrap by keeping /var/run/docker.sock restricted, using Docker-group execution for daemon commands, and removing mutable image pre-pulls and latest fallbacks.
  • Port OpenShell version, gateway-auth, upgrade, and network-policy coverage into .github/workflows/e2e.yaml and test/e2e/**, including the explicit live gateway-auth job and [All Platforms][Policy&Network] Policy DENIED log truncates [reason:...] field with literal '...' — full endpoint and policy name unreadable in 'nemoclaw <sb> logs --tail' #4760's full denied-reason assertion from logs --tail 50.
  • Update command, troubleshooting, release-note, and security documentation for the supported version, gateway trust boundary, compatibility opt-in, and recovery behavior.

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: Not applicable; this PR adds and updates focused unit, integration, workflow-contract, and live E2E coverage.
  • Tests not applicable — justification: Not applicable; runtime, installer, security, recovery, and workflow behavior changes.
  • Docs updated for user-facing behavior changes
  • Docs not applicable — justification: Not applicable; supported-version, gateway, compatibility, and recovery behavior is user-facing.
  • 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: maintainer approval, both final-head advisors, and the maintainer merge are recorded.
  • Non-success, skipped, or missing CI check accepted by maintainer — check name, approval link, and follow-up issue: Not applicable; no final-head CI exception or maintainer waiver is requested.

Verification

  • PR description includes the DCO sign-off declaration and every commit appears as Verified in GitHub
  • Git hooks passed during commit and push, or npx prek run --from-ref main --to-ref HEAD passes
  • Targeted tests pass for changed behavior
  • Full npm test passes (broad runtime changes only)
  • 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)

Current exact-head merge evidence:

  • Final branch head: 1c9f7ef97380c11ce44c8c49de53e25ff1ec752d; every PR commit is GitHub Verified. Maintainer merge commit: d091ff0d78461dc7e6d94ae42f00e7f6842491a3.
  • Required PR CI completed with 38 successful checks, no product/test failures, both PR Review Advisor lanes successful, and the recorded human approval remained effective at merge.
  • Targeted OpenShell run 28456574163 passed all four selected jobs at the exact head: version pin 2/2, gateway auth 1/1, network policy 1/1, and gateway upgrade/state restoration 4/4. Its workflow-level failure is only report-to-pr rejecting a comment after chore(openshell): upgrade supported version to 0.0.71 #5596 had already merged.
  • Full exact-head run 28456580551 passed 79 jobs, including full-e2e and openclaw-tui-chat-correlation, with four expected skips and zero E2E/code failures. Its workflow-level failure is likewise only the post-merge report-to-pr closed-PR guard.
  • Local verification passed npm run build:cli, npm run typecheck:cli, focused gateway/Brev/workflow regressions, version-pin, gateway-auth, unified-workflow selection, installer integration, test-size, source-shape, conditional, formatting, shell, and docs/link checks.
  • Advisor findings were dispositioned in code and tests: the compatibility container remains default-off, loopback-only, digest-pinned, capability-dropped, no-new-privileges, port-unpublished, and Unix-socket constrained; recovery no longer suggests the nonexistent policy-add command; source-boundary/removal markers and the chore(openshell): upgrade supported version to 0.0.72 #6020 landing order are documented.
  • Fern validation completed with no errors and two pre-existing environment/theme warnings (unauthenticated redirect validation and theme contrast), so the warning-free docs checkbox remains unchecked.
  • The unchecked full-npm test and warning-free-docs boxes remain honest local-proof boundaries; the exact-head GitHub matrices above are the merge evidence.

Signed-off-by: Aaron Erickson aerickson@nvidia.com

@coderabbitai

coderabbitai Bot commented Jun 22, 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

All hardcoded OpenShell version references are bumped from 0.0.44 to 0.0.67 across the repository. This affects the blueprint compatibility window, the install and CI shell scripts, the TypeScript fallback version constant, and all test fixtures and assertions that stub or verify OpenShell version strings. The CI script introduces new helper functions to abstract OpenShell release asset selection, checksum verification, and installation logic. Additionally, a new docker-driver gateway configuration module is introduced to manage Ed25519 JWT key bundles and TOML configuration files with restrictive permissions for use by the OpenShell gateway.

Changes

OpenShell Version Bump 0.0.44 → 0.0.67

Layer / File(s) Summary
Blueprint, install script, and source version constants
nemoclaw-blueprint/blueprint.yaml, scripts/install-openshell.sh, src/lib/onboard/openshell-version.ts, src/lib/onboard/openshell-install.ts
min_openshell_version/max_openshell_version in the blueprint, MIN_VERSION/MAX_VERSION/PIN_VERSION/DEV_MIN_VERSION in the install script, and the exported SUPPORTED_OPENSHELL_FALLBACK_VERSION constant and its inline usage are all changed from 0.0.44 to 0.0.67.
CI script defaults and installation helpers
scripts/brev-launchable-ci-cpu.sh
The OPENSHELL_VERSION default is updated to v0.0.67. New helper functions get_openshell_archive_name, verify_openshell_checksum, and install_openshell_cli_release are introduced to handle platform-specific asset selection, SHA-256 checksum verification with retry, and binary installation. The inline download/extract/install logic is replaced with a call to install_openshell_cli_release.
Test fixtures, assertions, and checksum validation
test/e2e-scenario/live/openshell-version-pin.test.ts, test/e2e/test-openshell-version-pin.sh, test/e2e/test-openshell-gateway-upgrade.sh, test/install-openshell-version-check.test.ts, test/brev-launchable-ci-cpu-checksum.test.ts
Fake openshell --version stubs, scenario wiring, download-log assertions, post-install binary verification, and "above the maximum" message substring checks are updated from 0.0.44/0.0.45 to 0.0.67/0.0.68. A new test case for pinned-release reinstall with installed version 0.0.68 is added. A new Vitest suite validates OpenShell CLI checksum verification (mismatch vs match) in the CI script with stubbed system binaries and log inspection.

Docker-driver Gateway JWT and TOML Configuration

Layer / File(s) Summary
Gateway config module: JWT and TOML generation
src/lib/onboard/docker-driver-gateway-config.ts
New module that ensures JWT state directory with restrictive permissions (0o700), persists or regenerates Ed25519 signing/public key pairs and random kid values (with 0o600 file permissions), derives a deterministic gateway ID from state directory basename, builds TOML configuration with base gateway environment entries and optional JWT sections, writes config files, and prepares gateway environment with OPENSHELL_GATEWAY_CONFIG pointing to the generated TOML.
Gateway environment integration
src/lib/onboard/docker-driver-gateway-env.ts, src/lib/onboard/docker-driver-gateway-env.test.ts
buildDockerDriverGatewayEnv imports and calls prepareDockerDriverGatewayConfigEnv to populate gateway config-related entries. The exported DOCKER_DRIVER_GATEWAY_RUNTIME_ENV_KEYS list now includes OPENSHELL_GATEWAY_CONFIG, treating it as a managed runtime environment variable in Debian-style gateway.env files. The default OPENSHELL_DISABLE_GATEWAY_AUTH assignment is removed from the initial env. Tests validate that the env includes the TOML path, that JWT bundles are persisted with correct permissions and paths, that existing bundles are reused, incomplete bundles are regenerated, and managed env file generation includes the config path.
Gateway launch and runtime integration
src/lib/onboard/docker-driver-gateway-launch.ts, src/lib/onboard/docker-driver-gateway-launch.test.ts, src/lib/onboard/docker-driver-gateway-runtime.test.ts
Imports and re-exports config builder utilities, removes local TOML/config-writing helpers, calls config preparation early in buildDockerDriverGatewayLaunch, and conditionally includes OPENSHELL_GATEWAY_CONFIG in the runtime identity's desired environment. Tests verify that generated TOML contains expected gateway settings, JWT sections with signing key paths, restrictive permissions, and that OPENSHELL_GATEWAY_CONFIG is propagated to the runtime identity and gateway state directory.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

  • NVIDIA/NemoClaw#5107: Modifies the same test/e2e-scenario/live/openshell-version-pin.test.ts file with the original 0.0.44/0.0.45 version-pin assertions that this PR supersedes.

Suggested labels

chore, feature

Suggested reviewers

  • cv

Poem

🐰 From forty-four to sixty-seven we bound,
With JWT keys and TOML profound,
Gateway configs now safely persist,
Checksums verified, permissions gist,
OpenShell blooms in the codebase bright! 🔐

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (2 warnings)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 8.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Title check ⚠️ Warning The title says 0.0.71, but the PR actually upgrades supported OpenShell version to 0.0.67. Change the title to reflect the actual target version, e.g. "chore(openshell): upgrade supported version to 0.0.67".
✅ Passed checks (3 passed)
Check name Status Explanation
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.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch dep/openshell-v0.0.67

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

@github-code-quality

github-code-quality Bot commented Jun 22, 2026

Copy link
Copy Markdown
Contributor

Code Coverage Overview

Languages: TypeScript

TypeScript / code-coverage/plugin

The overall coverage in the dep/openshell-v0.0.6... branch is 96%. Coverage data for the main branch is not yet available.

Show a code coverage summary of the most covered files.
File main dep/openshell-v0.0.6... 1c9f7ef +/-
nemoclaw/src/se...cret-scanner.ts 100%
nemoclaw/src/commands/slash.ts 100%
nemoclaw/src/li...bprocess-env.ts 100%
nemoclaw/src/bl...eprint/state.ts 98%
nemoclaw/src/onboard/config.ts 98%
nemoclaw/src/bl...int/snapshot.ts 97%
nemoclaw/src/bl...print/runner.ts 95%
nemoclaw/src/co...ration-state.ts 94%
nemoclaw/src/bl...ate-networks.ts 94%
nemoclaw/src/index.ts 94%

TypeScript / code-coverage/cli

The overall coverage in the dep/openshell-v0.0.6... branch is 67%. Coverage data for the main branch is not yet available.

Show a code coverage summary of the most covered files.
File main dep/openshell-v0.0.6... 1c9f7ef +/-
src/lib/actions...all/run-plan.ts 80%
src/lib/state/o...oard-session.ts 79%
src/lib/actions...dbox/rebuild.ts 75%
src/lib/state/sandbox.ts 72%
src/lib/onboard/preflight.ts 69%
src/lib/actions...licy-channel.ts 60%
src/lib/onboard...er-gpu-patch.ts 59%
src/lib/policy/index.ts 52%
src/lib/shields/index.ts 51%
src/lib/onboard.ts 20%

Updated June 30, 2026 15:41 UTC
Code Coverage is in Public Preview. Learn more and provide us with your feedback.

@ericksoa ericksoa changed the title Upgrade supported OpenShell to 0.0.67 chore(openshell): upgrade supported version to 0.0.67 Jun 22, 2026
@github-actions

github-actions Bot commented Jun 22, 2026

Copy link
Copy Markdown
Contributor

E2E Advisor Recommendation

Required E2E: openshell-gateway-auth-contract, cloud-onboard, onboard-resume, onboard-repair, openshell-version-pin, gateway-health-honest, hermes-sandbox-secret-boundary, hermes-root-entrypoint-smoke, gateway-guard-recovery, sandbox-rebuild, rebuild-hermes-stale-base, network-policy, channels-add-remove, messaging-providers
Optional E2E: rebuild-hermes, openshell-gateway-upgrade, concurrent-gateway-ports, credential-sanitization, double-onboard, docs-validation

Dispatch hint: openshell-gateway-auth-contract,cloud-onboard,onboard-resume,onboard-repair,openshell-version-pin,gateway-health-honest,hermes-sandbox-secret-boundary,hermes-root-entrypoint-smoke,gateway-guard-recovery,sandbox-rebuild,rebuild-hermes-stale-base,network-policy,channels-add-remove,messaging-providers

Workflow run

Full advisor summary

E2E Recommendation Advisor

Base: origin/main
Head: HEAD
Confidence: high

Required E2E

  • openshell-gateway-auth-contract (medium): Required for the OpenShell 0.0.71 Docker-driver gateway auth/JWT/mTLS boundary changed by this PR. This is explicit-only in the workflow, so it must be selected manually.
  • cloud-onboard (high): Required because onboarding and gateway bootstrap/runtime paths changed and can affect the full hosted onboarding user flow.
  • onboard-resume (high): Required by the onboarding resume rule: src/lib/onboard.ts and related gateway/orchestration changes can affect onboarding state transitions and resume behavior.
  • onboard-repair (high): Required by the onboarding resume rule and because gateway bootstrap/runtime repair paths changed.
  • openshell-version-pin (low): Required because scripts/install-openshell.sh and OpenShell version handling changed, and the PR pins/auth-contract behavior around OpenShell 0.0.71.
  • gateway-health-honest (medium): Required because Docker-driver gateway launch/readiness/runtime code changed; this job proves crashed gateway processes are not reported healthy.
  • hermes-sandbox-secret-boundary (medium): Required because the Hermes image, validator presence, and host recovery secret-boundary enforcement changed.
  • hermes-root-entrypoint-smoke (medium): Required because agents/hermes/Dockerfile changed and now asserts the boundary validator installation/executable state in the production image.
  • gateway-guard-recovery (medium): Required because connect/process/markerless recovery and gateway guard behavior changed, including refusal paths for secret-boundary failures.
  • sandbox-rebuild (high): Required because src/lib/actions/sandbox/rebuild.ts and rebuild-flow behavior changed, affecting sandbox lifecycle operations.
  • rebuild-hermes-stale-base (high): Required because Hermes stale-base/validator recovery semantics are changing from warning-and-continue to fail-closed; this is the closest existing stale Hermes rebuild boundary.
  • network-policy (medium): Required because the blueprint and messaging/network policy assets changed, affecting enforced egress policy.
  • channels-add-remove (medium): Required because messaging channel setup and policy preset code changed, which can affect real channel add/remove user flows.
  • messaging-providers (medium): Required because messaging provider/placeholder setup intersects with credential handling and policy changes in this PR.

Optional E2E

  • rebuild-hermes (high): Useful adjacent coverage for the normal Hermes rebuild path in addition to the stale-base variant.
  • openshell-gateway-upgrade (high): Useful confidence for OpenShell gateway upgrade behavior after changing version/auth-related gateway setup.
  • concurrent-gateway-ports (medium): Useful because gateway state directory, binding, and gateway identity logic changed; this can catch port/state isolation regressions.
  • credential-sanitization (medium): Useful adjacent check for credential redaction and secret handling after gateway auth and Hermes secret-boundary changes.
  • double-onboard (high): Useful for idempotence confidence because onboarding, gateway reuse, and Docker-driver gateway runtime files changed.
  • docs-validation (low): Useful because docs navigation and generated security/reference content changed.

New E2E recommendations

  • hermes-recovery-secret-boundary (high): Existing live coverage builds Hermes images and checks secret-boundary behavior, but there does not appear to be a dedicated live recovery scenario that simulates an older Hermes sandbox missing /usr/local/lib/nemoclaw/validate-hermes-env-secret-boundary.py and proves recover fails closed, stops gateway/dashboard processes, and emits re-image guidance.
    • Suggested test: Add a live hermes-recover-missing-validator-fail-closed E2E job or extend the Hermes secret-boundary live test with a recovery-mode scenario against a container/sandbox image with the validator removed.

Dispatch hint

  • Workflow: .github/workflows/e2e.yaml
  • jobs input: openshell-gateway-auth-contract,cloud-onboard,onboard-resume,onboard-repair,openshell-version-pin,gateway-health-honest,hermes-sandbox-secret-boundary,hermes-root-entrypoint-smoke,gateway-guard-recovery,sandbox-rebuild,rebuild-hermes-stale-base,network-policy,channels-add-remove,messaging-providers

@github-actions

github-actions Bot commented Jun 22, 2026

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Recommendation

Required Vitest E2E scenarios: gateway-health-honest-vitest, hermes-root-entrypoint-smoke-vitest, hermes-sandbox-secret-boundary-vitest, issue-4462-scope-upgrade-approval-vitest, openshell-gateway-auth-contract-vitest, openshell-gateway-upgrade-vitest, openshell-version-pin-vitest
Optional Vitest E2E scenarios: None

Dispatch required Vitest E2E scenarios:

  • gh workflow run e2e-vitest-scenarios.yaml --ref <pr-head-ref> --field jobs=gateway-health-honest-vitest
  • gh workflow run e2e-vitest-scenarios.yaml --ref <pr-head-ref> --field jobs=hermes-root-entrypoint-smoke-vitest
  • gh workflow run e2e-vitest-scenarios.yaml --ref <pr-head-ref> --field jobs=hermes-sandbox-secret-boundary-vitest
  • gh workflow run e2e-vitest-scenarios.yaml --ref <pr-head-ref> --field jobs=issue-4462-scope-upgrade-approval-vitest
  • gh workflow run e2e-vitest-scenarios.yaml --ref <pr-head-ref> --field jobs=openshell-gateway-auth-contract-vitest
  • gh workflow run e2e-vitest-scenarios.yaml --ref <pr-head-ref> --field jobs=openshell-gateway-upgrade-vitest
  • gh workflow run e2e-vitest-scenarios.yaml --ref <pr-head-ref> --field jobs=openshell-version-pin-vitest

Workflow run

Full Vitest E2E advisor summary

Vitest E2E Scenario Advisor

Base: origin/main
Head: HEAD
Confidence: high

Required Vitest E2E scenarios

  • gateway-health-honest-vitest: Focused free-standing Vitest job wired for changed live test test/e2e-scenario/live/gateway-health-honest.test.ts.
    • Dispatch: gh workflow run e2e-vitest-scenarios.yaml --ref <pr-head-ref> --field jobs=gateway-health-honest-vitest
  • hermes-root-entrypoint-smoke-vitest: Focused free-standing Vitest job wired for changed live test test/e2e-scenario/live/hermes-root-entrypoint-smoke.test.ts.
    • Dispatch: gh workflow run e2e-vitest-scenarios.yaml --ref <pr-head-ref> --field jobs=hermes-root-entrypoint-smoke-vitest
  • hermes-sandbox-secret-boundary-vitest: Focused free-standing Vitest job wired for changed live test test/e2e-scenario/live/hermes-sandbox-secret-boundary.test.ts.
    • Dispatch: gh workflow run e2e-vitest-scenarios.yaml --ref <pr-head-ref> --field jobs=hermes-sandbox-secret-boundary-vitest
  • issue-4462-scope-upgrade-approval-vitest: Focused free-standing Vitest job wired for changed live test test/e2e-scenario/live/issue-4462-scope-upgrade-approval.test.ts.
    • Dispatch: gh workflow run e2e-vitest-scenarios.yaml --ref <pr-head-ref> --field jobs=issue-4462-scope-upgrade-approval-vitest
  • openshell-gateway-auth-contract-vitest: Focused free-standing Vitest job wired for changed live test test/e2e-scenario/live/openshell-gateway-auth-source-contract.test.ts.
    • Dispatch: gh workflow run e2e-vitest-scenarios.yaml --ref <pr-head-ref> --field jobs=openshell-gateway-auth-contract-vitest
  • openshell-gateway-upgrade-vitest: Focused free-standing Vitest job wired for changed live test test/e2e-scenario/live/openshell-gateway-upgrade.test.ts.
    • Dispatch: gh workflow run e2e-vitest-scenarios.yaml --ref <pr-head-ref> --field jobs=openshell-gateway-upgrade-vitest
  • openshell-version-pin-vitest: Focused free-standing Vitest job wired for changed live test test/e2e-scenario/live/openshell-version-pin.test.ts.
    • Dispatch: gh workflow run e2e-vitest-scenarios.yaml --ref <pr-head-ref> --field jobs=openshell-version-pin-vitest

Optional Vitest E2E scenarios

  • None.

Relevant changed files

  • .github/workflows/e2e-vitest-scenarios.yaml
  • agents/hermes/Dockerfile
  • nemoclaw-blueprint/blueprint.yaml
  • scripts/brev-launchable-ci-cpu.sh
  • scripts/install-openshell.sh
  • src/lib/actions/sandbox/connect.ts
  • src/lib/actions/sandbox/hermes-secret-boundary-recovery.ts
  • src/lib/actions/sandbox/markerless-recovery.ts
  • src/lib/actions/sandbox/process-recovery.ts
  • src/lib/actions/sandbox/rebuild.ts
  • src/lib/actions/sandbox/sandbox-exec-output.ts
  • src/lib/actions/sandbox/sessions/gateway-rpc.ts
  • src/lib/agent/hermes-recovery-boundary.ts
  • src/lib/onboard.ts
  • src/lib/onboard/docker-driver-gateway-compat.ts
  • src/lib/onboard/docker-driver-gateway-config.ts
  • src/lib/onboard/docker-driver-gateway-env.ts
  • src/lib/onboard/docker-driver-gateway-jwt-bundle.ts
  • src/lib/onboard/docker-driver-gateway-launch.ts
  • src/lib/onboard/docker-driver-gateway-local-tls.ts
  • src/lib/onboard/docker-driver-gateway-runtime.ts
  • src/lib/onboard/gateway-http-readiness.ts
  • src/lib/onboard/messaging-channel-setup.ts
  • src/lib/onboard/openshell-install.ts
  • src/lib/onboard/openshell-version.ts
  • test/e2e-scenario/live/gateway-health-honest.test.ts
  • test/e2e-scenario/live/hermes-root-entrypoint-smoke.test.ts
  • test/e2e-scenario/live/hermes-sandbox-secret-boundary.test.ts
  • test/e2e-scenario/live/issue-4462-scope-upgrade-approval.test.ts
  • test/e2e-scenario/live/openshell-gateway-auth-source-contract-helpers.ts
  • test/e2e-scenario/live/openshell-gateway-auth-source-contract.test.ts
  • test/e2e-scenario/live/openshell-gateway-upgrade.test.ts
  • test/e2e-scenario/live/openshell-version-pin.test.ts
  • test/e2e-scenario/support-tests/e2e-scenarios-workflow.test.ts
  • test/e2e-scenario/support-tests/openshell-gateway-auth-contract-workflow-boundary.test.ts
  • test/e2e-scenario/support-tests/openshell-gateway-auth-source-contract-helpers.test.ts
  • tools/e2e-scenarios/workflow-boundary.mts

@github-actions

github-actions Bot commented Jun 22, 2026

Copy link
Copy Markdown
Contributor

PR Review Advisor — Changes requested

Merge posture: Do not merge yet
Primary next action: Resolve or justify PRA-1: Compatibility gateway opt-in still grants Docker API access from a host-network container.
Open items: 0 required · 1 warning · 0 suggestions · 1 test follow-up
Since last review: 4 prior items resolved · 1 still applies · 0 new items found

Action checklist

  • PRA-1 Resolve or justify: Compatibility gateway opt-in still grants Docker API access from a host-network container in src/lib/onboard/docker-driver-gateway-compat.ts:250
  • PRA-T1 Add or justify test follow-up: Acceptance clause

Findings index

ID Severity Category Location Required action
PRA-1 Resolve/justify security src/lib/onboard/docker-driver-gateway-compat.ts:250 Before merge, either remove this fallback now that OpenShell 0.0.71 supports glibc 2.28+ directly, or keep it only with an explicit current-PR risk acceptance that confirms it remains disabled by default, loopback-only, digest-pinned, documented as Docker-API privileged, and not broadened for `DOCKER_HOST`, bind address, image override, or default enablement.
Review findings by urgency: 0 required fixes, 1 item to resolve/justify, 0 in-scope improvements

⚠️ Resolve or justify before merge

Investigate these in the current review; either fix them, explain why they are not applicable, or document the accepted risk.

PRA-1 Resolve/justify — Compatibility gateway opt-in still grants Docker API access from a host-network container

  • Location: src/lib/onboard/docker-driver-gateway-compat.ts:250
  • Category: security
  • Problem: The compatibility launcher intentionally runs the OpenShell gateway shim with `docker run --network host` and mounts the host Docker socket into that container. This PR adds important controls: explicit `NEMOCLAW_OPENSHELL_GATEWAY_CONTAINER_PATCH=1`, loopback-only main listener, digest-pinned image validation, TCP `DOCKER_HOST` rejection, `--cap-drop ALL`, `no-new-privileges`, auth-disable scrubbing, and operator/security documentation. Even with those controls, Docker socket access remains effectively privileged host control if enabled on an untrusted host or with a compromised compat image/gateway binary.
  • Impact: An operator or automation that enables compatibility mode outside the intended trusted-local-host scenario could turn a gateway or compat-container compromise into host Docker control, undermining the sandbox boundary.
  • Recommended action: Before merge, either remove this fallback now that OpenShell 0.0.71 supports glibc 2.28+ directly, or keep it only with an explicit current-PR risk acceptance that confirms it remains disabled by default, loopback-only, digest-pinned, documented as Docker-API privileged, and not broadened for `DOCKER_HOST`, bind address, image override, or default enablement.
  • Expected follow-up: Resolve in this PR or explain why the risk is acceptable.
  • Verification: Read `buildContainerizedDockerDriverGatewayLaunch()` in `src/lib/onboard/docker-driver-gateway-compat.ts` around the `docker run` args and Docker socket `addVolume`, then compare with `docs/security/openshell-0.0.71-gateway-auth-review.mdx` and `src/lib/onboard/docker-driver-gateway-compat-container.test.ts` for default-off, digest, loopback bind, auth-disable, and Unix-socket guardrails.
  • Missing regression test: Existing tests already cover the critical guardrails: explicit opt-in for old glibc, digest-pinned image overrides, rejection of TCP `DOCKER_HOST`, rejection of wildcard compat bind, no Docker port publishing, and `OPENSHELL_DISABLE_GATEWAY_AUTH` scrubbing. No additional automated test is required if maintainers explicitly accept the documented Docker API privilege boundary.
  • Done when: The risk is fixed or explicitly justified in the PR. Verification: Read `buildContainerizedDockerDriverGatewayLaunch()` in `src/lib/onboard/docker-driver-gateway-compat.ts` around the `docker run` args and Docker socket `addVolume`, then compare with `docs/security/openshell-0.0.71-gateway-auth-review.mdx` and `src/lib/onboard/docker-driver-gateway-compat-container.test.ts` for default-off, digest, loopback bind, auth-disable, and Unix-socket guardrails.
  • Evidence: `buildContainerizedDockerDriverGatewayLaunch()` adds `--network host`, `--cap-drop ALL`, `--security-opt no-new-privileges`, mounts the gateway binary/state/sandbox binary directory, and conditionally mounts the Docker socket read-only. The new security review doc also states that the Docker socket remains a privileged host API even with a read-only bind mount.

💡 In-scope improvements

These are lower-risk, not throwaway. Prefer fixing them in this PR when they are local to changed code; defer only with rationale or a linked follow-up.

  • None.
Test follow-ups to resolve or justify

If these cover changed behavior, prefer adding them in this PR; otherwise state why existing coverage is enough or link the follow-up.

  • PRA-T1 Acceptance clause — “Ideally the line also carries a one-line hint pointing to `policy-add` so the operator knows the documented next step.” — add test evidence or identify existing coverage. The PR does not assert a `policy-add` hint in the denied log. The issue frames this as “Ideally,” and issue discussion identifies the truncation as upstream OpenShell OCSF emitter behavior while a later comment says the OpenShell upgrade should fix this issue. The required full-reason/no-truncation regression is covered by `test/e2e/live/network-policy.test.ts`.
Since last review details

Current findings, using the urgency labels above:

PRA-1 Resolve/justify — Compatibility gateway opt-in still grants Docker API access from a host-network container

  • Location: src/lib/onboard/docker-driver-gateway-compat.ts:250
  • Category: security
  • Problem: The compatibility launcher intentionally runs the OpenShell gateway shim with `docker run --network host` and mounts the host Docker socket into that container. This PR adds important controls: explicit `NEMOCLAW_OPENSHELL_GATEWAY_CONTAINER_PATCH=1`, loopback-only main listener, digest-pinned image validation, TCP `DOCKER_HOST` rejection, `--cap-drop ALL`, `no-new-privileges`, auth-disable scrubbing, and operator/security documentation. Even with those controls, Docker socket access remains effectively privileged host control if enabled on an untrusted host or with a compromised compat image/gateway binary.
  • Impact: An operator or automation that enables compatibility mode outside the intended trusted-local-host scenario could turn a gateway or compat-container compromise into host Docker control, undermining the sandbox boundary.
  • Recommended action: Before merge, either remove this fallback now that OpenShell 0.0.71 supports glibc 2.28+ directly, or keep it only with an explicit current-PR risk acceptance that confirms it remains disabled by default, loopback-only, digest-pinned, documented as Docker-API privileged, and not broadened for `DOCKER_HOST`, bind address, image override, or default enablement.
  • Expected follow-up: Resolve in this PR or explain why the risk is acceptable.
  • Verification: Read `buildContainerizedDockerDriverGatewayLaunch()` in `src/lib/onboard/docker-driver-gateway-compat.ts` around the `docker run` args and Docker socket `addVolume`, then compare with `docs/security/openshell-0.0.71-gateway-auth-review.mdx` and `src/lib/onboard/docker-driver-gateway-compat-container.test.ts` for default-off, digest, loopback bind, auth-disable, and Unix-socket guardrails.
  • Missing regression test: Existing tests already cover the critical guardrails: explicit opt-in for old glibc, digest-pinned image overrides, rejection of TCP `DOCKER_HOST`, rejection of wildcard compat bind, no Docker port publishing, and `OPENSHELL_DISABLE_GATEWAY_AUTH` scrubbing. No additional automated test is required if maintainers explicitly accept the documented Docker API privilege boundary.
  • Done when: The risk is fixed or explicitly justified in the PR. Verification: Read `buildContainerizedDockerDriverGatewayLaunch()` in `src/lib/onboard/docker-driver-gateway-compat.ts` around the `docker run` args and Docker socket `addVolume`, then compare with `docs/security/openshell-0.0.71-gateway-auth-review.mdx` and `src/lib/onboard/docker-driver-gateway-compat-container.test.ts` for default-off, digest, loopback bind, auth-disable, and Unix-socket guardrails.
  • Evidence: `buildContainerizedDockerDriverGatewayLaunch()` adds `--network host`, `--cap-drop ALL`, `--security-opt no-new-privileges`, mounts the gateway binary/state/sandbox binary directory, and conditionally mounts the Docker socket read-only. The new security review doc also states that the Docker socket remains a privileged host API even with a read-only bind mount.

Workflow run details

This is an automated, non-binding review; it still expects maintainers and agents to respond to each required or warning item. Treat suggestions as current-PR improvements when they touch changed code; defer only with maintainer rationale or a linked follow-up. A human maintainer must make the final merge decision.

Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
@github-actions

Copy link
Copy Markdown
Contributor

Selective E2E Results — ❌ Some jobs failed

Run: 27972854267
Target ref: 249b0cf2ee60ceb7d5f3f2861def0cc4e8722d22
Workflow ref: main
Requested jobs: openshell-gateway-upgrade-e2e
Summary: 0 passed, 1 failed, 0 cancelled, 0 skipped

Job Result
openshell-gateway-upgrade-e2e ❌ failure

Failed jobs: openshell-gateway-upgrade-e2e. Check run artifacts for logs.

@ericksoa ericksoa self-assigned this Jun 22, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Selective E2E Results — ❌ Some jobs failed

Run: 27974031163
Target ref: 6c93dfb49520cc4a794c373320df0ef88208d70b
Workflow ref: main
Requested jobs: openshell-gateway-upgrade-e2e
Summary: 0 passed, 1 failed, 0 cancelled, 0 skipped

Job Result
openshell-gateway-upgrade-e2e ❌ failure

Failed jobs: openshell-gateway-upgrade-e2e. Check run artifacts for logs.

@github-actions

Copy link
Copy Markdown
Contributor

Selective E2E Results — ❌ Some jobs failed

Run: 27974743925
Target ref: dep/openshell-v0.0.67
Requested jobs: all (no filter)
Summary: 7 passed, 58 failed, 0 cancelled, 3 skipped

Job Result
agent-turn-latency-e2e ❌ failure
bedrock-runtime-compatible-anthropic-e2e ❌ failure
brave-search-e2e ✅ success
channels-add-remove-e2e ❌ failure
channels-stop-start-hermes-e2e ❌ failure
channels-stop-start-openclaw-e2e ❌ failure
cloud-e2e ❌ failure
cloud-inference-e2e ❌ failure
cloud-onboard-e2e ❌ failure
common-egress-agent-e2e ❌ failure
concurrent-gateway-ports-e2e ❌ failure
credential-migration-e2e ❌ failure
credential-sanitization-e2e ❌ failure
cron-preflight-inference-local-e2e ❌ failure
device-auth-health-e2e ❌ failure
diagnostics-e2e ❌ failure
docs-validation-e2e ✅ success
double-onboard-e2e ❌ failure
gpu-double-onboard-e2e ⏭️ skipped
gpu-e2e ⏭️ skipped
gpu-jetson-nvmap-e2e ⏭️ skipped
hermes-anthropic-inference-switch-e2e ❌ failure
hermes-dashboard-e2e ❌ failure
hermes-discord-e2e ❌ failure
hermes-e2e ❌ failure
hermes-inference-switch-e2e ❌ failure
hermes-onboard-security-posture-e2e ❌ failure
hermes-root-entrypoint-smoke-e2e ✅ success
hermes-secret-boundary-e2e ✅ success
hermes-slack-e2e ❌ failure
inference-routing-e2e ❌ failure
issue-2478-crash-loop-recovery-e2e ❌ failure
issue-3600-gpu-proof-optional-e2e ✅ success
issue-4434-tui-unreachable-inference-e2e ✅ success
issue-4462-gateway-pinned-approval-characterization-e2e ❌ failure
issue-4462-scope-upgrade-approval-e2e ❌ failure
kimi-inference-compat-e2e ❌ failure
launchable-smoke-e2e ❌ failure
messaging-compatible-endpoint-e2e ❌ failure
messaging-providers-e2e ❌ failure
network-policy-e2e ❌ failure
onboard-negative-paths-e2e ❌ failure
onboard-repair-e2e ❌ failure
onboard-resume-e2e ❌ failure
openclaw-anthropic-inference-switch-e2e ❌ failure
openclaw-discord-pairing-e2e ❌ failure
openclaw-inference-switch-e2e ❌ failure
openclaw-onboard-security-posture-e2e ❌ failure
openclaw-skill-cli-e2e ❌ failure
openclaw-slack-pairing-e2e ❌ failure
openclaw-tui-chat-correlation-e2e ❌ failure
openshell-gateway-upgrade-e2e ❌ failure
overlayfs-autofix-e2e ✅ success
rebuild-hermes-e2e ❌ failure
rebuild-hermes-stale-base-e2e ❌ failure
rebuild-openclaw-e2e ❌ failure
runtime-overrides-e2e ❌ failure
sandbox-operations-e2e ❌ failure
sandbox-survival-e2e ❌ failure
sessions-agents-cli-e2e ❌ failure
shields-config-e2e ❌ failure
skill-agent-e2e ❌ failure
snapshot-commands-e2e ❌ failure
state-backup-restore-e2e ❌ failure
telegram-injection-e2e ❌ failure
token-rotation-e2e ❌ failure
tunnel-lifecycle-e2e ❌ failure
upgrade-stale-sandbox-e2e ❌ failure

Failed jobs: agent-turn-latency-e2e, bedrock-runtime-compatible-anthropic-e2e, channels-add-remove-e2e, channels-stop-start-hermes-e2e, channels-stop-start-openclaw-e2e, cloud-e2e, cloud-inference-e2e, cloud-onboard-e2e, common-egress-agent-e2e, concurrent-gateway-ports-e2e, credential-migration-e2e, credential-sanitization-e2e, cron-preflight-inference-local-e2e, device-auth-health-e2e, diagnostics-e2e, double-onboard-e2e, hermes-anthropic-inference-switch-e2e, hermes-dashboard-e2e, hermes-discord-e2e, hermes-e2e, hermes-inference-switch-e2e, hermes-onboard-security-posture-e2e, hermes-slack-e2e, inference-routing-e2e, issue-2478-crash-loop-recovery-e2e, issue-4462-gateway-pinned-approval-characterization-e2e, issue-4462-scope-upgrade-approval-e2e, kimi-inference-compat-e2e, launchable-smoke-e2e, messaging-compatible-endpoint-e2e, messaging-providers-e2e, network-policy-e2e, onboard-negative-paths-e2e, onboard-repair-e2e, onboard-resume-e2e, openclaw-anthropic-inference-switch-e2e, openclaw-discord-pairing-e2e, openclaw-inference-switch-e2e, openclaw-onboard-security-posture-e2e, openclaw-skill-cli-e2e, openclaw-slack-pairing-e2e, openclaw-tui-chat-correlation-e2e, openshell-gateway-upgrade-e2e, rebuild-hermes-e2e, rebuild-hermes-stale-base-e2e, rebuild-openclaw-e2e, runtime-overrides-e2e, sandbox-operations-e2e, sandbox-survival-e2e, sessions-agents-cli-e2e, shields-config-e2e, skill-agent-e2e, snapshot-commands-e2e, state-backup-restore-e2e, telegram-injection-e2e, token-rotation-e2e, tunnel-lifecycle-e2e, upgrade-stale-sandbox-e2e. Check run artifacts for logs.

Signed-off-by: Aaron Erickson <aerickson@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.

🧹 Nitpick comments (2)
src/lib/onboard/docker-driver-gateway-env.test.ts (1)

62-93: 🧹 Nitpick | 🔵 Trivial | ⚡ Quick win

Complete the permission validation for all JWT bundle files.

The test defines publicKeyPath (line 73) and kidPath (line 74) but only validates permissions for signingKeyPath (line 89). According to the upstream contract in docker-driver-gateway-config.ts, all three files are written with mode 0o600. For complete test coverage of the security requirement, validate permissions for all JWT bundle files.

🧪 Add permission checks for all JWT files
       expect(fs.statSync(configPath).mode & 0o777).toBe(0o600);
       expect(fs.statSync(signingKeyPath).mode & 0o777).toBe(0o600);
+      expect(fs.statSync(publicKeyPath).mode & 0o777).toBe(0o600);
+      expect(fs.statSync(kidPath).mode & 0o777).toBe(0o600);
     } finally {
🤖 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/onboard/docker-driver-gateway-env.test.ts` around lines 62 - 93, The
test in the "writes OpenShell 0.0.67 gateway JWT config into the managed state
dir" test case defines publicKeyPath and kidPath variables but only validates
file permissions for signingKeyPath. Add two additional expect statements to
validate that both publicKeyPath and kidPath have their file permissions set to
0o600 using fs.statSync().mode & 0o777, following the same pattern already
established for the signingKeyPath permission validation.
src/lib/onboard/docker-driver-gateway-config.ts (1)

30-69: 🧹 Nitpick | 🔵 Trivial | 💤 Low value

Consider removing redundant chmodSync calls after directory/file creation.

fs.mkdirSync(..., { mode }) and fs.writeFileSync(..., { mode }) already apply the specified mode. The subsequent chmodSync calls on lines 40, 44-47, and 55 are redundant when the files are freshly created.

However, the calls on lines 44-47 for the "all files exist" branch serve a useful purpose: they enforce correct permissions on pre-existing files that may have been tampered with or created with incorrect permissions. The pattern is acceptable for security-sensitive paths.

🤖 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/onboard/docker-driver-gateway-config.ts` around lines 30 - 69, Remove
redundant `chmodSync` calls in the ensureDockerDriverGatewayJwtBundle function.
Remove the chmodSync(stateDir, 0o700) call that immediately follows
fs.mkdirSync(stateDir, ...) since the mode is already specified in the mkdirSync
options, and remove the chmodSync(jwtDir, 0o700) call after fs.mkdirSync(jwtDir,
...) for the same reason. Also remove the chmodSync calls
(chmodSync(bundle.signingKeyPath), chmodSync(bundle.publicKeyPath), and
chmodSync(bundle.kidPath)) that follow the writeRestrictedFile calls, since
writeRestrictedFile likely already applies the correct file permissions. Keep
the chmodSync calls in the "all files exist" branch (when present ===
files.length) as they enforce correct permissions on pre-existing files that may
have been tampered with.
🤖 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/onboard/docker-driver-gateway-config.ts`:
- Around line 30-69: Remove redundant `chmodSync` calls in the
ensureDockerDriverGatewayJwtBundle function. Remove the chmodSync(stateDir,
0o700) call that immediately follows fs.mkdirSync(stateDir, ...) since the mode
is already specified in the mkdirSync options, and remove the chmodSync(jwtDir,
0o700) call after fs.mkdirSync(jwtDir, ...) for the same reason. Also remove the
chmodSync calls (chmodSync(bundle.signingKeyPath),
chmodSync(bundle.publicKeyPath), and chmodSync(bundle.kidPath)) that follow the
writeRestrictedFile calls, since writeRestrictedFile likely already applies the
correct file permissions. Keep the chmodSync calls in the "all files exist"
branch (when present === files.length) as they enforce correct permissions on
pre-existing files that may have been tampered with.

In `@src/lib/onboard/docker-driver-gateway-env.test.ts`:
- Around line 62-93: The test in the "writes OpenShell 0.0.67 gateway JWT config
into the managed state dir" test case defines publicKeyPath and kidPath
variables but only validates file permissions for signingKeyPath. Add two
additional expect statements to validate that both publicKeyPath and kidPath
have their file permissions set to 0o600 using fs.statSync().mode & 0o777,
following the same pattern already established for the signingKeyPath permission
validation.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 286e9009-1480-4bff-b3dc-1dd0e7012883

📥 Commits

Reviewing files that changed from the base of the PR and between 6c93dfb and 35e0f25.

📒 Files selected for processing (7)
  • src/lib/onboard/docker-driver-gateway-config.ts
  • src/lib/onboard/docker-driver-gateway-env.test.ts
  • src/lib/onboard/docker-driver-gateway-env.ts
  • src/lib/onboard/docker-driver-gateway-launch.test.ts
  • src/lib/onboard/docker-driver-gateway-launch.ts
  • src/lib/onboard/docker-driver-gateway-runtime.test.ts
  • test/brev-launchable-ci-cpu-checksum.test.ts
✅ Files skipped from review due to trivial changes (1)
  • src/lib/onboard/docker-driver-gateway-runtime.test.ts

@github-actions

Copy link
Copy Markdown
Contributor

Selective E2E Results — ❌ Some jobs failed

Run: 27976422477
Target ref: 35e0f25d4c6e966aaddff8866fa481200b49cc5e
Workflow ref: main
Requested jobs: all (no filter)
Summary: 5 passed, 59 failed, 1 cancelled, 3 skipped

Job Result
agent-turn-latency-e2e ❌ failure
bedrock-runtime-compatible-anthropic-e2e ❌ failure
brave-search-e2e ❌ failure
channels-add-remove-e2e ❌ failure
channels-stop-start-hermes-e2e ❌ failure
channels-stop-start-openclaw-e2e ❌ failure
cloud-e2e ❌ failure
cloud-inference-e2e ❌ failure
cloud-onboard-e2e ❌ failure
common-egress-agent-e2e ❌ failure
concurrent-gateway-ports-e2e ❌ failure
credential-migration-e2e ✅ success
credential-sanitization-e2e ❌ failure
cron-preflight-inference-local-e2e ❌ failure
device-auth-health-e2e ❌ failure
diagnostics-e2e ❌ failure
docs-validation-e2e ✅ success
double-onboard-e2e ❌ failure
gpu-double-onboard-e2e ⏭️ skipped
gpu-e2e ⏭️ skipped
gpu-jetson-nvmap-e2e ⏭️ skipped
hermes-anthropic-inference-switch-e2e ❌ failure
hermes-dashboard-e2e ❌ failure
hermes-discord-e2e ❌ failure
hermes-e2e ❌ failure
hermes-inference-switch-e2e ❌ failure
hermes-onboard-security-posture-e2e ❌ failure
hermes-root-entrypoint-smoke-e2e ✅ success
hermes-secret-boundary-e2e ✅ success
hermes-slack-e2e ❌ failure
inference-routing-e2e ❌ failure
issue-2478-crash-loop-recovery-e2e ❌ failure
issue-3600-gpu-proof-optional-e2e ✅ success
issue-4434-tui-unreachable-inference-e2e ❌ failure
issue-4462-gateway-pinned-approval-characterization-e2e ❌ failure
issue-4462-scope-upgrade-approval-e2e ❌ failure
kimi-inference-compat-e2e ❌ failure
launchable-smoke-e2e ❌ failure
messaging-compatible-endpoint-e2e ❌ failure
messaging-providers-e2e ❌ failure
network-policy-e2e ❌ failure
onboard-negative-paths-e2e ❌ failure
onboard-repair-e2e ❌ failure
onboard-resume-e2e ❌ failure
openclaw-anthropic-inference-switch-e2e ❌ failure
openclaw-discord-pairing-e2e ❌ failure
openclaw-inference-switch-e2e ❌ failure
openclaw-onboard-security-posture-e2e ❌ failure
openclaw-skill-cli-e2e ❌ failure
openclaw-slack-pairing-e2e ❌ failure
openclaw-tui-chat-correlation-e2e ❌ failure
openshell-gateway-upgrade-e2e ⚠️ cancelled
overlayfs-autofix-e2e ❌ failure
rebuild-hermes-e2e ❌ failure
rebuild-hermes-stale-base-e2e ❌ failure
rebuild-openclaw-e2e ❌ failure
runtime-overrides-e2e ❌ failure
sandbox-operations-e2e ❌ failure
sandbox-survival-e2e ❌ failure
sessions-agents-cli-e2e ❌ failure
shields-config-e2e ❌ failure
skill-agent-e2e ❌ failure
snapshot-commands-e2e ❌ failure
state-backup-restore-e2e ❌ failure
telegram-injection-e2e ❌ failure
token-rotation-e2e ❌ failure
tunnel-lifecycle-e2e ❌ failure
upgrade-stale-sandbox-e2e ❌ failure

Failed jobs: agent-turn-latency-e2e, bedrock-runtime-compatible-anthropic-e2e, brave-search-e2e, channels-add-remove-e2e, channels-stop-start-hermes-e2e, channels-stop-start-openclaw-e2e, cloud-e2e, cloud-inference-e2e, cloud-onboard-e2e, common-egress-agent-e2e, concurrent-gateway-ports-e2e, credential-sanitization-e2e, cron-preflight-inference-local-e2e, device-auth-health-e2e, diagnostics-e2e, double-onboard-e2e, hermes-anthropic-inference-switch-e2e, hermes-dashboard-e2e, hermes-discord-e2e, hermes-e2e, hermes-inference-switch-e2e, hermes-onboard-security-posture-e2e, hermes-slack-e2e, inference-routing-e2e, issue-2478-crash-loop-recovery-e2e, issue-4434-tui-unreachable-inference-e2e, issue-4462-gateway-pinned-approval-characterization-e2e, issue-4462-scope-upgrade-approval-e2e, kimi-inference-compat-e2e, launchable-smoke-e2e, messaging-compatible-endpoint-e2e, messaging-providers-e2e, network-policy-e2e, onboard-negative-paths-e2e, onboard-repair-e2e, onboard-resume-e2e, openclaw-anthropic-inference-switch-e2e, openclaw-discord-pairing-e2e, openclaw-inference-switch-e2e, openclaw-onboard-security-posture-e2e, openclaw-skill-cli-e2e, openclaw-slack-pairing-e2e, openclaw-tui-chat-correlation-e2e, overlayfs-autofix-e2e, rebuild-hermes-e2e, rebuild-hermes-stale-base-e2e, rebuild-openclaw-e2e, runtime-overrides-e2e, sandbox-operations-e2e, sandbox-survival-e2e, sessions-agents-cli-e2e, shields-config-e2e, skill-agent-e2e, snapshot-commands-e2e, state-backup-restore-e2e, telegram-injection-e2e, token-rotation-e2e, tunnel-lifecycle-e2e, upgrade-stale-sandbox-e2e. Check run artifacts for logs.

@github-actions

Copy link
Copy Markdown
Contributor

Selective E2E Results — ❌ Some jobs failed

Run: 27977024952
Target ref: 81550f9e5e4d550e17be18aba9129405ce8ee92f
Workflow ref: main
Requested jobs: all (no filter)
Summary: 5 passed, 59 failed, 1 cancelled, 3 skipped

Job Result
agent-turn-latency-e2e ❌ failure
bedrock-runtime-compatible-anthropic-e2e ❌ failure
brave-search-e2e ❌ failure
channels-add-remove-e2e ❌ failure
channels-stop-start-hermes-e2e ❌ failure
channels-stop-start-openclaw-e2e ❌ failure
cloud-e2e ❌ failure
cloud-inference-e2e ❌ failure
cloud-onboard-e2e ❌ failure
common-egress-agent-e2e ❌ failure
concurrent-gateway-ports-e2e ❌ failure
credential-migration-e2e ✅ success
credential-sanitization-e2e ❌ failure
cron-preflight-inference-local-e2e ❌ failure
device-auth-health-e2e ❌ failure
diagnostics-e2e ❌ failure
docs-validation-e2e ✅ success
double-onboard-e2e ❌ failure
gpu-double-onboard-e2e ⏭️ skipped
gpu-e2e ⏭️ skipped
gpu-jetson-nvmap-e2e ⏭️ skipped
hermes-anthropic-inference-switch-e2e ❌ failure
hermes-dashboard-e2e ❌ failure
hermes-discord-e2e ❌ failure
hermes-e2e ❌ failure
hermes-inference-switch-e2e ❌ failure
hermes-onboard-security-posture-e2e ❌ failure
hermes-root-entrypoint-smoke-e2e ✅ success
hermes-secret-boundary-e2e ✅ success
hermes-slack-e2e ❌ failure
inference-routing-e2e ❌ failure
issue-2478-crash-loop-recovery-e2e ❌ failure
issue-3600-gpu-proof-optional-e2e ✅ success
issue-4434-tui-unreachable-inference-e2e ❌ failure
issue-4462-gateway-pinned-approval-characterization-e2e ❌ failure
issue-4462-scope-upgrade-approval-e2e ❌ failure
kimi-inference-compat-e2e ❌ failure
launchable-smoke-e2e ❌ failure
messaging-compatible-endpoint-e2e ❌ failure
messaging-providers-e2e ❌ failure
network-policy-e2e ❌ failure
onboard-negative-paths-e2e ❌ failure
onboard-repair-e2e ❌ failure
onboard-resume-e2e ❌ failure
openclaw-anthropic-inference-switch-e2e ❌ failure
openclaw-discord-pairing-e2e ❌ failure
openclaw-inference-switch-e2e ❌ failure
openclaw-onboard-security-posture-e2e ❌ failure
openclaw-skill-cli-e2e ❌ failure
openclaw-slack-pairing-e2e ❌ failure
openclaw-tui-chat-correlation-e2e ❌ failure
openshell-gateway-upgrade-e2e ⚠️ cancelled
overlayfs-autofix-e2e ❌ failure
rebuild-hermes-e2e ❌ failure
rebuild-hermes-stale-base-e2e ❌ failure
rebuild-openclaw-e2e ❌ failure
runtime-overrides-e2e ❌ failure
sandbox-operations-e2e ❌ failure
sandbox-survival-e2e ❌ failure
sessions-agents-cli-e2e ❌ failure
shields-config-e2e ❌ failure
skill-agent-e2e ❌ failure
snapshot-commands-e2e ❌ failure
state-backup-restore-e2e ❌ failure
telegram-injection-e2e ❌ failure
token-rotation-e2e ❌ failure
tunnel-lifecycle-e2e ❌ failure
upgrade-stale-sandbox-e2e ❌ failure

Failed jobs: agent-turn-latency-e2e, bedrock-runtime-compatible-anthropic-e2e, brave-search-e2e, channels-add-remove-e2e, channels-stop-start-hermes-e2e, channels-stop-start-openclaw-e2e, cloud-e2e, cloud-inference-e2e, cloud-onboard-e2e, common-egress-agent-e2e, concurrent-gateway-ports-e2e, credential-sanitization-e2e, cron-preflight-inference-local-e2e, device-auth-health-e2e, diagnostics-e2e, double-onboard-e2e, hermes-anthropic-inference-switch-e2e, hermes-dashboard-e2e, hermes-discord-e2e, hermes-e2e, hermes-inference-switch-e2e, hermes-onboard-security-posture-e2e, hermes-slack-e2e, inference-routing-e2e, issue-2478-crash-loop-recovery-e2e, issue-4434-tui-unreachable-inference-e2e, issue-4462-gateway-pinned-approval-characterization-e2e, issue-4462-scope-upgrade-approval-e2e, kimi-inference-compat-e2e, launchable-smoke-e2e, messaging-compatible-endpoint-e2e, messaging-providers-e2e, network-policy-e2e, onboard-negative-paths-e2e, onboard-repair-e2e, onboard-resume-e2e, openclaw-anthropic-inference-switch-e2e, openclaw-discord-pairing-e2e, openclaw-inference-switch-e2e, openclaw-onboard-security-posture-e2e, openclaw-skill-cli-e2e, openclaw-slack-pairing-e2e, openclaw-tui-chat-correlation-e2e, overlayfs-autofix-e2e, rebuild-hermes-e2e, rebuild-hermes-stale-base-e2e, rebuild-openclaw-e2e, runtime-overrides-e2e, sandbox-operations-e2e, sandbox-survival-e2e, sessions-agents-cli-e2e, shields-config-e2e, skill-agent-e2e, snapshot-commands-e2e, state-backup-restore-e2e, telegram-injection-e2e, token-rotation-e2e, tunnel-lifecycle-e2e, upgrade-stale-sandbox-e2e. Check run artifacts for logs.

@ericksoa ericksoa added dependencies Pull requests that update a dependency file chore Build, CI, dependency, or tooling maintenance area: install Install, setup, prerequisites, or uninstall flow area: packaging Packages, images, registries, installers, or distribution area: sandbox OpenShell sandbox lifecycle, runtime, config, or recovery area: security Security controls, permissions, secrets, or hardening labels Jun 22, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Selective E2E Results — ❌ Some jobs failed

Run: 27977340548
Target ref: e0b25ac71a52ac46beaed6e810a47a2baef4dfb1
Workflow ref: main
Requested jobs: all (no filter)
Summary: 5 passed, 60 failed, 0 cancelled, 3 skipped

Job Result
agent-turn-latency-e2e ❌ failure
bedrock-runtime-compatible-anthropic-e2e ❌ failure
brave-search-e2e ❌ failure
channels-add-remove-e2e ❌ failure
channels-stop-start-hermes-e2e ❌ failure
channels-stop-start-openclaw-e2e ❌ failure
cloud-e2e ❌ failure
cloud-inference-e2e ❌ failure
cloud-onboard-e2e ❌ failure
common-egress-agent-e2e ❌ failure
concurrent-gateway-ports-e2e ❌ failure
credential-migration-e2e ✅ success
credential-sanitization-e2e ❌ failure
cron-preflight-inference-local-e2e ❌ failure
device-auth-health-e2e ❌ failure
diagnostics-e2e ❌ failure
docs-validation-e2e ✅ success
double-onboard-e2e ❌ failure
gpu-double-onboard-e2e ⏭️ skipped
gpu-e2e ⏭️ skipped
gpu-jetson-nvmap-e2e ⏭️ skipped
hermes-anthropic-inference-switch-e2e ❌ failure
hermes-dashboard-e2e ❌ failure
hermes-discord-e2e ❌ failure
hermes-e2e ❌ failure
hermes-inference-switch-e2e ❌ failure
hermes-onboard-security-posture-e2e ❌ failure
hermes-root-entrypoint-smoke-e2e ✅ success
hermes-secret-boundary-e2e ✅ success
hermes-slack-e2e ❌ failure
inference-routing-e2e ❌ failure
issue-2478-crash-loop-recovery-e2e ❌ failure
issue-3600-gpu-proof-optional-e2e ✅ success
issue-4434-tui-unreachable-inference-e2e ❌ failure
issue-4462-gateway-pinned-approval-characterization-e2e ❌ failure
issue-4462-scope-upgrade-approval-e2e ❌ failure
kimi-inference-compat-e2e ❌ failure
launchable-smoke-e2e ❌ failure
messaging-compatible-endpoint-e2e ❌ failure
messaging-providers-e2e ❌ failure
network-policy-e2e ❌ failure
onboard-negative-paths-e2e ❌ failure
onboard-repair-e2e ❌ failure
onboard-resume-e2e ❌ failure
openclaw-anthropic-inference-switch-e2e ❌ failure
openclaw-discord-pairing-e2e ❌ failure
openclaw-inference-switch-e2e ❌ failure
openclaw-onboard-security-posture-e2e ❌ failure
openclaw-skill-cli-e2e ❌ failure
openclaw-slack-pairing-e2e ❌ failure
openclaw-tui-chat-correlation-e2e ❌ failure
openshell-gateway-upgrade-e2e ❌ failure
overlayfs-autofix-e2e ❌ failure
rebuild-hermes-e2e ❌ failure
rebuild-hermes-stale-base-e2e ❌ failure
rebuild-openclaw-e2e ❌ failure
runtime-overrides-e2e ❌ failure
sandbox-operations-e2e ❌ failure
sandbox-survival-e2e ❌ failure
sessions-agents-cli-e2e ❌ failure
shields-config-e2e ❌ failure
skill-agent-e2e ❌ failure
snapshot-commands-e2e ❌ failure
state-backup-restore-e2e ❌ failure
telegram-injection-e2e ❌ failure
token-rotation-e2e ❌ failure
tunnel-lifecycle-e2e ❌ failure
upgrade-stale-sandbox-e2e ❌ failure

Failed jobs: agent-turn-latency-e2e, bedrock-runtime-compatible-anthropic-e2e, brave-search-e2e, channels-add-remove-e2e, channels-stop-start-hermes-e2e, channels-stop-start-openclaw-e2e, cloud-e2e, cloud-inference-e2e, cloud-onboard-e2e, common-egress-agent-e2e, concurrent-gateway-ports-e2e, credential-sanitization-e2e, cron-preflight-inference-local-e2e, device-auth-health-e2e, diagnostics-e2e, double-onboard-e2e, hermes-anthropic-inference-switch-e2e, hermes-dashboard-e2e, hermes-discord-e2e, hermes-e2e, hermes-inference-switch-e2e, hermes-onboard-security-posture-e2e, hermes-slack-e2e, inference-routing-e2e, issue-2478-crash-loop-recovery-e2e, issue-4434-tui-unreachable-inference-e2e, issue-4462-gateway-pinned-approval-characterization-e2e, issue-4462-scope-upgrade-approval-e2e, kimi-inference-compat-e2e, launchable-smoke-e2e, messaging-compatible-endpoint-e2e, messaging-providers-e2e, network-policy-e2e, onboard-negative-paths-e2e, onboard-repair-e2e, onboard-resume-e2e, openclaw-anthropic-inference-switch-e2e, openclaw-discord-pairing-e2e, openclaw-inference-switch-e2e, openclaw-onboard-security-posture-e2e, openclaw-skill-cli-e2e, openclaw-slack-pairing-e2e, openclaw-tui-chat-correlation-e2e, openshell-gateway-upgrade-e2e, overlayfs-autofix-e2e, rebuild-hermes-e2e, rebuild-hermes-stale-base-e2e, rebuild-openclaw-e2e, runtime-overrides-e2e, sandbox-operations-e2e, sandbox-survival-e2e, sessions-agents-cli-e2e, shields-config-e2e, skill-agent-e2e, snapshot-commands-e2e, state-backup-restore-e2e, telegram-injection-e2e, token-rotation-e2e, tunnel-lifecycle-e2e, upgrade-stale-sandbox-e2e. Check run artifacts for logs.

@github-actions

Copy link
Copy Markdown
Contributor

Selective E2E Results — ❌ Some jobs failed

Run: 27978433303
Target ref: 55c0ae7d063e08782e383ada3944dca461fe60c6
Workflow ref: main
Requested jobs: all (no filter)
Summary: 3 passed, 58 failed, 4 cancelled, 3 skipped

Job Result
agent-turn-latency-e2e ❌ failure
bedrock-runtime-compatible-anthropic-e2e ❌ failure
brave-search-e2e ❌ failure
channels-add-remove-e2e ❌ failure
channels-stop-start-hermes-e2e ❌ failure
channels-stop-start-openclaw-e2e ❌ failure
cloud-e2e ❌ failure
cloud-inference-e2e ❌ failure
cloud-onboard-e2e ❌ failure
common-egress-agent-e2e ❌ failure
concurrent-gateway-ports-e2e ❌ failure
credential-migration-e2e ✅ success
credential-sanitization-e2e ❌ failure
cron-preflight-inference-local-e2e ❌ failure
device-auth-health-e2e ❌ failure
diagnostics-e2e ❌ failure
docs-validation-e2e ✅ success
double-onboard-e2e ⚠️ cancelled
gpu-double-onboard-e2e ⏭️ skipped
gpu-e2e ⏭️ skipped
gpu-jetson-nvmap-e2e ⏭️ skipped
hermes-anthropic-inference-switch-e2e ❌ failure
hermes-dashboard-e2e ❌ failure
hermes-discord-e2e ❌ failure
hermes-e2e ❌ failure
hermes-inference-switch-e2e ❌ failure
hermes-onboard-security-posture-e2e ❌ failure
hermes-root-entrypoint-smoke-e2e ⚠️ cancelled
hermes-secret-boundary-e2e ⚠️ cancelled
hermes-slack-e2e ❌ failure
inference-routing-e2e ❌ failure
issue-2478-crash-loop-recovery-e2e ❌ failure
issue-3600-gpu-proof-optional-e2e ✅ success
issue-4434-tui-unreachable-inference-e2e ❌ failure
issue-4462-gateway-pinned-approval-characterization-e2e ❌ failure
issue-4462-scope-upgrade-approval-e2e ❌ failure
kimi-inference-compat-e2e ❌ failure
launchable-smoke-e2e ❌ failure
messaging-compatible-endpoint-e2e ❌ failure
messaging-providers-e2e ❌ failure
network-policy-e2e ❌ failure
onboard-negative-paths-e2e ❌ failure
onboard-repair-e2e ❌ failure
onboard-resume-e2e ❌ failure
openclaw-anthropic-inference-switch-e2e ❌ failure
openclaw-discord-pairing-e2e ❌ failure
openclaw-inference-switch-e2e ❌ failure
openclaw-onboard-security-posture-e2e ❌ failure
openclaw-skill-cli-e2e ❌ failure
openclaw-slack-pairing-e2e ❌ failure
openclaw-tui-chat-correlation-e2e ❌ failure
openshell-gateway-upgrade-e2e ⚠️ cancelled
overlayfs-autofix-e2e ❌ failure
rebuild-hermes-e2e ❌ failure
rebuild-hermes-stale-base-e2e ❌ failure
rebuild-openclaw-e2e ❌ failure
runtime-overrides-e2e ❌ failure
sandbox-operations-e2e ❌ failure
sandbox-survival-e2e ❌ failure
sessions-agents-cli-e2e ❌ failure
shields-config-e2e ❌ failure
skill-agent-e2e ❌ failure
snapshot-commands-e2e ❌ failure
state-backup-restore-e2e ❌ failure
telegram-injection-e2e ❌ failure
token-rotation-e2e ❌ failure
tunnel-lifecycle-e2e ❌ failure
upgrade-stale-sandbox-e2e ❌ failure

Failed jobs: agent-turn-latency-e2e, bedrock-runtime-compatible-anthropic-e2e, brave-search-e2e, channels-add-remove-e2e, channels-stop-start-hermes-e2e, channels-stop-start-openclaw-e2e, cloud-e2e, cloud-inference-e2e, cloud-onboard-e2e, common-egress-agent-e2e, concurrent-gateway-ports-e2e, credential-sanitization-e2e, cron-preflight-inference-local-e2e, device-auth-health-e2e, diagnostics-e2e, hermes-anthropic-inference-switch-e2e, hermes-dashboard-e2e, hermes-discord-e2e, hermes-e2e, hermes-inference-switch-e2e, hermes-onboard-security-posture-e2e, hermes-slack-e2e, inference-routing-e2e, issue-2478-crash-loop-recovery-e2e, issue-4434-tui-unreachable-inference-e2e, issue-4462-gateway-pinned-approval-characterization-e2e, issue-4462-scope-upgrade-approval-e2e, kimi-inference-compat-e2e, launchable-smoke-e2e, messaging-compatible-endpoint-e2e, messaging-providers-e2e, network-policy-e2e, onboard-negative-paths-e2e, onboard-repair-e2e, onboard-resume-e2e, openclaw-anthropic-inference-switch-e2e, openclaw-discord-pairing-e2e, openclaw-inference-switch-e2e, openclaw-onboard-security-posture-e2e, openclaw-skill-cli-e2e, openclaw-slack-pairing-e2e, openclaw-tui-chat-correlation-e2e, overlayfs-autofix-e2e, rebuild-hermes-e2e, rebuild-hermes-stale-base-e2e, rebuild-openclaw-e2e, runtime-overrides-e2e, sandbox-operations-e2e, sandbox-survival-e2e, sessions-agents-cli-e2e, shields-config-e2e, skill-agent-e2e, snapshot-commands-e2e, state-backup-restore-e2e, telegram-injection-e2e, token-rotation-e2e, tunnel-lifecycle-e2e, upgrade-stale-sandbox-e2e. Check run artifacts for logs.

@github-actions

Copy link
Copy Markdown
Contributor

Selective E2E Results — ❌ Some jobs failed

Run: 27978655990
Target ref: 55c0ae7d063e08782e383ada3944dca461fe60c6
Workflow ref: main
Requested jobs: openshell-gateway-upgrade-e2e
Summary: 0 passed, 1 failed, 0 cancelled, 0 skipped

Job Result
openshell-gateway-upgrade-e2e ❌ failure

Failed jobs: openshell-gateway-upgrade-e2e. Check run artifacts for logs.

@github-actions

Copy link
Copy Markdown
Contributor

Selective E2E Results — ❌ Some jobs failed

Run: 27978914573
Target ref: dep/openshell-v0.0.67
Requested jobs: all (no filter)
Summary: 7 passed, 58 failed, 0 cancelled, 3 skipped

Job Result
agent-turn-latency-e2e ❌ failure
bedrock-runtime-compatible-anthropic-e2e ❌ failure
brave-search-e2e ✅ success
channels-add-remove-e2e ❌ failure
channels-stop-start-hermes-e2e ❌ failure
channels-stop-start-openclaw-e2e ❌ failure
cloud-e2e ❌ failure
cloud-inference-e2e ❌ failure
cloud-onboard-e2e ❌ failure
common-egress-agent-e2e ❌ failure
concurrent-gateway-ports-e2e ❌ failure
credential-migration-e2e ❌ failure
credential-sanitization-e2e ❌ failure
cron-preflight-inference-local-e2e ❌ failure
device-auth-health-e2e ❌ failure
diagnostics-e2e ❌ failure
docs-validation-e2e ✅ success
double-onboard-e2e ❌ failure
gpu-double-onboard-e2e ⏭️ skipped
gpu-e2e ⏭️ skipped
gpu-jetson-nvmap-e2e ⏭️ skipped
hermes-anthropic-inference-switch-e2e ❌ failure
hermes-dashboard-e2e ❌ failure
hermes-discord-e2e ❌ failure
hermes-e2e ❌ failure
hermes-inference-switch-e2e ❌ failure
hermes-onboard-security-posture-e2e ❌ failure
hermes-root-entrypoint-smoke-e2e ✅ success
hermes-secret-boundary-e2e ✅ success
hermes-slack-e2e ❌ failure
inference-routing-e2e ❌ failure
issue-2478-crash-loop-recovery-e2e ❌ failure
issue-3600-gpu-proof-optional-e2e ✅ success
issue-4434-tui-unreachable-inference-e2e ✅ success
issue-4462-gateway-pinned-approval-characterization-e2e ❌ failure
issue-4462-scope-upgrade-approval-e2e ❌ failure
kimi-inference-compat-e2e ❌ failure
launchable-smoke-e2e ❌ failure
messaging-compatible-endpoint-e2e ❌ failure
messaging-providers-e2e ❌ failure
network-policy-e2e ❌ failure
onboard-negative-paths-e2e ❌ failure
onboard-repair-e2e ❌ failure
onboard-resume-e2e ❌ failure
openclaw-anthropic-inference-switch-e2e ❌ failure
openclaw-discord-pairing-e2e ❌ failure
openclaw-inference-switch-e2e ❌ failure
openclaw-onboard-security-posture-e2e ❌ failure
openclaw-skill-cli-e2e ❌ failure
openclaw-slack-pairing-e2e ❌ failure
openclaw-tui-chat-correlation-e2e ❌ failure
openshell-gateway-upgrade-e2e ❌ failure
overlayfs-autofix-e2e ✅ success
rebuild-hermes-e2e ❌ failure
rebuild-hermes-stale-base-e2e ❌ failure
rebuild-openclaw-e2e ❌ failure
runtime-overrides-e2e ❌ failure
sandbox-operations-e2e ❌ failure
sandbox-survival-e2e ❌ failure
sessions-agents-cli-e2e ❌ failure
shields-config-e2e ❌ failure
skill-agent-e2e ❌ failure
snapshot-commands-e2e ❌ failure
state-backup-restore-e2e ❌ failure
telegram-injection-e2e ❌ failure
token-rotation-e2e ❌ failure
tunnel-lifecycle-e2e ❌ failure
upgrade-stale-sandbox-e2e ❌ failure

Failed jobs: agent-turn-latency-e2e, bedrock-runtime-compatible-anthropic-e2e, channels-add-remove-e2e, channels-stop-start-hermes-e2e, channels-stop-start-openclaw-e2e, cloud-e2e, cloud-inference-e2e, cloud-onboard-e2e, common-egress-agent-e2e, concurrent-gateway-ports-e2e, credential-migration-e2e, credential-sanitization-e2e, cron-preflight-inference-local-e2e, device-auth-health-e2e, diagnostics-e2e, double-onboard-e2e, hermes-anthropic-inference-switch-e2e, hermes-dashboard-e2e, hermes-discord-e2e, hermes-e2e, hermes-inference-switch-e2e, hermes-onboard-security-posture-e2e, hermes-slack-e2e, inference-routing-e2e, issue-2478-crash-loop-recovery-e2e, issue-4462-gateway-pinned-approval-characterization-e2e, issue-4462-scope-upgrade-approval-e2e, kimi-inference-compat-e2e, launchable-smoke-e2e, messaging-compatible-endpoint-e2e, messaging-providers-e2e, network-policy-e2e, onboard-negative-paths-e2e, onboard-repair-e2e, onboard-resume-e2e, openclaw-anthropic-inference-switch-e2e, openclaw-discord-pairing-e2e, openclaw-inference-switch-e2e, openclaw-onboard-security-posture-e2e, openclaw-skill-cli-e2e, openclaw-slack-pairing-e2e, openclaw-tui-chat-correlation-e2e, openshell-gateway-upgrade-e2e, rebuild-hermes-e2e, rebuild-hermes-stale-base-e2e, rebuild-openclaw-e2e, runtime-overrides-e2e, sandbox-operations-e2e, sandbox-survival-e2e, sessions-agents-cli-e2e, shields-config-e2e, skill-agent-e2e, snapshot-commands-e2e, state-backup-restore-e2e, telegram-injection-e2e, token-rotation-e2e, tunnel-lifecycle-e2e, upgrade-stale-sandbox-e2e. Check run artifacts for logs.

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

CI green, E2E all-green, both advisors passed. LGTM.

ericksoa added 2 commits June 30, 2026 06:26
Preserve the 0.0.71 auth and version contracts on the current Vitest-only E2E layout, add the issue #4760 denied-log regression, and harden the Brev launchable boundary.

Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Keep the OpenShell auth review references, explicit-only inventory, workflow size budget, and Brev Docker hardening proof consistent after the main merge.

Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Comment on lines +81 to +86
const result = spawnSync(command, args, {
encoding: "utf-8",
env,
stdio: ["ignore", "pipe", "pipe"],
timeout: 60_000,
});
@github-actions

github-actions Bot commented Jun 30, 2026

Copy link
Copy Markdown
Contributor

E2E Target Recommendation

Required E2E targets: channels-add-remove, gateway-health-honest, hermes-root-entrypoint-smoke, hermes-sandbox-secret-boundary, issue-4462-scope-upgrade-approval, network-policy, openshell-gateway-auth-contract, openshell-gateway-upgrade, openshell-version-pin, e2e-all
Optional E2E targets: None

Dispatch required E2E targets:

  • gh workflow run e2e.yaml --ref <pr-head-ref> --field jobs=channels-add-remove
  • gh workflow run e2e.yaml --ref <pr-head-ref> --field jobs=gateway-health-honest
  • gh workflow run e2e.yaml --ref <pr-head-ref> --field jobs=hermes-root-entrypoint-smoke
  • gh workflow run e2e.yaml --ref <pr-head-ref> --field jobs=hermes-sandbox-secret-boundary
  • gh workflow run e2e.yaml --ref <pr-head-ref> --field jobs=issue-4462-scope-upgrade-approval
  • gh workflow run e2e.yaml --ref <pr-head-ref> --field jobs=network-policy
  • gh workflow run e2e.yaml --ref <pr-head-ref> --field jobs=openshell-gateway-auth-contract
  • gh workflow run e2e.yaml --ref <pr-head-ref> --field jobs=openshell-gateway-upgrade
  • gh workflow run e2e.yaml --ref <pr-head-ref> --field jobs=openshell-version-pin
  • gh workflow run e2e.yaml --ref <pr-head-ref>

Workflow run

Full E2E target advisor summary

E2E Target Advisor

Base: origin/main
Head: HEAD
Confidence: high

Required E2E targets

  • channels-add-remove: Focused free-standing E2E job wired for changed live test test/e2e/live/channels-add-remove.test.ts.
    • Dispatch: gh workflow run e2e.yaml --ref <pr-head-ref> --field jobs=channels-add-remove
  • gateway-health-honest: Focused free-standing E2E job wired for changed live test test/e2e/live/gateway-health-honest.test.ts.
    • Dispatch: gh workflow run e2e.yaml --ref <pr-head-ref> --field jobs=gateway-health-honest
  • hermes-root-entrypoint-smoke: Focused free-standing E2E job wired for changed live test test/e2e/live/hermes-root-entrypoint-smoke.test.ts.
    • Dispatch: gh workflow run e2e.yaml --ref <pr-head-ref> --field jobs=hermes-root-entrypoint-smoke
  • hermes-sandbox-secret-boundary: Focused free-standing E2E job wired for changed live test test/e2e/live/hermes-sandbox-secret-boundary.test.ts.
    • Dispatch: gh workflow run e2e.yaml --ref <pr-head-ref> --field jobs=hermes-sandbox-secret-boundary
  • issue-4462-scope-upgrade-approval: Focused free-standing E2E job wired for changed live test test/e2e/live/issue-4462-scope-upgrade-approval.test.ts.
    • Dispatch: gh workflow run e2e.yaml --ref <pr-head-ref> --field jobs=issue-4462-scope-upgrade-approval
  • network-policy: Focused free-standing E2E job wired for changed live test test/e2e/live/network-policy.test.ts.
    • Dispatch: gh workflow run e2e.yaml --ref <pr-head-ref> --field jobs=network-policy
  • openshell-gateway-auth-contract: Focused free-standing E2E job wired for changed live test test/e2e/live/openshell-gateway-auth-source-contract.test.ts.
    • Dispatch: gh workflow run e2e.yaml --ref <pr-head-ref> --field jobs=openshell-gateway-auth-contract
  • openshell-gateway-upgrade: Focused free-standing E2E job wired for changed live test test/e2e/live/openshell-gateway-upgrade.test.ts.
    • Dispatch: gh workflow run e2e.yaml --ref <pr-head-ref> --field jobs=openshell-gateway-upgrade
  • openshell-version-pin: Focused free-standing E2E job wired for changed live test test/e2e/live/openshell-version-pin.test.ts.
    • Dispatch: gh workflow run e2e.yaml --ref <pr-head-ref> --field jobs=openshell-version-pin
  • e2e-all: The PR changes shared E2E workflow machinery in .github/workflows/e2e.yaml and multiple live E2E surfaces under test/e2e/live and test/e2e/support. The fan-out is required to exercise the registry-driven live matrix, default-enabled free-standing jobs, and onboarding resume/repair coverage affected by src/lib/onboard.ts and related gateway/runtime changes.
    • Dispatch: gh workflow run e2e.yaml --ref <pr-head-ref>

Optional E2E targets

  • None.

Relevant changed files

  • .github/workflows/e2e.yaml
  • agents/hermes/Dockerfile
  • nemoclaw-blueprint/blueprint.yaml
  • scripts/brev-launchable-ci-cpu.sh
  • scripts/install-openshell.sh
  • src/lib/actions/sandbox/connect.ts
  • src/lib/actions/sandbox/hermes-secret-boundary-recovery.ts
  • src/lib/actions/sandbox/markerless-recovery.ts
  • src/lib/actions/sandbox/process-recovery.ts
  • src/lib/actions/sandbox/rebuild.ts
  • src/lib/actions/sandbox/sandbox-exec-output.ts
  • src/lib/actions/sandbox/sessions/gateway-rpc.ts
  • src/lib/agent/hermes-recovery-boundary.ts
  • src/lib/onboard.ts
  • src/lib/onboard/docker-driver-gateway-compat.ts
  • src/lib/onboard/docker-driver-gateway-config.ts
  • src/lib/onboard/docker-driver-gateway-env.ts
  • src/lib/onboard/docker-driver-gateway-jwt-bundle.ts
  • src/lib/onboard/docker-driver-gateway-launch.ts
  • src/lib/onboard/docker-driver-gateway-local-tls.ts
  • src/lib/onboard/docker-driver-gateway-runtime.ts
  • src/lib/onboard/gateway-http-readiness.ts
  • src/lib/onboard/messaging-channel-setup.ts
  • src/lib/onboard/messaging-policy-presets.ts
  • src/lib/onboard/openshell-install.ts
  • src/lib/onboard/openshell-version.ts
  • test/e2e/brev-e2e.test.ts
  • test/e2e/live/channels-add-remove.test.ts
  • test/e2e/live/gateway-health-honest.test.ts
  • test/e2e/live/hermes-root-entrypoint-smoke.test.ts
  • test/e2e/live/hermes-sandbox-secret-boundary.test.ts
  • test/e2e/live/issue-4462-scope-upgrade-approval.test.ts
  • test/e2e/live/network-policy-denied-log.ts
  • test/e2e/live/network-policy.test.ts
  • test/e2e/live/openshell-gateway-auth-source-contract-helpers.ts
  • test/e2e/live/openshell-gateway-auth-source-contract.test.ts
  • test/e2e/live/openshell-gateway-upgrade.test.ts
  • test/e2e/live/openshell-version-pin.test.ts
  • test/e2e/support/e2e-workflow.test.ts
  • test/e2e/support/jetson-workflow-boundary.test.ts
  • test/e2e/support/network-policy-denied-log.test.ts
  • test/e2e/support/openshell-gateway-auth-contract-workflow-boundary.test.ts
  • test/e2e/support/openshell-gateway-auth-source-contract-helpers.test.ts

Move denied-log polling into a focused support module and preserve removed-channel tolerance without growing conditional branches in changed live tests.

Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
@github-actions

Copy link
Copy Markdown
Contributor

Vitest E2E Target Results — ❌ Some jobs failed

Run: 28450977336
Workflow ref: dep/openshell-v0.0.67
Requested targets: (default — all supported)
Requested jobs: (default — all default-enabled free-standing jobs; explicit-only jobs openshell-gateway-auth-contract, jetson-nvmap-gpu, and sandbox-rlimits-connect are skipped unless selected)
Summary: 70 passed, 1 failed, 0 cancelled, 3 skipped

Job Result
agent-turn-latency ✅ success
bedrock-runtime-compatible-anthropic ✅ success
brave-search ✅ success
channels-add-remove ✅ success
channels-stop-start ✅ success
cloud-inference ✅ success
cloud-onboard ✅ success
common-egress-agent ✅ success
concurrent-gateway-ports ✅ success
credential-migration ✅ success
credential-sanitization ✅ success
cron-preflight-inference-local ✅ success
device-auth-health ✅ success
diagnostics ✅ success
docs-validation ✅ success
double-onboard ✅ success
full-e2e ✅ success
gateway-drift-preflight ✅ success
gateway-guard-recovery ✅ success
gateway-health-honest ✅ success
generate-matrix ✅ success
gpu-double-onboard ✅ success
gpu-e2e ✅ success
hermes-dashboard ✅ success
hermes-discord ✅ success
hermes-e2e ✅ success
hermes-inference-switch ✅ success
hermes-root-entrypoint-smoke ✅ success
hermes-sandbox-secret-boundary ✅ success
hermes-slack ✅ success
inference-routing ✅ success
issue-2478-crash-loop-recovery ✅ success
issue-4434-tui-unreachable-inference ✅ success
issue-4462-scope-upgrade-approval ✅ success
jetson-nvmap-gpu ⏭️ skipped
kimi-inference-compat ✅ success
launchable-smoke ✅ success
live ❌ failure
messaging-compatible-endpoint ✅ success
messaging-providers ✅ success
model-router-provider-routed-inference ✅ success
network-policy ✅ success
ollama-auth-proxy ✅ success
onboard-negative-paths ✅ success
onboard-repair ✅ success
onboard-resume ✅ success
openclaw-discord-pairing ✅ success
openclaw-inference-switch ✅ success
openclaw-skill-cli ✅ success
openclaw-slack-pairing ✅ success
openclaw-tui-chat-correlation ✅ success
openshell-gateway-auth-contract ⏭️ skipped
openshell-gateway-upgrade ✅ success
openshell-version-pin ✅ success
overlayfs-autofix ✅ success
rebuild-hermes ✅ success
rebuild-hermes-stale-base ✅ success
rebuild-openclaw ✅ success
runtime-overrides ✅ success
sandbox-operations ✅ success
sandbox-rebuild ✅ success
sandbox-rlimits-connect ⏭️ skipped
sandbox-survival ✅ success
security-posture ✅ success
sessions-agents-cli ✅ success
shields-config ✅ success
skill-agent ✅ success
snapshot-commands ✅ success
spark-install ✅ success
state-backup-restore ✅ success
telegram-injection ✅ success
token-rotation ✅ success
tunnel-lifecycle ✅ success
upgrade-stale-sandbox ✅ success

Explicit-only jobs skipped: openshell-gateway-auth-contract (default dispatch excludes the resource-heavy OpenShell auth-contract probe unless selected; validate with jobs=openshell-gateway-auth-contract or targets=openshell-gateway-auth-contract), sandbox-rlimits-connect (default dispatch excludes the destructive rlimit fork/connect probe unless selected; validate with jobs=sandbox-rlimits-connect or targets=sandbox-rlimits-connect), jetson-nvmap-gpu (default dispatch excludes Jetson until a stable Jetson runner is available; validate with jobs=jetson-nvmap-gpu or targets=jetson-nvmap-gpu).

Failed jobs: live. Check run artifacts for logs.

@github-actions

Copy link
Copy Markdown
Contributor

Vitest E2E Target Results — ⚠️ Some jobs cancelled — partial pass

Run: 28450943817
Workflow ref: dep/openshell-v0.0.67
Requested targets: (default — all supported)
Requested jobs: network-policy,openshell-version-pin,openshell-gateway-auth-contract,openshell-gateway-upgrade
Summary: 3 passed, 0 failed, 1 cancelled, 0 skipped

Job Result
network-policy ✅ success
openshell-gateway-auth-contract ✅ success
openshell-gateway-upgrade ⚠️ cancelled
openshell-version-pin ✅ success

ericksoa added 2 commits June 30, 2026 08:33
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
@github-actions

Copy link
Copy Markdown
Contributor

Vitest E2E Target Results — ⚠️ Some jobs cancelled — partial pass

Run: 28456358001
Workflow ref: dep/openshell-v0.0.67
Requested targets: (default — all supported)
Requested jobs: network-policy,openshell-version-pin,openshell-gateway-auth-contract,openshell-gateway-upgrade
Summary: 2 passed, 0 failed, 2 cancelled, 0 skipped

Job Result
network-policy ⚠️ cancelled
openshell-gateway-auth-contract ✅ success
openshell-gateway-upgrade ⚠️ cancelled
openshell-version-pin ✅ success

@jyaunches
jyaunches merged commit d091ff0 into main Jun 30, 2026
195 checks passed
@jyaunches
jyaunches deleted the dep/openshell-v0.0.67 branch June 30, 2026 15:44
@jyaunches jyaunches mentioned this pull request Jun 30, 2026
21 tasks
jyaunches added a commit that referenced this pull request Jun 30, 2026
<!-- markdownlint-disable MD041 -->
## Summary
Refreshes the public documentation for NemoClaw v0.0.71 after scanning
commits since v0.0.70. Adds release notes and fills the remaining doc
gaps for Windows bootstrap diagnostics, OpenClaw agent auto-relock
warnings, auto-pair cadence tuning, and plugin-install recovery hints.

## Changes
- `docs/about/release-notes.mdx`: adds the v0.0.71 release-note section,
grouped by gateway recovery, OpenShell auth, policy provenance, day-two
maintenance, messaging/inference, and Windows setup.
- `docs/get-started/windows-preparation.mdx`: documents sanitized WSL
install output and reboot gating in the Windows bootstrap.
- `docs/reference/commands.mdx`: documents the host `agent` wrapper's
shields auto-relock warning and OpenClaw auto-pair watcher tuning
variables.
- `docs/reference/troubleshooting.mdx`: adds plugin-install network
failure recovery guidance and updates Windows WSL troubleshooting for
sanitized install logs and reboot-required handling.

Source summary:
- #6065 -> `docs/about/release-notes.mdx`: Notes explicit model override
preservation and gateway-log guard-chain recovery diagnostics.
- #5874 -> `docs/about/release-notes.mdx`: Summarizes host-mediated
`recover` and `gateway restart`, linking to lifecycle, command,
troubleshooting, and trusted-boundary docs already added by the source
PR.
- #5596 -> `docs/about/release-notes.mdx`: Summarizes OpenShell 0.0.71
gateway auth, loopback binding, and compatibility-container docs already
added by the source PR.
- #5797 and #5798 -> `docs/about/release-notes.mdx`: Summarizes
`policy-list` provenance, Restricted tier suppression, and Balanced tier
weather behavior already reflected in policy docs.
- #5784 -> `docs/about/release-notes.mdx`: Summarizes
`--destroy-user-data` and the safe `--yes` uninstall behavior already
documented in lifecycle and command docs.
- #6034 -> `docs/about/release-notes.mdx`: Summarizes custom Dockerfile
warm-build cache behavior already documented in the command reference.
- #5951 -> `docs/reference/commands.mdx`: Documents the stderr-only host
`agent` wrapper warning after recent shields auto-relock.
- #5387 -> `docs/reference/commands.mdx`: Documents OpenClaw auto-pair
watcher cadence and fast-reentry tuning variables.
- #5835 -> `docs/reference/troubleshooting.mdx`: Adds recovery guidance
for OpenClaw plugin-install network failures.
- #5995 and #5956 -> `docs/about/release-notes.mdx`: Summarizes
Microsoft Teams final-message delivery and runtime mention hints already
covered by messaging docs.
- #5716 -> `docs/about/release-notes.mdx`: Summarizes non-interactive
Ollama loopback safety already covered by local inference docs.
- #5505, #5527, and #5528 -> `docs/about/release-notes.mdx`: Summarizes
compatible local endpoint, model task-fit, and model capability audit
docs.
- #6009 -> `docs/get-started/windows-preparation.mdx`,
`docs/reference/troubleshooting.mdx`: Documents sanitized Windows
bootstrap WSL output and reboot-required gating.
- #6055 -> no additional source doc page change needed beyond the
already-merged quickstart update; release notes did not duplicate
routine quickstart cleanup.

No matching v0.0.71 GitHub announcement discussion was found in the
latest 20 discussions, so this refresh is based on the commit scan and
existing source PR docs.

## Type of Change

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

## Quality Gates
<!-- Check all that apply. For any "covered by existing tests", "not
applicable", or waiver entry, add a brief justification on the same line
or in the Changes section. -->
- [ ] Tests added or updated for changed behavior
- [ ] Existing tests cover changed behavior — justification:
- [x] Tests not applicable — justification: docs-only refresh with no
runtime behavior changes.
- [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
<!-- Check each item you ran and confirmed. Leave unchecked items you
skipped. Doc-only changes do not require npm test unless you ran it. -->
- [x] PR description includes the DCO sign-off declaration and every
commit appears as `Verified` in GitHub
- [x] Git hooks passed during commit and push, or `npx prek run
--from-ref main --to-ref HEAD` passes
- [ ] Targeted tests pass for changed behavior
- [ ] Full `npm test` passes (broad runtime changes only)
- [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) — ran
`npm run docs`; Fern reported 0 errors and 2 existing warnings.
- [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)

---
<!-- DCO sign-off is required in this PR description, and every commit
must appear as Verified in GitHub. Run: git config user.name && git
config user.email -->
Signed-off-by: Julie Yaunches <jyaunches@nvidia.com>


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

## Summary by CodeRabbit

* **Documentation**
* Added a new release-notes entry covering gateway recovery,
authentication, network policy/provenance output, uninstall safety,
Windows bootstrap diagnostics, messaging defaults, and inference setup
guidance.
* Clarified Windows preparation steps around reboot behavior and
redacting troubleshooting transcripts.
* Expanded command reference details for OpenClaw wrapper behavior and
new auto-pair tuning options.
* Improved troubleshooting guidance for plugin installation issues, WSL
repair/reboot cases, and install timing problems.

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

Signed-off-by: Julie Yaunches <jyaunches@nvidia.com>
Co-authored-by: Prekshi Vyas <34834085+prekshivyas@users.noreply.github.com>
cv pushed a commit that referenced this pull request Jul 3, 2026
<!-- markdownlint-disable MD041 -->
## Summary

NemoClaw `v0.0.74` will ship stable OpenShell `v0.0.72`. This dependency
layer advances the supported OpenShell contract from `0.0.71` to
`0.0.72`, pins every consumed release artifact, preserves
round-trippable policy state, and hardens installer verification so
pull-request code cannot authorize its own pins.

## Related Issue

Refs #5591.
Follow-up to merged #5596.
Dependency layer for #5876 and the accepted MCP design in #566.

## Changes

- Pin stable OpenShell `0.0.72` across the supported version
floor/ceiling, installer, Brev launchable, blueprint, supervisor image,
workflow, and live-E2E contracts. OpenShell development builds remain
compatibility evidence, not the shipping runtime.
- Pin all consumed CLI, gateway, and sandbox archives plus both Brev CLI
references to the official `v0.0.72` checksum manifests.
- Read mutation input from `openshell policy get --base`, strip reserved
`_provider_*` entries before `policy set`, retain `--full` only for
read-only diagnostics, and preserve future mapping sections plus
MCP/JSON-RPC fields during merges.
- Route the CommonJS CLI and ESM plugin through one generated OpenShell
policy boundary and exact-pin `yaml` `2.8.3` in both production package
graphs.
- Normalize that boundary for both compiled CommonJS and source-mode
`tsx` loading. A subprocess package-contract test reproduces the live
source-loader path that exposed the mismatch.
- Run installer verification from base-trusted code. The introducing PR
falls back only to immutable commit
`cb5e9aefab2b16fedc0995149fc3520da0d5e0c7`, verified as tree
`1fdf59efe40b78c407e222fd42043b23a61e199a`, with an enforced expiry at
`2026-12-29T19:35:41Z`.
- Treat PR-head installer files as data only. The trusted parser rejects
symbolic links, a symbolic-link `scripts` parent, non-regular files,
changed inode/device identity, and input over 1 MiB; it opens with
`O_NOFOLLOW` and performs a bounded descriptor read.
- Fail installer verification closed on missing, duplicate, mismatched,
incomplete, or unreachable OpenShell/Brev pin data.
- Publish the OpenShell `0.0.72` compatibility review and align version,
policy, gateway-authentication, and troubleshooting documentation.

### Exact-head evidence

- PR head: `2d06fa01b624b63813fe558ce36b29d47ad31e36`, based exactly on
current `main` `dc96deb24d67eeeb2cb7b2bb42c7c53f000507f3`. The final
signed merge incorporates the release-boundary revert that defers
unrelated dcode-status work, so this dependency PR does not reintroduce
#6202 outside its scope.
- GitHub verifies the new merge commit signature, DCO is green, the
prior maintainer approval remains recorded at [review
4611344448](#6020 (review)),
and GitHub reports the PR graph as `MERGEABLE`.
- Post-restack local validation passes `build:cli`, full and CLI
typechecks, repository checks, generated agent-doc synchronization,
affected Deep Agents image contracts, and `git diff --check`.
- All exact-head ordinary PR checks are terminal green (33 successful,
three skipped/neutral, zero failures), including macOS/WSL E2E, every
CLI shard and aggregate, static/security scans, DCO, and both PR Review
Advisor jobs. GitHub reports `APPROVED` and `MERGEABLE/CLEAN`.
- Exact-head selected OpenShell [E2E run
28632123304](https://github.com/NVIDIA/NemoClaw/actions/runs/28632123304)
is terminal green: version pin, gateway-auth contract, network policy,
gateway upgrade/state restoration, scorecard, and the no-comment
reporter all passed from a temporary no-PR ref at the identical commit.
The temporary ref was deleted after completion.
- Exact-head PR Review [run
28632002111](https://github.com/NVIDIA/NemoClaw/actions/runs/28632002111)
and E2E Advisor [run
28632002140](https://github.com/NVIDIA/NemoClaw/actions/runs/28632002140)
are green. GPT reports no actionable finding; Nemotron's check passed
but both JSON synthesis attempts were unparseable, so that model's
artifact is incomplete rather than clearance. E2E Advisor reports high
confidence and selects the four live lanes linked above.

### Trust-boundary notes

- The immutable bootstrap is intentionally used only while the PR base
lacks the trusted action. Once that action exists on the base, executing
the newer base-trusted verifier is the stronger boundary; the expiring
bootstrap should then be removed rather than run redundantly.
- No untrusted PR process executes alongside the parser. GitHub checks
out inert PR data, then trusted code validates and reads the
already-opened descriptor. The link/type/identity/bounds checks cover
repository-controlled redirection and exhaustion inputs without claiming
protection from a privileged concurrent host writer.
- Stable OpenShell `0.0.72` accepts an unmarked policy root only when it
contains `version` or `network_policies`; metadata-only and malformed
documents fail closed. Versionless `network_policies` is retained for
the supported compatibility contract.

### Advisor disposition

- GPT reported no required findings and one warning about the mutable
default `BASE_IMAGE` tag. That `ARG
BASE_IMAGE=ghcr.io/nvidia/nemoclaw/sandbox-base:latest` line is
unchanged from current `main`; this dependency PR neither introduces nor
broadens that repository-wide build default.
- Nemotron's bootstrap finding would weaken the intended trust
transition: the immutable bootstrap exists only for the introducing PR.
Once the action is present on the base, the newer base-trusted action
must replace the older bootstrap; both paths are immutable for the
current event and are contract-tested.
- Nemotron's parser race assumes an untrusted concurrent filesystem
writer. PR code is never executed in this job: GitHub checks out inert
data, then trusted code rejects links/special files, checks the opened
descriptor's device/inode, bounds the read, and closes it. A privileged
host writer is outside this PR-input threat model.
- Nemotron's checksum finding is not circular. The trusted checker pins
the SHA-256 of each upstream checksum manifest, verifies that immutable
manifest before reading it, and compares every embedded installer pin
with exactly one manifest entry. At install time each named archive must
exist and match its pinned digest, so a missing asset still fails closed
without downloading all archives during every PR check.
- The generated-boundary auditor executes in the Docker builder stage
exercised by ordinary `build-sandbox-images` CI. The exact source-mode
`.cts` versus generated `.cjs` mismatch found by live proof is now
covered directly by the subprocess package-contract test and the
compiled runner suites.

## Type of Change

- [ ] Code change (feature, bug fix, or refactor)
- [x] 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
- [x] Existing tests cover changed behavior — justification: policy
mutation, package boundary, installer trust, workflow selection, and
runtime upgrade/state-restoration have focused coverage; final selected
E2E is linked above.
- [ ] Tests not applicable — justification: not applicable; this changes
security-sensitive installer, policy, and runtime compatibility
behavior.
- [x] Docs updated for user-facing behavior changes
- [ ] Docs not applicable — justification: not applicable; supported
OpenShell versions and policy behavior are user-facing.
- [x] 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 linked approval
predates the current head; exact-head human review or an explicit
carried-approval decision remains required, and no waiver is requested.
- [ ] Non-success, skipped, or missing CI check accepted by maintainer —
check name, approval link, and follow-up issue: no waiver is requested;
exact-head ordinary CI is green, and the selected run's comment-only
reporter caveat is documented above and is not a required PR check.

## Verification

- [x] PR description includes the DCO sign-off declaration and every
commit appears as `Verified` in GitHub
- [ ] Git hooks passed during commit and push, or `npx prek run
--from-ref main --to-ref HEAD` passes
- [x] Targeted tests pass for changed behavior
- [ ] Full `npm test` passes (broad runtime changes only)
- [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)
- [x] Doc pages follow the [style
guide](https://github.com/NVIDIA/NemoClaw/blob/main/docs/CONTRIBUTING.md)
(doc changes only)
- [x] New doc pages include SPDX header and frontmatter (new pages only)

---
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>

---------

Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Signed-off-by: Preksha Vyas <prekshiv@nvidia.com>
Co-authored-by: Prekshi Vyas <prekshiv@nvidia.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Prekshi Vyas <34834085+prekshivyas@users.noreply.github.com>
ericksoa added a commit that referenced this pull request Jul 4, 2026
…5595)

<!-- markdownlint-disable MD041 -->
## Summary

Upgrade NemoClaw to `openclaw@2026.6.10` and adapt packaging,
compiled-runtime compatibility patches, messaging plugins, rebuild
recovery,
and E2E coverage to the reviewed release. The change retains the
existing
fail-closed package, credential-recovery, state-restore, and
runtime-proof
boundaries while moving one stable patch release forward from 2026.6.9.

## Related Issue

- Refs #5591.
- #5596 (OpenShell 0.0.71) landed first, preserving the dependency
landing
  order; this PR targets `v0.0.74`.
- Post-tag installer consolidation and fixture retirement remain tracked
in
  #5896 and are not blockers for the first tag containing this PR.

## Changes

- Pin `openclaw@2026.6.10`, diagnostics, Brave, Discord, Slack,
WhatsApp, and
  Microsoft Teams packages to their reviewed npm SRIs across images,
manifests, package metadata, lifecycle policy, and version-aware tests.
- Verify registry metadata and downloaded archives before install,
suppress
  package-controlled lifecycle scripts, and retain the explicit reviewed
  OpenClaw postinstall boundary.
- Re-audit the published 2026.6.10 tarball, shrinkwrap, npm graph, Teams
package-load hashes, weather skill, and every compiled-dist patch
selector.
- Keep the fail-closed sandbox fetch/proxy, chat correlation, compact
tool
catalog, Teams message-hint, and #4434 unreachable-inference
compatibility
  patches bound to the reviewed distribution.
- Route repair-only device self-approval through OpenClaw CLI,
authenticated
gateway dispatch, and canonical locked-state authorization. Exact
bounded
repairs use the existing stored device credential and fail without
falling
back to shared/admin credentials or local approval; no Python process
reads
  or writes device credentials or pairing state.
- Preserve keyless rebuild recovery only for the exact registered
provider,
model, credential binding, endpoint identity, API, and persisted route,
  without reading, exporting, or replacing the credential.
- Restore registry rows from an atomic removal receipt and reclaim a
removed
  default only when no concurrent default transition superseded it.
- Isolate `NEMOCLAW_PREFERRED_API` along with all other ambient
inference
selectors during rebuild resume, preserving the recorded sandbox route.
- Reject multiline production build arguments and decimal-version inputs
that
  could inject legacy fixture overrides through workflow dispatch.
- Scan snapshot credential assignments through the shared
credential-name
  classifier while continuing to permit only recognized `models.json`
  environment/secret references.
- Classify #4434 diagnostics only from the final contiguous, bounded TUI
`run error:` block so unrelated transcript text cannot satisfy the
guard.
- Split generated runtime-proof source into bounded OpenShell arguments,
validate the proof port as decimal `1..65535`, and construct only the
fixed
  loopback proof URL.
- Run the real published-distribution SRI/patch/audit harness from
trusted main
  CI while retaining explicit local opt-in proof.

## Type of Change

- [ ] Code change (feature, bug fix, or refactor)
- [x] 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
- [x] Existing tests cover changed behavior — justification: focused
unit,
integration, E2E-support, workflow-contract, package-contract, and real
  published-distribution suites exercise every changed boundary.
- [ ] Tests not applicable — justification:
- [x] Docs updated for user-facing behavior changes
- [ ] Docs not applicable — justification:
- [x] 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: final-head maintainer re-review
pending.
- [ ] Non-success, skipped, or missing CI check accepted by maintainer —
check
  name, approval link, and follow-up issue: no waiver requested.

### Risk Boundaries

- Keyless provider reuse never reads, exports, or replaces a credential.
The
shared pre-delete/runtime assessment requires the exact registered route
and
gateway binding; missing, oversized, ambiguous, spoofed, or incompatible
  metadata fails before deletion or triggers rollback.
- OpenShell intentionally redacts provider values. Custom endpoint reuse
  therefore also requires authoritative registry route identity and no
conflicting recorded endpoint; the recovery path never updates the
provider.
- Rebuild resume cannot borrow ambient agent, provider, model, endpoint,
  credential, preferred API, or reasoning values from another sandbox.
- Registry rollback restores a removed default only when both the
fallback
  pointer and persisted selection revision still match. A later explicit
default choice is preserved even when it selects that same fallback
value.
- Production build guards reject CR/LF input, the legacy fixture flag,
retained
legacy versions, and fixture-only integrity/tarball overrides before
every
  production image build.
- Snapshot restore accepts only typed or recognized credential
references in
`models.json`; concrete keys, bearer tokens, assignments, and arbitrary
  credential values remain rejected.
- Messaging-plugin registry provenance now requires the exact package
spec,
committed registry `dist.integrity`, committed registry `dist.tarball`
URL,
and packed-byte SRI before `npm pack` or plugin installation. Missing or
mismatched metadata fails closed; #5896 remains only the
shared-installer
  consolidation tracker.
- The reviewed archive contract remains duplicated across isolated
Docker and
Node execution contexts so each transaction fails before install. Shared
  installer consolidation remains #5896 rather than widening this bump.
- Compiled-dist patches are scoped to the SRI-verified 2026.6.10 shapes
and
fail closed on selector drift; they must be removed when upstream
supplies
  equivalent behavior.
- Same-device repair selects stored-device authentication only for the
exact
signed CLI/operator/pairing baseline. A failure rethrows before
shared/admin
or local-state fallback, and the handler plus locked writer revalidate
the
  current pending identity and bounded scopes before token rotation.
- The #4434 shim enriches only reviewed normalized failures inside
OpenShell
sandboxes. Its live guard requires the complete final error block and
cannot
  borrow diagnostic keywords from earlier output.
- No Teams tenant credentials, captured activities, or public-ingress
scaffold
  are included; Teams evidence remains package/load-boundary evidence.

## Verification

Exact head: `5911445d55dfd10b03233b4133195e6d8c8d0e60`  
Current `main`: `06b78aae3816ffe23eab64e9327ca99407a5a527`

- [x] PR description includes the DCO sign-off declaration and the new
commit
  includes `Signed-off-by`
- [ ] Git hooks passed during commit and push, or
`npx prek run --from-ref main --to-ref HEAD` passes — all commit/push
hooks
passed except the deliberately skipped unsharded `test-cli` coverage
hook;
  exact-head hosted coverage shards are required below.
- [x] Targeted tests pass for changed behavior
- [ ] Full `npm test` passes (broad runtime changes only) — the
unsharded local
coverage hook was attempted on the complete tree but exceeded many
existing
5-second per-test limits under coverage on this Mac. Every changed
boundary
passes in isolated focused runs; authoritative hosted coverage shards
are
  required below and no waiver is requested.
- [ ] 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)
- [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)

Local exact-tree evidence:

- `npm run build:cli`, `npm run typecheck:cli`, `npm run typecheck`,
repository
checks, Vitest project/import/title checks, and the 1,216-file test-size
scan
  passed on the merged tree.
- Final exact-head rebuild, registry, provider-recovery,
base-image-handoff,
  destroy, DCode, and recovery suites: 167 CLI tests passed.
- Final exact-head destroy, fetch-guard, stored-device-auth,
workflow-contract,
  and scorecard suite: 83 integration tests passed.
- Final exact-head #4462 fixture boundary and E2E workflow-contract
suite: 22
  E2E-support tests passed.
- OpenClaw archive/build-argument/mcporter provenance suite: 37 passed;
  messaging build-applier provenance suite: 30 passed.
- OpenClaw chat and device-scope compiled-runtime patch suites: 32
passed.
- The real OpenClaw 2026.6.10 #4462 pairing-only repair and exact raw
CLI
identity proof passed through the extracted live heredoc path with no
pending
  request left behind; the executable fixture contract observes
  `paired.json` → `device-auth.json` → `pending.json` publication.
- Real `openclaw@2026.6.10` published-tarball SRI, patch application,
and patch
audit/config-token gateway harness: 3 passed in 117.43 seconds on Node
22.19
  at the current exact head.
- Changed files pass Biome formatting, lint, shellcheck, hadolint,
YAML/JSON,
Markdown, secret, schema, repository, source-shape, size, and diff
checks.
- The repository-wide format check still reports two pre-existing clean
files
outside this PR; neither is changed here and no waiver is applied to PR
CI.

Hosted exact-head requirements before merge:

- [x] Ordinary PR matrix, including sharded CLI/plugin coverage, green.
- [x] Fresh GPT and Nemotron advisor runs completed and dispositioned.
- [x] Full exact-head E2E matrix green with only documented
explicit-only skips.
- [x] Branch zero commits behind current `main` after all proof
completes.
- [ ] One approving review and no unresolved blocking thread.

Final exact-head hosted evidence:

- [Ordinary PR
matrix](https://github.com/NVIDIA/NemoClaw/actions/runs/28703740246)
is green, including all five CLI shards, static checks, build/typecheck,
  installer integration, plugin tests, and the aggregate gate.
- [Base
images](https://github.com/NVIDIA/NemoClaw/actions/runs/28703746118)
and [sandbox images plus
E2E](https://github.com/NVIDIA/NemoClaw/actions/runs/28703773610)
are green at the exact head and exercised the reviewed OpenClaw and
locked
  mcporter provenance-reuse paths.
- [Full
E2E](https://github.com/NVIDIA/NemoClaw/actions/runs/28703774060)
attempt 2 is green: every default-enabled job passed, five explicit-only
  jobs were intentionally skipped, and no failures remain.
- [Targeted #4462 plus
rebuild-openclaw](https://github.com/NVIDIA/NemoClaw/actions/runs/28703787702)
and the [Hermes dashboard
rerun](https://github.com/NVIDIA/NemoClaw/actions/runs/28704016943)
  are green at the exact head.
- [Final advisor
run](https://github.com/NVIDIA/NemoClaw/actions/runs/28703740209)
completed successfully. GPT reports zero required and zero new findings.
  Its remaining floating-Docker-action warning concerns refs inherited
unchanged from current `main`; repository-wide action pinning is
accepted
  as separate hardening rather than scope for this dependency bump. The
  duplicate non-interactive-helper suggestion is likewise a non-blocking
refactor. Nemotron's repeated source-of-truth and structural findings do
not identify a new final-head defect; the applicable integrity,
recovery,
  trusted-main, and decomposition boundaries are documented above and in
  #5896.

CodeRabbit, CodeQL, and all required contexts are green; all review
threads
are resolved. The branch is zero commits behind `main`, carries label
`v0.0.74`, and is mergeable. The only outstanding branch-protection gate
is
a final approving review; [re-review was requested from

@apurvvkumaria](#5595 (comment)).

## Rollback Plan

Revert this PR as a unit, restoring the prior OpenClaw pins, integrity
values,
plugin-install behavior, state-restore rules, and compatible patch set.
Do not
combine the older runtime pin with 2026.6.10 compiled-dist selectors.
Rebuild
base and sandbox images, then rerun the affected E2E lanes.

---

Signed-off-by: Aaron Erickson <aerickson@nvidia.com>









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

* **New Features**
* Upgraded bundled OpenClaw runtime to **2026.6.10** with fully
version-pinned messaging plugins.
* Enhanced sandbox rebuild with registry receipts/rollback and improved
routing credential preflight.
* Added an e2e **snapshot credential scanner** to detect credential
leaks.
* **Bug Fixes**
* Improved **chat.send** compatibility (embedded retry persistence +
preserved run/session wiring).
* Strengthened unreachable-inference UI diagnostics and tightened
approval/retry flows to prevent unintended state changes.
* **Documentation**
* Updated Telegram troubleshooting and messaging-channel docs; added the
**OpenClaw 2026.6.10** dependency review.
* **Chores / CI**
* Hardened Docker build-arg validation and added a real OpenClaw dist
harness; added messaging plugin provenance integrity checks.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Signed-off-by: Andrew Erickson <aerickson@nvidia.com>
Hadar301 pushed a commit to Hadar301/NemoClaw-OpenShift that referenced this pull request Jul 12, 2026
## Summary
Ports the focused E2E stabilizers from `dep/openshell-v0.0.67` / PR
NVIDIA#5596 onto current `main` after PR NVIDIA#5760, without merging the full
OpenShell 0.0.67 branch.

This targets the full-main nightly failures from run 28172043426:
- `kimi-inference-compat-e2e` — relax live Kimi trajectory shape
expectations.
- `common-egress-agent-e2e` — tolerate wrapped reply tokens like
`REFER\nENCE_AGENT_OK`.
- `sessions-agents-cli-e2e` — keep sessions admin RPCs local/SDK-backed
and avoid multiline RPC args.

Also includes the small channel/remove rebuild staging stabilizer
carried by the shared matrix-stabilization commit.

## Validation
- Local push hooks could not fully run because this worktree is missing
local npm dependencies (`tsx`, `typescript`, Biome dependency `klaw`).
- Shellcheck/gitleaks/basic pre-commit checks passed before the
dependency-gated hooks failed.
- Focused nightly E2E dispatch is being run separately on this branch.

## Notes
- Does not port the full OpenShell 0.0.67 upgrade.
- Does not claim to fix `diagnostics-e2e` HTTP 403; that failure looked
infra/upstream/credential-like.

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


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

* **Bug Fixes**
* Improved sandbox gateway RPC execution with pairing-aware retry, clear
retry/no-retry gating, and stricter handling of unsupported admin
methods.
* Added safer parsing and richer failure diagnostics with token
redaction in returned output and logged errors.
* **New Features**
* Enhanced gateway RPC results to include separate diagnostic output and
tightened admin method support via allowlisting.
* **Tests**
* Expanded Vitest coverage for gateway orchestration/output handling and
stream capture behavior.
* Strengthened OpenClaw text assertions, updated e2e token/PONG checks,
and relaxed Kimi validations for mock vs live.
  * Prevented Telegram env reuse after channel removal.
* **Chores**
* Added optional stdout/stderr stream capture controls for OpenShell
helpers.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Aaron Erickson <aerickson@nvidia.com>
Hadar301 pushed a commit to Hadar301/NemoClaw-OpenShift that referenced this pull request Jul 12, 2026
<!-- markdownlint-disable MD041 -->
## Summary
<!-- 1-3 sentences: what this PR does and why. -->

This PR advances NemoClaw's stable OpenShell support from `0.0.44` on
current `main` to `0.0.71`, including checksum-pinned installation,
authenticated Docker-driver gateway startup, fail-closed recovery
behavior, and unified E2E coverage. It preserves the existing CLI
integration and adds the full `nemoclaw <sandbox> logs --tail 50`
denied-egress regression required by NVIDIA#4760.

## Related Issue
<!-- Fixes #NNN or Closes #NNN. Remove this section if none. -->

Fixes NVIDIA#4760

Refs NVIDIA#5591  
Refs NVIDIA#5513

## Changes
<!-- Bullet list of key changes. -->

- Pin OpenShell `0.0.71` across the blueprint, installer, onboarding
version checks, Brev launchable bootstrap, and unified E2E workflow,
with published release SHA-256 digests for supported CLI and gateway
assets.
- Generate and validate NemoClaw-owned local TLS, mTLS user auth, and
OpenShell sandbox JWT configuration for Docker-driver gateways; reject
unauthenticated and wildcard-bind paths while preserving
OpenShell-managed Docker bridge callbacks.
- Keep the older-glibc gateway compatibility container behind explicit
opt-in, loopback binding, dropped capabilities, `no-new-privileges`, and
a validated Unix Docker socket.
- Recover gateway JWT generation only when the recorded owner is
provably gone, and keep malformed, live, replaced, or unprobeable lock
states fail-closed.
- Fail Hermes recovery closed when the sandbox lacks the secret-boundary
validator, and accept markerless OpenShell relaunch output only after
the gateway health probe succeeds.
- Harden the Brev bootstrap by keeping `/var/run/docker.sock`
restricted, using Docker-group execution for daemon commands, and
removing mutable image pre-pulls and `latest` fallbacks.
- Port OpenShell version, gateway-auth, upgrade, and network-policy
coverage into `.github/workflows/e2e.yaml` and `test/e2e/**`, including
the explicit live gateway-auth job and NVIDIA#4760's full denied-reason
assertion from `logs --tail 50`.
- Update command, troubleshooting, release-note, and security
documentation for the supported version, gateway trust boundary,
compatibility opt-in, and recovery behavior.

## Type of Change

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

## Quality Gates
<!-- Check all that apply. For any "covered by existing tests", "not
applicable", or waiver entry, add a brief justification on the same line
or in the Changes section. -->
- [x] Tests added or updated for changed behavior
- [ ] Existing tests cover changed behavior — justification: Not
applicable; this PR adds and updates focused unit, integration,
workflow-contract, and live E2E coverage.
- [ ] Tests not applicable — justification: Not applicable; runtime,
installer, security, recovery, and workflow behavior changes.
- [x] Docs updated for user-facing behavior changes
- [ ] Docs not applicable — justification: Not applicable;
supported-version, gateway, compatibility, and recovery behavior is
user-facing.
- [x] 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: [Maintainer approval on
the prior exact
head](NVIDIA#5596 (review))
is recorded; final-head advisors and human confirmation are pending.
- [ ] Non-success, skipped, or missing CI check accepted by maintainer —
check name, approval link, and follow-up issue: Not applicable; no
final-head CI exception or maintainer waiver is requested.

## Verification
<!-- Check each item you ran and confirmed. Leave unchecked items you
skipped. Doc-only changes do not require npm test unless you ran it. -->
- [x] PR description includes the DCO sign-off declaration and every
commit appears as `Verified` in GitHub
- [ ] Git hooks passed during commit and push, or `npx prek run
--from-ref main --to-ref HEAD` passes
- [x] Targeted tests pass for changed behavior
- [ ] Full `npm test` passes (broad runtime changes only)
- [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)
- [x] Doc pages follow the [style
guide](https://github.com/NVIDIA/NemoClaw/blob/main/docs/CONTRIBUTING.md)
(doc changes only)
- [x] New doc pages include SPDX header and frontmatter (new pages only)

Current merge-candidate evidence:

- Final pushed head: `be74fad8f0f09d4436d431c79d727d54d66a52b1`; every
PR commit is GitHub `Verified`.
- `npm run build:cli` and `npm run typecheck:cli` passed.
- Focused gateway/Brev/workflow regression set: 23/23 passed.
- OpenShell version-pin live-hermetic tests: 2/2 passed.
- Gateway-auth helpers and workflow boundary: 21/21 passed.
- Focused unified workflow selection: 2/2 passed; workflow inventory and
Vitest project-overlap checks passed.
- Isolated broad regression reruns passed: CLI list/share/live inference
11/11; Hermes behavior 10/10; source installer/version/preflight
134/134; OpenShell installer integration 19/19; Docker-bootstrap
preflight 4/4.
- `npm run test-size:check`, `npm run source-shape:check`, `npm run
test-conditionals:scan`, `git diff --check`, Biome, shell syntax, and
focused docs/link checks passed.
- Changed-range `prek` passed formatting, lint, schema/config,
repository, env-doc, shellcheck, hadolint, gitleaks, source-shape,
test-size, and plugin gates. Its instrumented full CLI/integration hook
remains locally red on unchanged current-`main` child-process/host-state
cases under Node `22.16.0`; no waiver is requested, and final-head
GitHub CI is authoritative.
- Fern validation completed with no errors and two pre-existing
environment/theme warnings (unauthenticated redirect check and theme
contrast), so the warning-free docs checkbox remains unchecked.
- Superseded baseline only: full-nightly run
[28402458227](https://github.com/NVIDIA/NemoClaw/actions/runs/28402458227)
completed successfully on old head
`823e3ca5e52ff843f6b79c237d009eafb5bcf3c7` with 68 successful and 4
intentionally skipped jobs. It is not final evidence for this head.
- Still pending on `be74fad8f`: required CI, both advisors, human
final-head confirmation, targeted live
gateway-auth/network-policy/version/upgrade proof, and exact-head full
nightly.

---
<!-- DCO sign-off is required in this PR description, and every commit
must appear as Verified in GitHub. Run: git config user.name && git
config user.email -->
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>

---------

Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Signed-off-by: Preksha Vyas <prekshiv@nvidia.com>
Co-authored-by: Prekshi Vyas <prekshiv@nvidia.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Prekshi Vyas <34834085+prekshivyas@users.noreply.github.com>
Hadar301 pushed a commit to Hadar301/NemoClaw-OpenShift that referenced this pull request Jul 12, 2026
<!-- markdownlint-disable MD041 -->
## Summary
Refreshes the public documentation for NemoClaw v0.0.71 after scanning
commits since v0.0.70. Adds release notes and fills the remaining doc
gaps for Windows bootstrap diagnostics, OpenClaw agent auto-relock
warnings, auto-pair cadence tuning, and plugin-install recovery hints.

## Changes
- `docs/about/release-notes.mdx`: adds the v0.0.71 release-note section,
grouped by gateway recovery, OpenShell auth, policy provenance, day-two
maintenance, messaging/inference, and Windows setup.
- `docs/get-started/windows-preparation.mdx`: documents sanitized WSL
install output and reboot gating in the Windows bootstrap.
- `docs/reference/commands.mdx`: documents the host `agent` wrapper's
shields auto-relock warning and OpenClaw auto-pair watcher tuning
variables.
- `docs/reference/troubleshooting.mdx`: adds plugin-install network
failure recovery guidance and updates Windows WSL troubleshooting for
sanitized install logs and reboot-required handling.

Source summary:
- NVIDIA#6065 -> `docs/about/release-notes.mdx`: Notes explicit model override
preservation and gateway-log guard-chain recovery diagnostics.
- NVIDIA#5874 -> `docs/about/release-notes.mdx`: Summarizes host-mediated
`recover` and `gateway restart`, linking to lifecycle, command,
troubleshooting, and trusted-boundary docs already added by the source
PR.
- NVIDIA#5596 -> `docs/about/release-notes.mdx`: Summarizes OpenShell 0.0.71
gateway auth, loopback binding, and compatibility-container docs already
added by the source PR.
- NVIDIA#5797 and NVIDIA#5798 -> `docs/about/release-notes.mdx`: Summarizes
`policy-list` provenance, Restricted tier suppression, and Balanced tier
weather behavior already reflected in policy docs.
- NVIDIA#5784 -> `docs/about/release-notes.mdx`: Summarizes
`--destroy-user-data` and the safe `--yes` uninstall behavior already
documented in lifecycle and command docs.
- NVIDIA#6034 -> `docs/about/release-notes.mdx`: Summarizes custom Dockerfile
warm-build cache behavior already documented in the command reference.
- NVIDIA#5951 -> `docs/reference/commands.mdx`: Documents the stderr-only host
`agent` wrapper warning after recent shields auto-relock.
- NVIDIA#5387 -> `docs/reference/commands.mdx`: Documents OpenClaw auto-pair
watcher cadence and fast-reentry tuning variables.
- NVIDIA#5835 -> `docs/reference/troubleshooting.mdx`: Adds recovery guidance
for OpenClaw plugin-install network failures.
- NVIDIA#5995 and NVIDIA#5956 -> `docs/about/release-notes.mdx`: Summarizes
Microsoft Teams final-message delivery and runtime mention hints already
covered by messaging docs.
- NVIDIA#5716 -> `docs/about/release-notes.mdx`: Summarizes non-interactive
Ollama loopback safety already covered by local inference docs.
- NVIDIA#5505, NVIDIA#5527, and NVIDIA#5528 -> `docs/about/release-notes.mdx`: Summarizes
compatible local endpoint, model task-fit, and model capability audit
docs.
- NVIDIA#6009 -> `docs/get-started/windows-preparation.mdx`,
`docs/reference/troubleshooting.mdx`: Documents sanitized Windows
bootstrap WSL output and reboot-required gating.
- NVIDIA#6055 -> no additional source doc page change needed beyond the
already-merged quickstart update; release notes did not duplicate
routine quickstart cleanup.

No matching v0.0.71 GitHub announcement discussion was found in the
latest 20 discussions, so this refresh is based on the commit scan and
existing source PR docs.

## Type of Change

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

## Quality Gates
<!-- Check all that apply. For any "covered by existing tests", "not
applicable", or waiver entry, add a brief justification on the same line
or in the Changes section. -->
- [ ] Tests added or updated for changed behavior
- [ ] Existing tests cover changed behavior — justification:
- [x] Tests not applicable — justification: docs-only refresh with no
runtime behavior changes.
- [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
<!-- Check each item you ran and confirmed. Leave unchecked items you
skipped. Doc-only changes do not require npm test unless you ran it. -->
- [x] PR description includes the DCO sign-off declaration and every
commit appears as `Verified` in GitHub
- [x] Git hooks passed during commit and push, or `npx prek run
--from-ref main --to-ref HEAD` passes
- [ ] Targeted tests pass for changed behavior
- [ ] Full `npm test` passes (broad runtime changes only)
- [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) — ran
`npm run docs`; Fern reported 0 errors and 2 existing warnings.
- [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)

---
<!-- DCO sign-off is required in this PR description, and every commit
must appear as Verified in GitHub. Run: git config user.name && git
config user.email -->
Signed-off-by: Julie Yaunches <jyaunches@nvidia.com>


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

## Summary by CodeRabbit

* **Documentation**
* Added a new release-notes entry covering gateway recovery,
authentication, network policy/provenance output, uninstall safety,
Windows bootstrap diagnostics, messaging defaults, and inference setup
guidance.
* Clarified Windows preparation steps around reboot behavior and
redacting troubleshooting transcripts.
* Expanded command reference details for OpenClaw wrapper behavior and
new auto-pair tuning options.
* Improved troubleshooting guidance for plugin installation issues, WSL
repair/reboot cases, and install timing problems.

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

Signed-off-by: Julie Yaunches <jyaunches@nvidia.com>
Co-authored-by: Prekshi Vyas <34834085+prekshivyas@users.noreply.github.com>
Hadar301 pushed a commit to Hadar301/NemoClaw-OpenShift that referenced this pull request Jul 12, 2026
<!-- markdownlint-disable MD041 -->
## Summary

NemoClaw `v0.0.74` will ship stable OpenShell `v0.0.72`. This dependency
layer advances the supported OpenShell contract from `0.0.71` to
`0.0.72`, pins every consumed release artifact, preserves
round-trippable policy state, and hardens installer verification so
pull-request code cannot authorize its own pins.

## Related Issue

Refs NVIDIA#5591.
Follow-up to merged NVIDIA#5596.
Dependency layer for NVIDIA#5876 and the accepted MCP design in NVIDIA#566.

## Changes

- Pin stable OpenShell `0.0.72` across the supported version
floor/ceiling, installer, Brev launchable, blueprint, supervisor image,
workflow, and live-E2E contracts. OpenShell development builds remain
compatibility evidence, not the shipping runtime.
- Pin all consumed CLI, gateway, and sandbox archives plus both Brev CLI
references to the official `v0.0.72` checksum manifests.
- Read mutation input from `openshell policy get --base`, strip reserved
`_provider_*` entries before `policy set`, retain `--full` only for
read-only diagnostics, and preserve future mapping sections plus
MCP/JSON-RPC fields during merges.
- Route the CommonJS CLI and ESM plugin through one generated OpenShell
policy boundary and exact-pin `yaml` `2.8.3` in both production package
graphs.
- Normalize that boundary for both compiled CommonJS and source-mode
`tsx` loading. A subprocess package-contract test reproduces the live
source-loader path that exposed the mismatch.
- Run installer verification from base-trusted code. The introducing PR
falls back only to immutable commit
`cb5e9aefab2b16fedc0995149fc3520da0d5e0c7`, verified as tree
`1fdf59efe40b78c407e222fd42043b23a61e199a`, with an enforced expiry at
`2026-12-29T19:35:41Z`.
- Treat PR-head installer files as data only. The trusted parser rejects
symbolic links, a symbolic-link `scripts` parent, non-regular files,
changed inode/device identity, and input over 1 MiB; it opens with
`O_NOFOLLOW` and performs a bounded descriptor read.
- Fail installer verification closed on missing, duplicate, mismatched,
incomplete, or unreachable OpenShell/Brev pin data.
- Publish the OpenShell `0.0.72` compatibility review and align version,
policy, gateway-authentication, and troubleshooting documentation.

### Exact-head evidence

- PR head: `2d06fa01b624b63813fe558ce36b29d47ad31e36`, based exactly on
current `main` `dc96deb24d67eeeb2cb7b2bb42c7c53f000507f3`. The final
signed merge incorporates the release-boundary revert that defers
unrelated dcode-status work, so this dependency PR does not reintroduce
NVIDIA#6202 outside its scope.
- GitHub verifies the new merge commit signature, DCO is green, the
prior maintainer approval remains recorded at [review
4611344448](NVIDIA#6020 (review)),
and GitHub reports the PR graph as `MERGEABLE`.
- Post-restack local validation passes `build:cli`, full and CLI
typechecks, repository checks, generated agent-doc synchronization,
affected Deep Agents image contracts, and `git diff --check`.
- All exact-head ordinary PR checks are terminal green (33 successful,
three skipped/neutral, zero failures), including macOS/WSL E2E, every
CLI shard and aggregate, static/security scans, DCO, and both PR Review
Advisor jobs. GitHub reports `APPROVED` and `MERGEABLE/CLEAN`.
- Exact-head selected OpenShell [E2E run
28632123304](https://github.com/NVIDIA/NemoClaw/actions/runs/28632123304)
is terminal green: version pin, gateway-auth contract, network policy,
gateway upgrade/state restoration, scorecard, and the no-comment
reporter all passed from a temporary no-PR ref at the identical commit.
The temporary ref was deleted after completion.
- Exact-head PR Review [run
28632002111](https://github.com/NVIDIA/NemoClaw/actions/runs/28632002111)
and E2E Advisor [run
28632002140](https://github.com/NVIDIA/NemoClaw/actions/runs/28632002140)
are green. GPT reports no actionable finding; Nemotron's check passed
but both JSON synthesis attempts were unparseable, so that model's
artifact is incomplete rather than clearance. E2E Advisor reports high
confidence and selects the four live lanes linked above.

### Trust-boundary notes

- The immutable bootstrap is intentionally used only while the PR base
lacks the trusted action. Once that action exists on the base, executing
the newer base-trusted verifier is the stronger boundary; the expiring
bootstrap should then be removed rather than run redundantly.
- No untrusted PR process executes alongside the parser. GitHub checks
out inert PR data, then trusted code validates and reads the
already-opened descriptor. The link/type/identity/bounds checks cover
repository-controlled redirection and exhaustion inputs without claiming
protection from a privileged concurrent host writer.
- Stable OpenShell `0.0.72` accepts an unmarked policy root only when it
contains `version` or `network_policies`; metadata-only and malformed
documents fail closed. Versionless `network_policies` is retained for
the supported compatibility contract.

### Advisor disposition

- GPT reported no required findings and one warning about the mutable
default `BASE_IMAGE` tag. That `ARG
BASE_IMAGE=ghcr.io/nvidia/nemoclaw/sandbox-base:latest` line is
unchanged from current `main`; this dependency PR neither introduces nor
broadens that repository-wide build default.
- Nemotron's bootstrap finding would weaken the intended trust
transition: the immutable bootstrap exists only for the introducing PR.
Once the action is present on the base, the newer base-trusted action
must replace the older bootstrap; both paths are immutable for the
current event and are contract-tested.
- Nemotron's parser race assumes an untrusted concurrent filesystem
writer. PR code is never executed in this job: GitHub checks out inert
data, then trusted code rejects links/special files, checks the opened
descriptor's device/inode, bounds the read, and closes it. A privileged
host writer is outside this PR-input threat model.
- Nemotron's checksum finding is not circular. The trusted checker pins
the SHA-256 of each upstream checksum manifest, verifies that immutable
manifest before reading it, and compares every embedded installer pin
with exactly one manifest entry. At install time each named archive must
exist and match its pinned digest, so a missing asset still fails closed
without downloading all archives during every PR check.
- The generated-boundary auditor executes in the Docker builder stage
exercised by ordinary `build-sandbox-images` CI. The exact source-mode
`.cts` versus generated `.cjs` mismatch found by live proof is now
covered directly by the subprocess package-contract test and the
compiled runner suites.

## Type of Change

- [ ] Code change (feature, bug fix, or refactor)
- [x] 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
- [x] Existing tests cover changed behavior — justification: policy
mutation, package boundary, installer trust, workflow selection, and
runtime upgrade/state-restoration have focused coverage; final selected
E2E is linked above.
- [ ] Tests not applicable — justification: not applicable; this changes
security-sensitive installer, policy, and runtime compatibility
behavior.
- [x] Docs updated for user-facing behavior changes
- [ ] Docs not applicable — justification: not applicable; supported
OpenShell versions and policy behavior are user-facing.
- [x] 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 linked approval
predates the current head; exact-head human review or an explicit
carried-approval decision remains required, and no waiver is requested.
- [ ] Non-success, skipped, or missing CI check accepted by maintainer —
check name, approval link, and follow-up issue: no waiver is requested;
exact-head ordinary CI is green, and the selected run's comment-only
reporter caveat is documented above and is not a required PR check.

## Verification

- [x] PR description includes the DCO sign-off declaration and every
commit appears as `Verified` in GitHub
- [ ] Git hooks passed during commit and push, or `npx prek run
--from-ref main --to-ref HEAD` passes
- [x] Targeted tests pass for changed behavior
- [ ] Full `npm test` passes (broad runtime changes only)
- [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)
- [x] Doc pages follow the [style
guide](https://github.com/NVIDIA/NemoClaw/blob/main/docs/CONTRIBUTING.md)
(doc changes only)
- [x] New doc pages include SPDX header and frontmatter (new pages only)

---
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>

---------

Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Signed-off-by: Preksha Vyas <prekshiv@nvidia.com>
Co-authored-by: Prekshi Vyas <prekshiv@nvidia.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Prekshi Vyas <34834085+prekshivyas@users.noreply.github.com>
Hadar301 pushed a commit to Hadar301/NemoClaw-OpenShift that referenced this pull request Jul 12, 2026
…VIDIA#5595)

<!-- markdownlint-disable MD041 -->
## Summary

Upgrade NemoClaw to `openclaw@2026.6.10` and adapt packaging,
compiled-runtime compatibility patches, messaging plugins, rebuild
recovery,
and E2E coverage to the reviewed release. The change retains the
existing
fail-closed package, credential-recovery, state-restore, and
runtime-proof
boundaries while moving one stable patch release forward from 2026.6.9.

## Related Issue

- Refs NVIDIA#5591.
- NVIDIA#5596 (OpenShell 0.0.71) landed first, preserving the dependency
landing
  order; this PR targets `v0.0.74`.
- Post-tag installer consolidation and fixture retirement remain tracked
in
  NVIDIA#5896 and are not blockers for the first tag containing this PR.

## Changes

- Pin `openclaw@2026.6.10`, diagnostics, Brave, Discord, Slack,
WhatsApp, and
  Microsoft Teams packages to their reviewed npm SRIs across images,
manifests, package metadata, lifecycle policy, and version-aware tests.
- Verify registry metadata and downloaded archives before install,
suppress
  package-controlled lifecycle scripts, and retain the explicit reviewed
  OpenClaw postinstall boundary.
- Re-audit the published 2026.6.10 tarball, shrinkwrap, npm graph, Teams
package-load hashes, weather skill, and every compiled-dist patch
selector.
- Keep the fail-closed sandbox fetch/proxy, chat correlation, compact
tool
catalog, Teams message-hint, and NVIDIA#4434 unreachable-inference
compatibility
  patches bound to the reviewed distribution.
- Route repair-only device self-approval through OpenClaw CLI,
authenticated
gateway dispatch, and canonical locked-state authorization. Exact
bounded
repairs use the existing stored device credential and fail without
falling
back to shared/admin credentials or local approval; no Python process
reads
  or writes device credentials or pairing state.
- Preserve keyless rebuild recovery only for the exact registered
provider,
model, credential binding, endpoint identity, API, and persisted route,
  without reading, exporting, or replacing the credential.
- Restore registry rows from an atomic removal receipt and reclaim a
removed
  default only when no concurrent default transition superseded it.
- Isolate `NEMOCLAW_PREFERRED_API` along with all other ambient
inference
selectors during rebuild resume, preserving the recorded sandbox route.
- Reject multiline production build arguments and decimal-version inputs
that
  could inject legacy fixture overrides through workflow dispatch.
- Scan snapshot credential assignments through the shared
credential-name
  classifier while continuing to permit only recognized `models.json`
  environment/secret references.
- Classify NVIDIA#4434 diagnostics only from the final contiguous, bounded TUI
`run error:` block so unrelated transcript text cannot satisfy the
guard.
- Split generated runtime-proof source into bounded OpenShell arguments,
validate the proof port as decimal `1..65535`, and construct only the
fixed
  loopback proof URL.
- Run the real published-distribution SRI/patch/audit harness from
trusted main
  CI while retaining explicit local opt-in proof.

## Type of Change

- [ ] Code change (feature, bug fix, or refactor)
- [x] 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
- [x] Existing tests cover changed behavior — justification: focused
unit,
integration, E2E-support, workflow-contract, package-contract, and real
  published-distribution suites exercise every changed boundary.
- [ ] Tests not applicable — justification:
- [x] Docs updated for user-facing behavior changes
- [ ] Docs not applicable — justification:
- [x] 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: final-head maintainer re-review
pending.
- [ ] Non-success, skipped, or missing CI check accepted by maintainer —
check
  name, approval link, and follow-up issue: no waiver requested.

### Risk Boundaries

- Keyless provider reuse never reads, exports, or replaces a credential.
The
shared pre-delete/runtime assessment requires the exact registered route
and
gateway binding; missing, oversized, ambiguous, spoofed, or incompatible
  metadata fails before deletion or triggers rollback.
- OpenShell intentionally redacts provider values. Custom endpoint reuse
  therefore also requires authoritative registry route identity and no
conflicting recorded endpoint; the recovery path never updates the
provider.
- Rebuild resume cannot borrow ambient agent, provider, model, endpoint,
  credential, preferred API, or reasoning values from another sandbox.
- Registry rollback restores a removed default only when both the
fallback
  pointer and persisted selection revision still match. A later explicit
default choice is preserved even when it selects that same fallback
value.
- Production build guards reject CR/LF input, the legacy fixture flag,
retained
legacy versions, and fixture-only integrity/tarball overrides before
every
  production image build.
- Snapshot restore accepts only typed or recognized credential
references in
`models.json`; concrete keys, bearer tokens, assignments, and arbitrary
  credential values remain rejected.
- Messaging-plugin registry provenance now requires the exact package
spec,
committed registry `dist.integrity`, committed registry `dist.tarball`
URL,
and packed-byte SRI before `npm pack` or plugin installation. Missing or
mismatched metadata fails closed; NVIDIA#5896 remains only the
shared-installer
  consolidation tracker.
- The reviewed archive contract remains duplicated across isolated
Docker and
Node execution contexts so each transaction fails before install. Shared
  installer consolidation remains NVIDIA#5896 rather than widening this bump.
- Compiled-dist patches are scoped to the SRI-verified 2026.6.10 shapes
and
fail closed on selector drift; they must be removed when upstream
supplies
  equivalent behavior.
- Same-device repair selects stored-device authentication only for the
exact
signed CLI/operator/pairing baseline. A failure rethrows before
shared/admin
or local-state fallback, and the handler plus locked writer revalidate
the
  current pending identity and bounded scopes before token rotation.
- The NVIDIA#4434 shim enriches only reviewed normalized failures inside
OpenShell
sandboxes. Its live guard requires the complete final error block and
cannot
  borrow diagnostic keywords from earlier output.
- No Teams tenant credentials, captured activities, or public-ingress
scaffold
  are included; Teams evidence remains package/load-boundary evidence.

## Verification

Exact head: `5911445d55dfd10b03233b4133195e6d8c8d0e60`  
Current `main`: `06b78aae3816ffe23eab64e9327ca99407a5a527`

- [x] PR description includes the DCO sign-off declaration and the new
commit
  includes `Signed-off-by`
- [ ] Git hooks passed during commit and push, or
`npx prek run --from-ref main --to-ref HEAD` passes — all commit/push
hooks
passed except the deliberately skipped unsharded `test-cli` coverage
hook;
  exact-head hosted coverage shards are required below.
- [x] Targeted tests pass for changed behavior
- [ ] Full `npm test` passes (broad runtime changes only) — the
unsharded local
coverage hook was attempted on the complete tree but exceeded many
existing
5-second per-test limits under coverage on this Mac. Every changed
boundary
passes in isolated focused runs; authoritative hosted coverage shards
are
  required below and no waiver is requested.
- [ ] 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)
- [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)

Local exact-tree evidence:

- `npm run build:cli`, `npm run typecheck:cli`, `npm run typecheck`,
repository
checks, Vitest project/import/title checks, and the 1,216-file test-size
scan
  passed on the merged tree.
- Final exact-head rebuild, registry, provider-recovery,
base-image-handoff,
  destroy, DCode, and recovery suites: 167 CLI tests passed.
- Final exact-head destroy, fetch-guard, stored-device-auth,
workflow-contract,
  and scorecard suite: 83 integration tests passed.
- Final exact-head NVIDIA#4462 fixture boundary and E2E workflow-contract
suite: 22
  E2E-support tests passed.
- OpenClaw archive/build-argument/mcporter provenance suite: 37 passed;
  messaging build-applier provenance suite: 30 passed.
- OpenClaw chat and device-scope compiled-runtime patch suites: 32
passed.
- The real OpenClaw 2026.6.10 NVIDIA#4462 pairing-only repair and exact raw
CLI
identity proof passed through the extracted live heredoc path with no
pending
  request left behind; the executable fixture contract observes
  `paired.json` → `device-auth.json` → `pending.json` publication.
- Real `openclaw@2026.6.10` published-tarball SRI, patch application,
and patch
audit/config-token gateway harness: 3 passed in 117.43 seconds on Node
22.19
  at the current exact head.
- Changed files pass Biome formatting, lint, shellcheck, hadolint,
YAML/JSON,
Markdown, secret, schema, repository, source-shape, size, and diff
checks.
- The repository-wide format check still reports two pre-existing clean
files
outside this PR; neither is changed here and no waiver is applied to PR
CI.

Hosted exact-head requirements before merge:

- [x] Ordinary PR matrix, including sharded CLI/plugin coverage, green.
- [x] Fresh GPT and Nemotron advisor runs completed and dispositioned.
- [x] Full exact-head E2E matrix green with only documented
explicit-only skips.
- [x] Branch zero commits behind current `main` after all proof
completes.
- [ ] One approving review and no unresolved blocking thread.

Final exact-head hosted evidence:

- [Ordinary PR
matrix](https://github.com/NVIDIA/NemoClaw/actions/runs/28703740246)
is green, including all five CLI shards, static checks, build/typecheck,
  installer integration, plugin tests, and the aggregate gate.
- [Base
images](https://github.com/NVIDIA/NemoClaw/actions/runs/28703746118)
and [sandbox images plus
E2E](https://github.com/NVIDIA/NemoClaw/actions/runs/28703773610)
are green at the exact head and exercised the reviewed OpenClaw and
locked
  mcporter provenance-reuse paths.
- [Full
E2E](https://github.com/NVIDIA/NemoClaw/actions/runs/28703774060)
attempt 2 is green: every default-enabled job passed, five explicit-only
  jobs were intentionally skipped, and no failures remain.
- [Targeted NVIDIA#4462 plus
rebuild-openclaw](https://github.com/NVIDIA/NemoClaw/actions/runs/28703787702)
and the [Hermes dashboard
rerun](https://github.com/NVIDIA/NemoClaw/actions/runs/28704016943)
  are green at the exact head.
- [Final advisor
run](https://github.com/NVIDIA/NemoClaw/actions/runs/28703740209)
completed successfully. GPT reports zero required and zero new findings.
  Its remaining floating-Docker-action warning concerns refs inherited
unchanged from current `main`; repository-wide action pinning is
accepted
  as separate hardening rather than scope for this dependency bump. The
  duplicate non-interactive-helper suggestion is likewise a non-blocking
refactor. Nemotron's repeated source-of-truth and structural findings do
not identify a new final-head defect; the applicable integrity,
recovery,
  trusted-main, and decomposition boundaries are documented above and in
  NVIDIA#5896.

CodeRabbit, CodeQL, and all required contexts are green; all review
threads
are resolved. The branch is zero commits behind `main`, carries label
`v0.0.74`, and is mergeable. The only outstanding branch-protection gate
is
a final approving review; [re-review was requested from

@apurvvkumaria](NVIDIA#5595 (comment)).

## Rollback Plan

Revert this PR as a unit, restoring the prior OpenClaw pins, integrity
values,
plugin-install behavior, state-restore rules, and compatible patch set.
Do not
combine the older runtime pin with 2026.6.10 compiled-dist selectors.
Rebuild
base and sandbox images, then rerun the affected E2E lanes.

---

Signed-off-by: Aaron Erickson <aerickson@nvidia.com>









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

* **New Features**
* Upgraded bundled OpenClaw runtime to **2026.6.10** with fully
version-pinned messaging plugins.
* Enhanced sandbox rebuild with registry receipts/rollback and improved
routing credential preflight.
* Added an e2e **snapshot credential scanner** to detect credential
leaks.
* **Bug Fixes**
* Improved **chat.send** compatibility (embedded retry persistence +
preserved run/session wiring).
* Strengthened unreachable-inference UI diagnostics and tightened
approval/retry flows to prevent unintended state changes.
* **Documentation**
* Updated Telegram troubleshooting and messaging-channel docs; added the
**OpenClaw 2026.6.10** dependency review.
* **Chores / CI**
* Hardened Docker build-arg validation and added a real OpenClaw dist
harness; added messaging plugin provenance integrity checks.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

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

Labels

area: ci CI workflows, checks, release automation, or GitHub Actions area: docs Documentation, examples, guides, or docs build area: e2e End-to-end tests, nightly failures, or validation infrastructure area: install Install, setup, prerequisites, or uninstall flow area: packaging Packages, images, registries, installers, or distribution area: sandbox OpenShell sandbox lifecycle, runtime, config, or recovery area: security Security controls, permissions, secrets, or hardening area: skills Skills, agent behaviors, prompts, or skill packaging chore Build, CI, dependency, or tooling maintenance dependencies Pull requests that update a dependency file

Projects

None yet

6 participants