Skip to content

fix(sandbox): acknowledge unchanged policy revisions - #2557

Merged
johntmyers merged 2 commits into
NVIDIA:mainfrom
NaveCohenMonday:2518-acknowledge-same-hash-revisions/nc
Aug 10, 2026
Merged

fix(sandbox): acknowledge unchanged policy revisions#2557
johntmyers merged 2 commits into
NVIDIA:mainfrom
NaveCohenMonday:2518-acknowledge-same-hash-revisions/nc

Conversation

@NaveCohenMonday

@NaveCohenMonday NaveCohenMonday commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Summary

Decouple sandbox policy-revision acknowledgement from OPA policy loading. A
newer sandbox revision whose effective policy hash is already loaded can now be
acknowledged without reloading identical policy content, allowing desired and
current revisions to converge.

Related Issue

Fixes #2518

Changes

  • Track the acknowledged sandbox policy version separately from the loaded
    policy hash.
  • Acknowledge only newer, sandbox-scoped revisions with the same non-empty
    effective policy hash.
  • Wait for required policy-runtime or middleware reconciliation to succeed
    before acknowledging the revision.
  • Exclude global policy, local overrides, equal or older versions, empty
    hashes, and different policy content from the shortcut.
  • Emit acknowledgement success telemetry only after the gateway accepts the
    loaded-status report.
  • Document the same-hash revision acknowledgement invariant.

Testing

  • CARGO_INCREMENTAL=0 mise run pre-commit passes
  • Unit tests added/updated
  • E2E tests added/updated (maintainer requested test:e2e after review)

Validation:

CARGO_INCREMENTAL=0 mise exec -- cargo test -p openshell-sandbox --lib

test result: ok. 99 passed; 0 failed

CARGO_INCREMENTAL=0 mise exec -- cargo test -p openshell-sandbox \
  same_hash_ --lib

test result: ok. 3 passed; 0 failed

The scripted poll-loop tests cover v1/H → v2/H exactly-once acknowledgement
without an OPA reload, failed middleware reconciliation with no premature
status followed by retry and one acknowledgement, and the local/global,
changed/empty-hash, equal, and older-version scopes.

Checklist

@copy-pr-bot

copy-pr-bot Bot commented Jul 30, 2026

Copy link
Copy Markdown

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

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

@github-actions

github-actions Bot commented Jul 30, 2026

Copy link
Copy Markdown

All contributors have signed the DCO ✍️ ✅
Posted by the DCO Assistant Lite bot.

@NaveCohenMonday

Copy link
Copy Markdown
Contributor Author

I have read the DCO document and I hereby sign the DCO.

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

gator-agent

PR Review Status

Validation: This concentrated sandbox-policy fix directly addresses confirmed issue #2518 and has no duplicate candidate.
Head SHA: 182ef51768dfa66becb6847e0349170621cbddab

Review findings:

  • Warning — missing stateful regression coverage: the added predicate tests do not exercise the poll loop, so they cannot catch duplicate or premature acknowledgements. Please add a scripted-poll test proving v1/H → v2/H emits exactly one LOADED(2) without reloading OPA, a failed required middleware reconciliation emits nothing and retries, and a later success emits exactly one acknowledgement. Include the relevant negative scopes (local override, global source, changed/empty hash, and equal/older version).
  • See the inline warning about emitting success telemetry before gateway acknowledgement succeeds.

Docs: The architecture invariant is documented. No Fern docs/navigation update is required because this fixes existing --wait semantics without changing a command or user workflow.

Tests: No local tests were run. The author reports pre-commit and two focused predicate tests passing; required CI is still waiting for the copy-PR mirror.

Next state: gator:in-review pending an author update. A test:e2e pipeline run will be required after review feedback is resolved because this changes sandbox policy-enforcement reconciliation.

Comment thread crates/openshell-sandbox/src/lib.rs Outdated
@drew drew added the gator:in-review Gator is reviewing or awaiting PR review feedback label Jul 30, 2026
@NaveCohenMonday
NaveCohenMonday force-pushed the 2518-acknowledge-same-hash-revisions/nc branch from 182ef51 to c20b6b8 Compare July 30, 2026 18:34
@NaveCohenMonday

Copy link
Copy Markdown
Contributor Author

