Skip to content

test(e2e): restore reviewed legacy gateway fixture - #9398

Merged
cv merged 3 commits into
mainfrom
fix/gateway-guard-legacy-fixture-9364
Aug 18, 2026
Merged

test(e2e): restore reviewed legacy gateway fixture#9398
cv merged 3 commits into
mainfrom
fix/gateway-guard-legacy-fixture-9364

Conversation

@ericksoa

@ericksoa ericksoa commented Aug 18, 2026

Copy link
Copy Markdown
Contributor

Summary

The gateway guard recovery E2E previously modeled a legacy runtime by replacing the managed image entrypoint with raw sleep infinity, which the production supervisor allowlist correctly rejects. This change makes the fixture use the reviewed pre-0.0.99 OpenShell supervisor contract while leaving the production guard unchanged.

Related Issue

Fixes #9364

Changes

  • Adapt the identity-pinned managed container inspect record only when it has the exact managed-image entrypoint and command, then recreate it under the reviewed pre-0.0.99 OpenShell supervisor contract for the legacy recovery fixture.
  • Keep docker-gpu-patch-clone.ts unchanged so arbitrary entrypoints, commands, and supervisor shapes remain rejected. A direct production change would weaken the contract that this E2E is intended to protect.
  • Add fixture tests for the accepted legacy contract, the exact source container identity and managed process contract, and compatibility with the production clone validator. The existing production denial suite continues to protect rejection 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:
  • Tests 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: Exact-head PR Review Advisor run 32095060441 passed both lanes with merge_as_is; CodeRabbit completed with no actionable comments.
  • Non-success, skipped, or missing CI check accepted by maintainer — check name, approval link, and follow-up issue:

DGX Station Hardware Evidence

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

Verification

  • PR description includes a Signed-off-by: line and every commit appears as Verified in GitHub
  • Normal pre-commit, commit-msg, and pre-push hooks passed, or npm run validate:pr passed after refreshing origin/main when hooks were skipped or unavailable
  • Targeted behavior tests pass for the current change set, or tests are marked not applicable above — command/result or justification: npx vitest run --project e2e-support --project cli test/e2e/support/gateway-guard-legacy-keepalive-fixture.test.ts src/lib/onboard/docker-gpu-patch-validation.test.ts (28 passed); npm run test:e2e-phases:check (131 tests across 86 files).
  • Applicable broad gate passed — npm test for broad runtime/test-harness changes; npm run check for repo-wide validation/coverage changes — command/result: Not applicable; this is a narrow E2E fixture correction with focused behavior and production-denial coverage.
  • Quality Gates section completed with required justifications or waivers
  • No secrets, API keys, or credentials committed
  • npm run docs builds without warnings (doc changes only)
  • Doc pages follow the style guide (doc changes only)
  • New doc pages include SPDX header and frontmatter (new pages only)

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

Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
@ericksoa ericksoa self-assigned this Aug 18, 2026
@coderabbitai

coderabbitai Bot commented Aug 18, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: a38b468d-f9b6-4342-9409-3993105ecf3c

📥 Commits

Reviewing files that changed from the base of the PR and between 3d20483 and d352abb.

📒 Files selected for processing (1)
  • test/e2e/support/gateway-guard-legacy-keepalive-fixture.test.ts
🚧 Files skipped from review as they are similar to previous changes (1)
  • test/e2e/support/gateway-guard-legacy-keepalive-fixture.test.ts

Included review availability: Your plan includes up to 12 reviews per rolling hour; 0 remain after this review.


📝 Walkthrough

Walkthrough

The legacy keepalive fixture now validates managed Docker inspect output, rewrites approved containers to the legacy supervisor contract, injects Docker capture during recreation, and tests valid, invalid, identity-mismatch, and GPU startup-command cases.

Changes

Legacy keepalive fixture

Layer / File(s) Summary
Inspect contract and rewriter
test/e2e/live/gateway-guard-legacy-keepalive-fixture.ts
Defines managed-image and legacy supervisor contracts. Validates Docker inspect JSON, container identity, entrypoint, and command before rewriting the configuration.
Capture integration and recreation
test/e2e/live/gateway-guard-legacy-keepalive-fixture.ts
Adds injectable Docker capture. Rewrites only the expected container inspect request and passes the wrapped capture into recreation.
Legacy contract tests
test/e2e/support/gateway-guard-legacy-keepalive-fixture.test.ts
Tests valid rewritten configuration, rejected entrypoints, container identity checks, injected capture, recreation arguments, and GPU clone arguments.

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