Addressed in c20b6b8c.

The poll loop now accepts a scripted gateway and middleware connector in tests,
while production continues to use the cached gRPC client and normal registry
connector. The new stateful coverage proves:

  • v1/H → v2/H emits exactly one LOADED(2) and leaves the OPA generation
    unchanged;
  • a failed required middleware reconciliation emits no LOADED(2);
  • the identical next poll retries reconciliation, and a later success emits
    exactly one LOADED(2);
  • local override, global source, empty hash, equal version, and older version
    do not use the shortcut;
  • a changed hash follows the normal OPA reload and status path.

I also carried the acknowledgement event kind and policy hash in
PolicyStatusUpdate. The OCSF success event now emits from
run_policy_status_reporter only after report_policy_status returns
successfully.

Validation:

CARGO_INCREMENTAL=0 mise exec -- cargo test -p openshell-sandbox --lib
test result: ok. 99 passed; 0 failed

CARGO_INCREMENTAL=0 mise run pre-commit
Finished successfully

I additionally mutation-checked the two critical guards: allowing equal
versions caused the exactly-once test to fail, and allowing acknowledgement
before runtime reconciliation caused the failed-middleware test to fail.

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

gator-agent

Re-check After Author Update

Thanks @NaveCohenMonday. I reviewed current head c20b6b8c365dd5821594673d5fe06bf4cbe2ae93 after your update explaining the new scripted poll-loop coverage and post-RPC acknowledgement telemetry.

Validation: This concentrated sandbox-policy fix directly addresses confirmed issue #2518.
Head SHA: c20b6b8c365dd5821594673d5fe06bf4cbe2ae93

What I checked: the full current-head diff, the same-hash candidate and reconciliation gates, status-reporter delivery path, stateful positive/negative poll tests, and the architecture invariant.

Disposition: the two prior gator findings are resolved. The poll-loop tests now cover same-hash exactly-once acknowledgement, middleware failure/retry, and the requested negative scopes; success OCSF telemetry now follows a successful gateway status RPC. The independent review found no blocking correctness or security issue. It left one non-blocking determinism warning and one optional telemetry-test suggestion inline.

Docs: architecture/sandbox.md accurately documents the invariant. No Fern docs/navigation update is required because this fixes existing semantics without adding a direct UX workflow.

Tests: Code-only review; no local tests were run. A test:e2e pipeline run is required because this changes sandbox policy-enforcement reconciliation.

Next state: gator:watch-pipeline.

Comment thread crates/openshell-sandbox/src/lib.rs
Comment thread crates/openshell-sandbox/src/lib.rs
@drew drew added the test:e2e Requires end-to-end coverage label Jul 30, 2026
@github-actions

Copy link
Copy Markdown

Label test:e2e applied, but pull-request/2557 does not exist yet. A maintainer needs to comment /ok to test c20b6b8c365dd5821594673d5fe06bf4cbe2ae93 to mirror this PR. Once the mirror exists, re-apply the label or re-run Branch E2E Checks from the Actions tab.

@drew

drew commented Jul 30, 2026

Copy link
Copy Markdown
Collaborator

/ok to test c20b6b8

@drew drew added gator:watch-pipeline Gator is monitoring PR CI/CD status gator:blocked Gator is blocked by process or repository gates gator:in-review Gator is reviewing or awaiting PR review feedback and removed gator:in-review Gator is reviewing or awaiting PR review feedback gator:watch-pipeline Gator is monitoring PR CI/CD status gator:blocked Gator is blocked by process or repository gates labels Jul 30, 2026
@johntmyers johntmyers added gator:blocked Gator is blocked by process or repository gates and removed gator:watch-pipeline Gator is monitoring PR CI/CD status labels Aug 4, 2026
@johntmyers

Copy link
Copy Markdown
Collaborator

@NaveCohenMonday you're hitting some flakey tests which have been turned off as of today. i'd rebase to see if we can get the pipeline green so we can prep to merge

@johntmyers johntmyers added gator:in-review Gator is reviewing or awaiting PR review feedback gator:watch-pipeline Gator is monitoring PR CI/CD status and removed gator:blocked Gator is blocked by process or repository gates gator:in-review Gator is reviewing or awaiting PR review feedback gator:watch-pipeline Gator is monitoring PR CI/CD status labels Aug 5, 2026
@johntmyers

Copy link
Copy Markdown
Collaborator

gator-agent

Author Follow-Up Nudge

This PR has been in gator:in-review for more than 48 business hours waiting on the requested rebase after the flaky branch-check failure.

@NaveCohenMonday, please rebase onto current main and push the updated head so the branch pipeline can rerun. If this is no longer planned, please say so and a maintainer can close it out.

Signed-off-by: Nave Cohen <nave@monday.com>
Signed-off-by: Nave Cohen <nave@monday.com>
@NaveCohenMonday
NaveCohenMonday force-pushed the 2518-acknowledge-same-hash-revisions/nc branch from 4e6ed1b to 25202b2 Compare August 9, 2026 10:11
@NaveCohenMonday

Copy link
Copy Markdown
Contributor Author

Rebased onto current main (4cb77a9) as requested and force-updated the existing fork branch.

New head: 25202b2

The two-commit range-diff is patch-identical to the previously reviewed head, and both commits retain the Nave Cohen DCO sign-off.

Validation on the rebased head:

  • CARGO_INCREMENTAL=0 cargo test -p openshell-sandbox --lib: 107 passed, 0 failed
  • CARGO_INCREMENTAL=0 mise run pre-commit: passed
  • git diff --check: passed

This fork head now needs /ok to test 25202b2 so the copy-PR branch checks can rerun.

@johntmyers

Copy link
Copy Markdown
Collaborator

/ok to test 25202b2

@johntmyers

Copy link
Copy Markdown
Collaborator

gator-agent

Re-check After Author Update

Thanks @NaveCohenMonday. I checked current head 25202b2671f2acafae824e699f21f660210e179b after your August 9 update explaining the requested rebase and patch-equivalent range-diff.

Head SHA: 25202b2671f2acafae824e699f21f660210e179b
Base SHA: 4cb77a900ebd6b789d2b68daaba4830866833b1c
Merge base SHA: 4cb77a900ebd6b789d2b68daaba4830866833b1c
Patch ID: 76105582c3c712f7f4d52b37605c7b6515c2d860
Gator payload: 3

What I checked: the durable Gator feedback ledger, current patch identity, prior marked reviews and inline findings, and the current required-check state. The ledger confirms this rebase is patch-equivalent to the last reviewed head, so I did not re-review the unchanged effective patch. Drew's original findings and their later resolutions remain preserved.

Disposition: resolved. No blocking review findings remain.

Tests: test:e2e remains required because this changes sandbox policy-enforcement reconciliation. I posted /ok to test 25202b2671f2acafae824e699f21f660210e179b so the copy-PR pipeline can proceed.

Next state: gator:watch-pipeline.

@johntmyers johntmyers added gator:watch-pipeline Gator is monitoring PR CI/CD status gator:approval-needed Gator completed review; maintainer approval needed and removed gator:in-review Gator is reviewing or awaiting PR review feedback gator:watch-pipeline Gator is monitoring PR CI/CD status labels Aug 9, 2026
@johntmyers
johntmyers added this pull request to the merge queue Aug 10, 2026
@johntmyers johntmyers added gator:merge-ready and removed gator:approval-needed Gator completed review; maintainer approval needed labels Aug 10, 2026
Merged via the queue into NVIDIA:main with commit a8bdebe Aug 10, 2026
62 of 65 checks passed
@johntmyers

Copy link
Copy Markdown
Collaborator

gator-agent

Monitoring Complete

Monitoring is complete because this PR has merged.

Head SHA: 25202b2671f2acafae824e699f21f660210e179b
Gator payload: 3

Final status: Gator preserved Drew's original review and inline findings, their subsequent resolutions, and the patch-equivalent same-SHA disposition. Required branch, Helm, and E2E gates passed, maintainer approval was present, and the PR merged from gator:merge-ready.

I removed the active gator:* label because there is nothing left for gator to monitor on this PR.