Merge Risk: ⚪ Minimal · up to d352a

The change is localized to the legacy gateway recovery fixture and its tests; no actionable merge-blocking risk remains after normal checks and review.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed The fixture restores the reviewed legacy contract without changing the production allowlist and adds tests for identity and command validation [#9364].
Out of Scope Changes check ✅ Passed The changes are limited to the legacy fixture and its tests, which directly support the linked issue objectives [#9364].
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly identifies the restoration of the reviewed legacy gateway fixture, which matches the primary changes.
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/gateway-guard-legacy-fixture-9364

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

@github-code-quality

github-code-quality Bot commented Aug 18, 2026

Copy link
Copy Markdown
Contributor

Code Coverage Overview

Languages: TypeScript

TypeScript / code-coverage/plugin

The overall coverage in commit 9012adf in the fix/gateway-guard-le... branch remains at 96%, unchanged from commit b09eece in the main branch.

TypeScript / code-coverage/cli

The overall coverage in commit 9012adf in the fix/gateway-guard-le... branch remains at 83%, unchanged from commit c4c987d in the main branch.

Show a code coverage summary of the most impacted files.
File main c4c987d fix/gateway-guard-le... 9012adf +/-
src/lib/cua/bounded-file.ts 94% 84% -10%
src/lib/cua/run...ime-manifest.ts 91% 84% -7%
src/lib/state/o...d-checkpoint.ts 91% 87% -4%
src/lib/trace.ts 94% 90% -4%
src/lib/onboard...press-resume.ts 79% 82% +3%
src/lib/onboard...-patch-clone.ts 89% 92% +3%
src/lib/onboard...der/snapshot.ts 75% 83% +8%
src/lib/shields...ate-mutation.ts 70% 78% +8%
src/lib/securit...ntial-filter.ts 84% 96% +12%
src/lib/inferen...ntext-window.ts 32% 50% +18%

Updated August 18, 2026 04:43 UTC

@github-actions

github-actions Bot commented Aug 18, 2026

Copy link
Copy Markdown
Contributor

PR Review Advisor — No blocking findings reported

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

Model lanes

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

Advisory only. These are normalized differences from the primary terminology receipt.

  • legacy supervisor contract at test/e2e/support/gateway-guard-legacy-keepalive-fixture.test.ts:64: primary classified it as justified; the second opinion classified it as define.
  • managed-image process contract at test/e2e/live/gateway-guard-legacy-keepalive-fixture.ts:93: primary classified it as justified; the second opinion classified it as define.
  • clone contract at test/e2e/support/gateway-guard-legacy-keepalive-fixture.test.ts:127: selected only by the second-opinion lane as define.
2 additional E2E selections from the second opinion

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

  • managed-image-protected-runtime: The completed second-opinion lane identified E2E coverage that the primary lane omitted.
  • managed-image-multiarch-startup: The completed second-opinion lane identified E2E coverage that the primary lane omitted.

Second-opinion terminology and E2E selections are advisory. Live E2E does not run automatically for pull requests.

3 semantic terminology decisions

Terminology decisions are advisory. They affect the assessment only when a separate finding identifies concrete semantic impact.

  • established — legacy keepalive at test/e2e/live/gateway-guard-legacy-keepalive-fixture.ts:68: Retain the established term.
  • justified — managed-image process contract at test/e2e/live/gateway-guard-legacy-keepalive-fixture.ts:93: Retain this term for the exact validated process shape.
  • justified — legacy supervisor contract at test/e2e/support/gateway-guard-legacy-keepalive-fixture.test.ts:64: Retain this term for the reviewed replacement process shape.

E2E guidance

Advisory only. A maintainer can dispatch the default E2E suite for the commit under review.

Recommended E2E: None

Manual-only E2E: cloud-onboard, security-posture, cloud-inference
The manual PR workflow does not run these selectors for the commit under review. Run them from reviewed code on main.

1 optional E2E recommendation
  • gateway-guard-recovery

Workflow run details

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

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

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

Reviewed exact commit d352abb2b4302755db49f3cc08ad1eac98695d55.

Security review:

  1. Secrets and credentials — PASS: the fixture adds no credential material.
  2. Input validation — PASS: rewriting requires the exact container identity, entrypoint, and command.
  3. Authentication and authorization — PASS: production authorization is unchanged.
  4. Dependencies and supply chain — PASS: no dependency changes.
  5. Error handling and logging — PASS: mismatched fixture state is rejected.
  6. Cryptography — PASS: no cryptographic changes.
  7. Policy and network isolation — PASS: the production clone validator remains unchanged.
  8. Testing and regression safety — PASS: identity, entrypoint, accepted command, and rejected command paths are covered; focused fixture assertions passed locally.
  9. System security — PASS: the compatibility rewrite is limited to the injected legacy E2E fixture.

Full CI is still a separate merge gate.

@cv
cv merged commit 12e5bee into main Aug 18, 2026
68 of 72 checks passed
@cv
cv deleted the fix/gateway-guard-legacy-fixture-9364 branch August 18, 2026 04:47
@github-actions github-actions Bot added the v0.0.110 Release target label Aug 18, 2026
prekshivyas pushed a commit that referenced this pull request Aug 18, 2026
<!-- markdownlint-disable MD041 -->
## Summary

Legacy gateway recovery now repeats the OpenShell readiness check and
managed supervisor health check after the final replacement container
restart. NemoClaw starts the primary dashboard/API host forward only
after both checks pass. Recovery stops if Docker cannot stop or start
the replacement container, or if either check fails.

### E2E claim

- Root-cause key: `gateway recovery / legacy supervisor relaunch final
handoff / post-finalize OpenShell readiness not re-established before
primary forward start`
- Source workflow: [run
`32089878527`](https://github.com/NVIDIA/NemoClaw/actions/runs/32089878527),
attempt `1`
- Failed job: `Gateway: restores the guard chain after recreation /
NVIDIA inference API key` ([job
`95570032040`](https://github.com/NVIDIA/NemoClaw/actions/runs/32089878527/job/95570032040))
- Failure signature: `Probe failed: OpenClaw gateway is running in
'e2e-2701', but the primary dashboard/API host forward could not be
re-established.`
- Claim scope: legacy managed-supervisor recovery after the final
replacement container restart.

## Related Issue

Follow-up to #9364. Issue #9364 defines the legacy compatibility
acceptance criterion. PR #9398 corrected its legacy fixture, which let
the E2E test reach this later recovery failure. This change preserves
the production supervisor allowlist.

## Changes

- Run the shared final Docker handoff function in the legacy `sleep
infinity` recovery regression test.
- Repeat the pinned managed supervisor health check after Docker
restarts the replacement container.
- Repeat the OpenShell readiness check before NemoClaw starts the
primary dashboard/API host forward.
- Stop recovery and report the failed layer when final Docker or
readiness verification fails.
- Keep prerequisite recovery failures separate from forward failures and
redact their diagnostics.
- Preserve the production supervisor allowlist.

## Type of Change

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

## Quality Gates

- [x] Tests added or updated for changed behavior
- [ ] Existing tests cover changed behavior — justification:
- [ ] Tests not applicable — justification:
- [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 security
rubric review of commit under review
`75c124bb66eadd9706da7fcef13581f93e0773e2` returned PASS with no
findings. Live E2E for this commit remains required.
- [ ] Non-success, skipped, or missing CI check accepted by maintainer —
check name, approval link, and follow-up issue:

## DGX Station Hardware Evidence

- [ ] Tested on DGX Station
- Tested commit: Not applicable
- Station profile/scenario: Not applicable
- Result: Not applicable
- Supporting evidence: Not applicable

## Verification

- [x] PR description includes a `Signed-off-by:` line and every commit
appears as `Verified` in GitHub
- [x] Normal `pre-commit`, `commit-msg`, and `pre-push` hooks passed, or
`npm run validate:pr` passed after refreshing `origin/main` when hooks
were skipped or unavailable
- [x] Targeted behavior tests pass for the current change set, or tests
are marked not applicable above — command/result or justification: `npm
exec -- vitest run --project integration
test/process-recovery-supervisor-relaunch.test.ts` (35 passed); `npm
exec -- vitest run --project cli
src/lib/actions/sandbox/connect-flow.test.ts` (40 passed); `npm exec --
vitest run --project e2e-support
test/e2e/support/launch-agent-turn.test.ts` (19 passed, 24
platform-skipped); `npm run typecheck:cli` passed; `npm run
checks:repository` passed.
- [ ] Applicable broad gate passed — `npm test` for broad
runtime/test-harness changes; `npm run check` for repo-wide
validation/coverage changes — command/result: Not applicable to this
focused recovery change; PR CI will run for latest PR commit
`75c124bb66eadd9706da7fcef13581f93e0773e2`.
- [x] Quality Gates section completed with required justifications or
waivers
- [x] No secrets, API keys, or credentials committed
- [ ] `npm run docs` builds without warnings (doc changes only)
- [ ] Doc pages follow the [style
guide](https://github.com/NVIDIA/NemoClaw/blob/main/docs/CONTRIBUTING.md)
(doc changes only)
- [ ] New doc pages include SPDX header and frontmatter (new pages only)

Documentation impact: No public documentation change. Existing recovery
documentation already describes the corrected contract.

---
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 recovery failure reporting with clearer, sanitized
details.
- Prevented irrelevant manual-forward guidance when recovery fails
before forwarding.
- Preserved the most direct recovery error when multiple failure layers
are reported.
- Improved supervisor relaunch recovery with readiness checks, rollback
handling, container handoff validation, and cleanup warnings.
- Correctly reports container identity changes and managed health
failures as recovery failures.

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

---------

Signed-off-by: Julie Yaunches <jyaunches@nvidia.com>
ericksoa added a commit that referenced this pull request Aug 18, 2026
<!-- markdownlint-disable MD041 -->
## Summary

The gateway guard recovery E2E previously modeled a legacy runtime by
replacing the managed image entrypoint with raw `sleep infinity`, which
the production supervisor allowlist correctly rejects. This change makes
the fixture use the reviewed pre-0.0.99 OpenShell supervisor contract
while leaving the production guard unchanged.

## Related Issue

Fixes #9364

## Changes

- Adapt the identity-pinned managed container inspect record only when
it has the exact managed-image entrypoint and command, then recreate it
under the reviewed pre-0.0.99 OpenShell supervisor contract for the
legacy recovery fixture.
- Keep `docker-gpu-patch-clone.ts` unchanged so arbitrary entrypoints,
commands, and supervisor shapes remain rejected. A direct production
change would weaken the contract that this E2E is intended to protect.
- Add fixture tests for the accepted legacy contract, the exact source
container identity and managed process contract, and compatibility with
the production clone validator. The existing production denial suite
continues to protect rejection behavior.

## Type of Change

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

## Quality Gates

- [x] Tests added or updated for changed behavior
- [ ] Existing tests cover changed behavior — justification:
- [ ] Tests not applicable — justification:
- [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: Exact-head PR Review
Advisor run 32095060441 passed both lanes with `merge_as_is`; CodeRabbit
completed with no actionable comments.
- [ ] Non-success, skipped, or missing CI check accepted by maintainer —
check name, approval link, and follow-up issue:

## DGX Station Hardware Evidence

- [ ] Tested on DGX Station
- Tested commit: Not applicable
- Station profile/scenario: Not applicable
- Result: Not applicable
- Supporting evidence: Not applicable

## Verification

- [x] PR description includes a `Signed-off-by:` line and every commit
appears as `Verified` in GitHub
- [x] Normal `pre-commit`, `commit-msg`, and `pre-push` hooks passed, or
`npm run validate:pr` passed after refreshing `origin/main` when hooks
were skipped or unavailable
- [x] Targeted behavior tests pass for the current change set, or tests
are marked not applicable above — command/result or justification: `npx
vitest run --project e2e-support --project cli
test/e2e/support/gateway-guard-legacy-keepalive-fixture.test.ts
src/lib/onboard/docker-gpu-patch-validation.test.ts` (28 passed); `npm
run test:e2e-phases:check` (131 tests across 86 files).
- [ ] Applicable broad gate passed — `npm test` for broad
runtime/test-harness changes; `npm run check` for repo-wide
validation/coverage changes — command/result: Not applicable; this is a
narrow E2E fixture correction with focused behavior and
production-denial coverage.
- [x] Quality Gates section completed with required justifications or
waivers
- [x] No secrets, API keys, or credentials committed
- [ ] `npm run docs` builds without warnings (doc changes only)
- [ ] Doc pages follow the [style
guide](https://github.com/NVIDIA/NemoClaw/blob/main/docs/CONTRIBUTING.md)
(doc changes only)
- [ ] New doc pages include SPDX header and frontmatter (new pages only)

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

---------

Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Co-authored-by: Carlos Villela <cvillela@nvidia.com>
ericksoa pushed a commit that referenced this pull request Aug 18, 2026
<!-- markdownlint-disable MD041 -->

Legacy gateway recovery now repeats the OpenShell readiness check and
managed supervisor health check after the final replacement container
restart. NemoClaw starts the primary dashboard/API host forward only
after both checks pass. Recovery stops if Docker cannot stop or start
the replacement container, or if either check fails.

- Root-cause key: `gateway recovery / legacy supervisor relaunch final
handoff / post-finalize OpenShell readiness not re-established before
primary forward start`
- Source workflow: [run
`32089878527`](https://github.com/NVIDIA/NemoClaw/actions/runs/32089878527),
attempt `1`
- Failed job: `Gateway: restores the guard chain after recreation /
NVIDIA inference API key` ([job
`95570032040`](https://github.com/NVIDIA/NemoClaw/actions/runs/32089878527/job/95570032040))
- Failure signature: `Probe failed: OpenClaw gateway is running in
'e2e-2701', but the primary dashboard/API host forward could not be
re-established.`
- Claim scope: legacy managed-supervisor recovery after the final
replacement container restart.

Follow-up to #9364. Issue #9364 defines the legacy compatibility
acceptance criterion. PR #9398 corrected its legacy fixture, which let
the E2E test reach this later recovery failure. This change preserves
the production supervisor allowlist.

- Run the shared final Docker handoff function in the legacy `sleep
infinity` recovery regression test.
- Repeat the pinned managed supervisor health check after Docker
restarts the replacement container.
- Repeat the OpenShell readiness check before NemoClaw starts the
primary dashboard/API host forward.
- Stop recovery and report the failed layer when final Docker or
readiness verification fails.
- Keep prerequisite recovery failures separate from forward failures and
redact their diagnostics.
- Preserve the production supervisor allowlist.

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

- [x] Tests added or updated for changed behavior
- [ ] Existing tests cover changed behavior — justification:
- [ ] Tests 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 security
rubric review of commit under review
`75c124bb66eadd9706da7fcef13581f93e0773e2` returned PASS with no
findings. Live E2E for this commit remains required.
- [ ] Non-success, skipped, or missing CI check accepted by maintainer —
check name, approval link, and follow-up issue:

- [ ] Tested on DGX Station
- Tested commit: Not applicable
- Station profile/scenario: Not applicable
- Result: Not applicable
- Supporting evidence: Not applicable

- [x] PR description includes a `Signed-off-by:` line and every commit
appears as `Verified` in GitHub
- [x] Normal `pre-commit`, `commit-msg`, and `pre-push` hooks passed, or
`npm run validate:pr` passed after refreshing `origin/main` when hooks
were skipped or unavailable
- [x] Targeted behavior tests pass for the current change set, or tests
are marked not applicable above — command/result or justification: `npm
exec -- vitest run --project integration
test/process-recovery-supervisor-relaunch.test.ts` (35 passed); `npm
exec -- vitest run --project cli
src/lib/actions/sandbox/connect-flow.test.ts` (40 passed); `npm exec --
vitest run --project e2e-support
test/e2e/support/launch-agent-turn.test.ts` (19 passed, 24
platform-skipped); `npm run typecheck:cli` passed; `npm run
checks:repository` passed.
- [ ] Applicable broad gate passed — `npm test` for broad
runtime/test-harness changes; `npm run check` for repo-wide
validation/coverage changes — command/result: Not applicable to this
focused recovery change; PR CI will run for latest PR commit
`75c124bb66eadd9706da7fcef13581f93e0773e2`.
- [x] Quality Gates section completed with required justifications or
waivers
- [x] No secrets, API keys, or credentials committed
- [ ] `npm run docs` builds without warnings (doc changes only)
- [ ] Doc pages follow the [style
guide](https://github.com/NVIDIA/NemoClaw/blob/main/docs/CONTRIBUTING.md)
(doc changes only)
- [ ] New doc pages include SPDX header and frontmatter (new pages only)

Documentation impact: No public documentation change. Existing recovery
documentation already describes the corrected contract.

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

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

- **Bug Fixes**
- Improved sandbox recovery failure reporting with clearer, sanitized
details.
- Prevented irrelevant manual-forward guidance when recovery fails
before forwarding.
- Preserved the most direct recovery error when multiple failure layers
are reported.
- Improved supervisor relaunch recovery with readiness checks, rollback
handling, container handoff validation, and cleanup warnings.
- Correctly reports container identity changes and managed health
failures as recovery failures.

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

---------

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

Labels

v0.0.110 Release target

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Gateway guard E2E uses an invalid legacy keepalive fixture

3 participants