prekshivyas added a commit to NVIDIA/NemoClaw that referenced this pull request Aug 20, 2026
<!--
patch-walker:action=sha256:47430dbc6774dd610e8f5f19a5f0a109c20fb0826f48ba6e0078acf197cc0998
-->
<!--
patch-walker:manifest=sha256:c1309329c618a280d91c328265aead642cd983a37a19273b0b76a8f128d6894e
-->
<!-- patch-walker:dependency=OpenShell -->
<!-- patch-walker:target=0.0.106 -->

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

Updates OpenShell from 0.0.101 to 0.0.106 using the sealed NemoPin
migration evidence. Release-trust prerequisite #9224 is merged on
`main`, and the E2E-selector work from #9378 is included in this branch.
The PR is reconciled with current `main` at latest PR commit
`e3a53c96f`.
<!-- 1-3 plain sentences: what changes and why. Describe
before-and-after behavior when it applies. Follow the NemoClaw Writing
Guide: https://github.com/NVIDIA/NemoClaw/blob/main/WRITING.md. Do not
add unrelated prose cleanup. -->

## Related Issue

- #6256: owner decision
- #3136: open upstream work
- #6871: open upstream work
- #7367: open upstream work
- #7937: open upstream work
- #7957: open upstream work
- #8769: open upstream work
- #8887: open upstream work
- #8893: open upstream work
<!-- Fixes #NNN or Closes #NNN. Remove this section if none. -->

## Changes

- Applies only paths authorized by
`sha256:65355e5c4180f3716fd8e0d0431d432a876460a7005db6099fa18a8599c3037e`.
- Migrates the exact base `44c2636d85f788f81767fbb451717566e0a8d475`
across 5 adjacent release ranges.
- Reconciles the migration with current `main` at base commit
`40dc27283`, includes the reviewed E2E-selector work from #9378, adopts
the upstream messaging-plan fixture fix from #9517, and hardens
runtime-identity qualification for cold 0.0.106 onboarding while
recording the attached-provider post-state.
- Changed paths: `.github/workflows/e2e.yaml`,
`.github/workflows/podman-cpu-proof.yaml`, `agents/hermes/Dockerfile`,
`agents/hermes/mcp-config-transaction.py`,
`agents/hermes/runtime-config-guard.py`, `agents/hermes/start.sh`,
`docs/deployment/set-up-mcp-bridge.mdx`,
`docs/manage-sandboxes/add-mcp-server.mdx`,
`docs/manage-sandboxes/update-sandboxes.mdx`,
`docs/reference/commands.mdx`,
`docs/reference/configure-runtime-identity.mdx`,
`docs/reference/troubleshooting.mdx`,
`docs/security/best-practices.mdx`,
`docs/security/gateway-authentication-controls.mdx`,
`internal/security-reviews/openshell-0.0.72-compatibility-review.mdx`,
`nemoclaw-blueprint/blueprint.yaml`,
`nemoclaw/src/shared/openshell-policy-boundary.cts`,
`scripts/brev-launchable-ci-cpu.sh`,
`scripts/checks/dependency-pins.mts`,
`scripts/checks/managed-image-protected-runtime-contract.ts`,
`scripts/install-openshell.sh`, `scripts/install.sh`,
`scripts/update-hermes-agent.sh`,
`src/lib/actions/sandbox/mcp-bridge-input-validation.test.ts`,
`src/lib/actions/sandbox/mcp-bridge-url-validation.ts`,
`src/lib/actions/sandbox/mcp-bridge-validation.ts`,
`src/lib/actions/sandbox/openshell-child-visible-credentials.v0.0.106.json`,
`src/lib/onboard/docker-driver-gateway-config-toml.test.ts`,
`src/lib/onboard/docker-driver-gateway-runtime.test.ts`,
`src/lib/onboard/docker-driver-gateway-runtime.ts`,
`src/lib/onboard/experimental/portable-demo-lifecycle.ts`,
`src/lib/onboard/forward-start.ts`,
`src/lib/onboard/managed-bootstrap/podman-held-workload.test.ts`,
`src/lib/onboard/managed-bootstrap/podman-held-workload.ts`,
`src/lib/onboard/openshell-feature-gate.test.ts`,
`src/lib/onboard/openshell-feature-gate.ts`,
`src/lib/onboard/openshell-install.test.ts`,
`src/lib/onboard/openshell-install.ts`,
`src/lib/onboard/openshell-version.ts`,
`src/lib/onboard/runtime-provider/podman-lifecycle.ts`,
`src/lib/policy/index.ts`,
`test/brev-launchable-ci-cpu-checksum.test.ts`,
`test/deepagents-mcp-legacy-lifecycle.test.ts`,
`test/dependency-pins-check.test.ts`,
`test/e2e/fixtures/openshell-v0106-qualification.ts`,
`test/e2e/fixtures/security-posture.ts`,
`test/e2e/live/mcp-bridge-sandbox.ts`,
`test/e2e/live/network-policy.test.ts`,
`test/e2e/live/openclaw-plugin-runtime-exdev.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-v0106-tls-server-name-source.ts`,
`test/e2e/live/podman-cpu-lifecycle-helpers.ts`,
`test/e2e/live/podman-cpu-lifecycle.test.ts`,
`test/e2e/support/mcp-bridge-runtime-compatibility.test.ts`,
`test/e2e/support/mcp-bridge-sandbox.test.ts`,
`test/e2e/support/mcp-workflow-boundary.test.ts`,
`test/e2e/support/openshell-gateway-auth-contract-workflow-boundary.test.ts`,
`test/e2e/support/openshell-v0106-tls-server-name-source.test.ts`,
`test/e2e/support/workflow-plan.test.ts`,
`test/exit-code-user-error-surfaces.test.ts`,
`test/fixtures/openshell-v0.0.106`,
`test/gateway-state-reconcile-2276.test.ts`,
`test/hermes-doctor-config-hash.test.ts`,
`test/hermes-mcp-config-transaction.test.ts`,
`test/hermes-mcp-credential-boundary-manifest.test.ts`,
`test/install-openshell-version-check.test.ts`,
`test/install-openshell-version-pin.test.ts`,
`test/installer-hash-check.test.ts`,
`test/installer-sandbox-build-trust.test.ts`,
`test/installer-supervisor-manifest-trust.test.ts`,
`test/mcp-add-crash-consistency.test.ts`,
`test/mcp-destroy-lifecycle.test.ts`,
`test/mcp-policy-key-ownership.test.ts`,
`test/mcp-restart-policy-order.test.ts`,
`test/onboard-gateway-port-conflict-fast-fail.test.ts`,
`test/openshell-0.0.85-migration-review.test.ts`,
`test/openshell-channel-workflow.test.ts`, `test/pr-risk-plan.test.ts`,
`test/rebuild-credential-preflight.test.ts`, `test/runner.test.ts`,
`test/sandbox-provisioning.test.ts`,
`test/sandbox-rlimit-hooks.test.ts`,
`test/update-hermes-agent-script.test.ts`,
`tools/e2e/mcp-workflow-boundary.mts`,
`tools/e2e/openshell-gateway-auth-contract-workflow-boundary.mts`,
`tools/e2e/workflow-boundary.mts`

### Release ranges

| Range | Commits | State | Concerns |
|---|---|---|---|
| 0.0.101 → v0.0.102 | `8ddd98c3dff6` → `f48b05e31228` | published | 3 |
| v0.0.102 → v0.0.103 | `f48b05e31228` → `c825b1f8efac` | published | 2
|
| v0.0.103 → v0.0.104 | `c825b1f8efac` → `dd2b4e3bc068` | published | 1
|
| v0.0.104 → v0.0.105 | `dd2b4e3bc068` → `0f8fad23c471` | published | 3
|
| v0.0.105 → v0.0.106 | `0f8fad23c471` → `c4b500a7de64` | published | 5
|

### Concern dispositions

| Concern | Surface | Planned disposition | Failure prevented |
Remaining gate |
|---|---|---|---|---|
| `openshell-0.0.101..v0.0.102-network-1` | network | test | v0.0.102
reports network: ### Quick install * fix(e2e): separate Podman Machine
loopback listeners by @matthewgrossman in
NVIDIA/OpenShell#2622 * fix(pol... | none |
| `openshell-0.0.101..v0.0.102-runtime-topology-2` | runtime topology |
test | v0.0.102 reports runtime topology: ### Quick install * fix(e2e):
separate Podman Machine loopback listeners by @matthewgrossman in
NVIDIA/OpenShell#2622 ... | runtime-proof |
| `openshell-0.0.101..v0.0.102-security-identity-3` | security identity
| guard | v0.0.102 reports security identity: ### Quick install *
fix(e2e): separate Podman Machine loopback listeners by @matthewgrossman
in NVIDIA/OpenShell#2622... | none |
| `openshell-v0.0.102..v0.0.103-network-1` | network | test | v0.0.103
reports network: ### Quick install * fix(sandbox): acknowledge unchanged
policy revisions by @NaveCohenMonday in
NVIDIA/OpenShell#2557 * fix(gat... | none |
| `openshell-v0.0.102..v0.0.103-runtime-topology-2` | runtime topology |
test | v0.0.103 reports runtime topology: ### Quick install *
fix(sandbox): acknowledge unchanged policy revisions by @NaveCohenMonday
in NVIDIA/OpenShell#2557 ... | runtime-proof |
| `openshell-v0.0.103..v0.0.104-runtime-topology-1` | runtime topology |
test | v0.0.104 reports runtime topology: ### Quick install *
feat(build): add glibc-static supervisor libc variant by @EmilienM in
NVIDIA/OpenShell#2682 * fix(... | runtime-proof
|
| `openshell-v0.0.104..v0.0.105-compatibility-change-1` | compatibility
change | test | v0.0.105 reports compatibility change: ### Quick install
* fix(gator): separate review budget from approval gate by @johntmyers
in NVIDIA/OpenShell#2704 ... | none |
| `openshell-v0.0.104..v0.0.105-network-2` | network | test | v0.0.105
reports network: ### Quick install * fix(gator): separate review budget
from approval gate by @johntmyers in
NVIDIA/OpenShell#2704 * perf(superv... | none |
| `openshell-v0.0.104..v0.0.105-runtime-topology-3` | runtime topology |
test | v0.0.105 reports runtime topology: ### Quick install *
fix(gator): separate review budget from approval gate by @johntmyers in
NVIDIA/OpenShell#2704 * pe... | runtime-proof |
| `openshell-v0.0.105..v0.0.106-lifecycle-state-1` | lifecycle state |
test | v0.0.106 reports lifecycle state: ### Quick install *
ci(cargo-deny): add dependency audit with cargo-deny by @Ygnas in
NVIDIA/OpenShell#2677 * feat(sdk/... |
runtime-proof |
| `openshell-v0.0.105..v0.0.106-code-impact-configuration-1` | mapped
configuration | test | The exact-ref diff reports configuration changes
in crates/openshell-cli/src/commands/common.rs,
crates/openshell-cli/src/main.rs, crates/openshell-cli/src/run.rs.
Mapped NemoCl... | runtime-proof |
| `openshell-v0.0.105..v0.0.106-code-impact-contract-or-schema-2` |
mapped contract or schema | test | The exact-ref diff reports contract
or schema changes in crates/openshell-core/src/middleware.rs,
crates/openshell-core/src/provider_credentials.rs,
crates/openshell-driver-kube... | runtime-proof |
| `openshell-v0.0.105..v0.0.106-code-impact-security-3` | mapped
security | test | The exact-ref diff reports security changes in
crates/openshell-bootstrap/src/build_windows.rs,
crates/openshell-cli/src/commands/common.rs,
crates/openshell-cli/src/main.rs. Ma... | runtime-proof |
| `openshell-v0.0.105..v0.0.106-code-impact-test-4` | mapped test | test
| The exact-ref diff reports test changes in
crates/openshell-cli/tests/ensure_providers_integration.rs,
crates/openshell-cli/tests/mtls_integration.rs,
crates/openshell-cli/tests... | runtime-proof |

### Immutable artifacts

| Artifact | SHA-256 |
|---|---|
| openshell-aarch64-apple-darwin.tar.gz | `969493205e3d3462…` |
| openshell-aarch64-unknown-linux-musl.tar.gz | `ce981904ae8febd9…` |
| openshell-checksums-sha256.txt | `7421aaf9d5550dc1…` |
| openshell-gateway-aarch64-apple-darwin.tar.gz | `de8f90db9dd0d3b4…` |
| openshell-gateway-aarch64-unknown-linux-gnu.tar.gz |
`22b7781249e34870…` |
| openshell-gateway-checksums-sha256.txt | `26e4345449e02475…` |
| openshell-gateway-x86_64-unknown-linux-gnu.tar.gz |
`b7760cb752a4363c…` |
|
openshell-gateway-x86_64-unknown-linux-gnu.tar.gz::executable:openshell-gateway
| `e6cde8a54568aa19…` |
| openshell-sandbox-aarch64-unknown-linux-gnu.tar.gz |
`5e5d758d53c6abc6…` |
|
openshell-sandbox-aarch64-unknown-linux-gnu.tar.gz::executable:openshell-sandbox
| `0031c6b257a23ecc…` |
| openshell-sandbox-checksums-sha256.txt | `88bc98ffdc915fb7…` |
| openshell-sandbox-x86_64-unknown-linux-gnu.tar.gz |
`559b8aaad3a8eeab…` |
|
openshell-sandbox-x86_64-unknown-linux-gnu.tar.gz::executable:openshell-sandbox
| `019301ec8618abbe…` |
| openshell-x86_64-unknown-linux-musl.tar.gz | `d1a885a91b3e5aaa…` |
| openshell-x86_64-unknown-linux-musl.tar.gz::executable:openshell |
`98ecf95113fea999…` |
| openshell.rb | `f0f86519e227b3b3…` |
| openshell-source:crates/openshell-core/src/google_cloud.rs |
`2583a04a0557f069…` |
| openshell-source:crates/openshell-core/src/provider_credentials.rs |
`7e8e05efcb725807…` |
| openshell-source:crates/openshell-core/src/secrets.rs |
`b122b4a5af5a5823…` |
| ghcr.io/nvidia/openshell/supervisor:index | `722f44669722961b…` |

### Validation receipt

| Gate | Current result |
|---|---|
| targeted | Passed: 609 assertions with 1 intentional skip across the
migration/runtime suites, 290/290 E2E registry/workflow overlap
assertions, and 73/73 onboarding-preflight overlap assertions on
`cc9167892`. After the final main reconciliation, 32/32
conflict-sensitive gateway/TLS assertions and `npm run validate:pr`
passed on latest PR commit `d1990537d`. |
| brev-integration-fresh-onboarding | Passed on Brev before
reconciliation; latest PR commit GitHub CI passed |
| brev-integration-existing-upgrade | Passed on Brev before
reconciliation; latest PR commit GitHub CI passed |
| brev-integration-recovery-rollback | Passed on Brev before
reconciliation; latest PR commit GitHub CI passed |
| full-e2e | Exact inference run
[32199961381](https://github.com/NVIDIA/NemoClaw/actions/runs/32199961381)
on PR commit `cc9167892` with trusted base/workflow `a9fc8045d` passed
5/7 cases. TC-INF-12 and TC-INF-13 both completed cold onboarding,
plan/apply, provider attachment, token refresh, and post-attach
inference; OpenShell 0.0.106 then failed to project `E2E_ACCESS_TOKEN` /
`ENTRA_ACCESS_TOKEN` into 19 fresh sandbox execs over 35 seconds.
Protected managed-image runtime was not launched because inference is
its prerequisite. This is a repeated upstream runtime-credential
projection blocker, not a waived gate. |
<!-- List concrete changes. If this adds an abstraction, configuration,
fallback, migration, or compatibility path, name its current requirement
and consumer, explain why a direct change is insufficient, and identify
the test that protects it. -->

## 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 one tests line and one docs line. Check other lines when
applicable. Add every requested justification or approval reference. -->
- [x] Tests added or updated for changed behavior
- [ ] Existing tests cover changed behavior — justification:
- [ ] 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)
- [x] Sensitive-path review completed or maintainer-approved waiver
recorded — reviewer/approval link/justification: Independent
exact-commit review passed for the OpenShell 0.0.106 migration and
stacked E2E selector.
- [ ] Non-success, skipped, or missing CI check accepted by maintainer —
check name, approval link, and follow-up issue:

## Documentation Writer Review
<!-- Required for code and documentation changes after the changes and
applicable validation are complete. Keep one review checkbox and one
instance of each visible or hidden field. For Evidence, list changed
documentation paths. For documentation-only changes, also state that the
writing rules and documentation style were reviewed. For other results,
explain why no documentation change is needed or why the review is
blocked. For Agent, use a consistent product and surface name, such as
Codex Desktop, Codex CLI, Claude Code, or Cursor. After committing all
review changes, put `git rev-parse --short HEAD` and `git rev-parse
--short HEAD:AGENTS.md` in the hidden metadata below. Rerun the review
and refresh that metadata after any new commit. This receipt is advisory
during the data-collection pilot. -->
- [x] Documentation writer subagent reviewed the completed changes
- Result: `docs-updated`
- Evidence: `docs/deployment/set-up-mcp-bridge.mdx`,
`docs/manage-sandboxes/add-mcp-server.mdx`,
`docs/manage-sandboxes/manage-mcp-servers.mdx`,
`docs/reference/commands.mdx`, and
`docs/reference/troubleshoot-mcp-servers.mdx`
- Agent: Codex Desktop
<!-- docs-review-head-sha: e3a53c9 -->
<!-- docs-review-agents-blob-sha:
513518c -->
## DGX Station Hardware Evidence
<!-- Required only when scripts/prepare-dgx-station-host.sh changes.
Maintainers must review the linked evidence before approving or merging.
This is human-reviewed evidence, not authenticated hardware provenance.
Exceptional bypasses use existing repository governance and must be
documented on the PR. -->
- [ ] Tested on DGX Station
- Tested commit:
- Station profile/scenario:
- Result:
- Supporting evidence:

## Verification
<!-- Check each applicable item only when supported by the requested
evidence. Run targeted tests once per relevant change set and rerun
after later edits or hook autofixes that can affect the tested behavior.
Do not rerun hook-covered checks. -->
- [x] PR description includes a `Signed-off-by:` line and every commit
appears as `Verified` in GitHub
- [x] Normal `pre-commit`, `commit-msg`, and `pre-push` hooks passed, or
`npm run validate:pr` passed after refreshing `origin/main` when hooks
were skipped or unavailable
- [x] Targeted behavior tests pass for the current change set, or tests
are marked not applicable above — 609 assertions passed with 1
intentional skip across the migration/runtime suites, followed by
290/290 E2E registry/workflow overlap assertions and 73/73
onboarding-preflight overlap assertions on `cc9167892`; 32/32
conflict-sensitive gateway/TLS assertions and `npm run validate:pr` then
passed after the final main reconciliation on latest PR commit
`d1990537d`.
- [x] Applicable broad gate passed — GitHub reports no required checks
for this branch. Optional checks do not gate review unless they expose a
PR defect.
- [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)
- [ ] 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: Prekshi Vyas <prekshiv@nvidia.com>

<!-- patch-walker-status:start -->
## NemoPatch current-head status

- Status: **blocked**
- Latest PR commit: `d1990537d9b9c8579c3197cba33faddaeb9aa101`
- Checked: 2026-08-19T02:46:48Z

- Reconciled with `main` at base commit `ee6762b99`; 32/32
conflict-sensitive gateway/TLS assertions, local PR validation, and all
45 applicable current-commit GitHub checks pass. The two advisor
services failed analysis without findings. Exact inference on
`cc9167892` with trusted base/workflow `a9fc8045d` passed 5/7 and
repeatedly isolated an OpenShell 0.0.106 runtime-credential projection
failure after successful provider attachment and refresh. Protected
managed-image E2E remains gated; maintainer/upstream resolution is
required.
<!-- patch-walker-status:end -->



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

- **New Features**
- Added support for OpenShell `0.0.106`, including updated CLI, gateway,
sandbox, supervisor, and credential-boundary assets.
- Added stronger installation integrity checks for reviewed binaries and
release artifacts.
- Added TLS server-name verification across Docker, Podman, and VM
environments.

- **Bug Fixes**
- Improved MCP bridge destination validation before connections are
established.
  - Added supervisor TLS-name sanitization protections.

- **Documentation**
- Updated setup, compatibility, security, installation, and
troubleshooting guidance for OpenShell `0.0.106`.
- Added guidance for resolving Docker credential-store failures in
headless environments.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

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

Labels

test:e2e Requires end-to-end coverage

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug] Supervisor does not acknowledge newer sandbox policy revisions with an unchanged policy hash

3 participants