Skip to content

perf(onboard): use deadlines for gateway health waits - #6542

Merged
cv merged 3 commits into
mainfrom
codex/3768-gateway-health-deadlines
Jul 9, 2026
Merged

perf(onboard): use deadlines for gateway health waits#6542
cv merged 3 commits into
mainfrom
codex/3768-gateway-health-deadlines

Conversation

@apurvvkumaria

@apurvvkumaria apurvvkumaria commented Jul 9, 2026

Copy link
Copy Markdown
Collaborator

Summary

This replacement carries Ho Lim's work from #6489 onto current main and preserves Ho as a commit co-author. It replaces fixed attempt caps with bounded gateway-health deadlines while retaining deterministic, configured immediate probes when the poll interval is zero.

Related Issue

Refs #3768. This is a partial mitigation for the gateway-health and package-managed Docker-driver paths; it intentionally leaves the broader readiness-loop issue open.

Changes

  • Derive positive-interval gateway health waits from one deadline budget.
  • Preserve the configured number of bounded immediate probes for a zero interval.
  • Keep deadline-aware terminal errors intact through the onboarding failure path.
  • Share a deterministic virtual clock and add positive, zero-interval, rejection, and slow-probe coverage.

Type of Change

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

Quality Gates

  • Tests added or updated for changed behavior
  • Existing tests cover changed behavior — justification:
  • Tests not applicable — justification:
  • Docs updated for user-facing behavior changes
  • Docs not applicable — justification: the change preserves the existing readiness contract and only corrects internal polling semantics and terminal diagnostics.
  • 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 exact fixed tree was reviewed on perf(onboard): use deadlines for gateway health waits #6489 with no credential, authorization, SSRF, sandbox-escape, or dependency blocker; this replacement is tree-equivalent on current main.
  • Non-success, skipped, or missing CI check accepted by maintainer — check name, approval link, and follow-up issue:

Verification

  • PR description includes the DCO sign-off declaration and every commit appears as Verified in GitHub
  • Normal pre-commit, commit-msg, and pre-push hooks passed, or npm run check:diff passed when hooks were skipped or unavailable
  • Targeted behavior tests pass for the current change set, or tests are marked not applicable above — 24/24 focused gateway tests and 77/77 targeted onboarding/integration tests passed.
  • Applicable broad gate passed — npm test for broad runtime/test-harness changes; npm run check for repo-wide validation/coverage changes — command/result:
  • 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: Apurv Kumaria akumaria@nvidia.com

Summary by CodeRabbit

  • New Features
    • Gateway health checks now use deadline/budget-based timing, including an immediate-probe mode when the poll interval is zero.
    • Health-wait timing can be driven by an injected clock source for deterministic behavior.
  • Bug Fixes
    • Gateway startup failures now preserve the original thrown error when available, with improved timeout/deadline messaging.
  • Tests
    • Added a virtual clock helper and updated gateway health/startup tests to use deterministic time, including new zero-interval and deadline-expiration coverage.

Move gateway readiness polling to bounded deadline semantics.

Preserve the configured number of immediate probes when the interval is zero.

Co-authored-by: Ho Lim <subhoya@gmail.com>
Signed-off-by: Apurv Kumaria <akumaria@nvidia.com>
@apurvvkumaria apurvvkumaria self-assigned this Jul 9, 2026
@coderabbitai

coderabbitai Bot commented Jul 9, 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: c7d5835d-d99b-4994-900d-6ed932486195

📥 Commits

Reviewing files that changed from the base of the PR and between 20524a6 and d555879.

📒 Files selected for processing (4)
  • src/lib/onboard.ts
  • src/lib/onboard/docker-driver-gateway-service.test.ts
  • src/lib/onboard/gateway-start-failure.test.ts
  • src/lib/onboard/gateway-start-failure.ts
🚧 Files skipped from review as they are similar to previous changes (2)
  • src/lib/onboard.ts
  • src/lib/onboard/docker-driver-gateway-service.test.ts

📝 Walkthrough

Walkthrough

The PR changes gateway health polling to use deadline/budget-based wait options with an injectable clock. It adds helper functions, updates startup wiring and error messages, and refreshes tests with a virtual clock and new deadline/zero-interval cases.

Changes

Gateway health wait deadline refactor

Layer / File(s) Summary
Wait budget/limit helpers and createGatewayHealthWaitOptions
src/lib/onboard/gateway-health-wait.ts
Adds now callback support, budget/limit formatting helpers, and createGatewayHealthWaitOptions that returns WaitUntilOptions using either maxAttempts or deadlineMs.
waitForGatewayHealth uses deadline options
src/lib/onboard/gateway-health-wait.ts
Defaults now to Date.now, builds wait options through the new helper, and gates polling on waitOptions !== null.
Virtual clock helper and wait tests
src/lib/onboard/__test-helpers__/virtual-clock.ts, src/lib/onboard/gateway-health-wait.test.ts
Adds createVirtualClock and updates tests for deadline continuation, zero-interval probes, expired deadlines, rejection propagation, and budget clamping.
Docker driver gateway service wiring
src/lib/onboard/docker-driver-gateway-service.ts
Adds now to package-managed gateway options, routes polling setup through createGatewayHealthWaitOptions, and updates the unhealthy timeout error text.
Docker driver gateway service tests
src/lib/onboard/docker-driver-gateway-service.test.ts
Switches tests to the virtual clock, adds a zero-interval immediate-probe case, and updates the health-deadline failure assertion.
Gateway start failure normalization
src/lib/onboard/gateway-start-failure.ts, src/lib/onboard/gateway-start-failure.test.ts
Adds normalizeGatewayStartError and tests that it preserves existing Error instances and stringifies non-Error thrown values.
onboard.ts startup error handling
src/lib/onboard.ts
Changes the startup timeout message and reworks the retry catch path to preserve and rethrow the caught error.

Estimated code review effort: 4 (Complex) | ~60 minutes

Possibly related PRs

  • NVIDIA/NemoClaw#5119: Both PRs touch the gateway-start failure path and the handling of gateway-start errors around Docker-unreachable startup behavior.

Suggested labels: area: performance, refactor

Suggested reviewers: kjw3

🚥 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
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main change: switching gateway health waits to deadline-based semantics.
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.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/3768-gateway-health-deadlines

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

Preserve deadline polling together with the newly merged abortable readiness-probe overlap.

Co-authored-by: Ho Lim <subhoya@gmail.com>
Signed-off-by: Apurv Kumaria <akumaria@nvidia.com>
@github-code-quality

github-code-quality Bot commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

Code Coverage Overview

Languages: TypeScript

TypeScript / code-coverage/plugin

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

TypeScript / code-coverage/cli

The overall coverage in the codex/3768-gateway-h... branch remains at 76%, unchanged from the main branch.

Show a code coverage summary of the most impacted files.
File main 2b2c9f6 codex/3768-gateway-h... d555879 +/-
src/lib/securit...ntial-filter.ts 99% 87% -12%
src/lib/actions...-add-restart.ts 19% 14% -5%
src/lib/inferen...board-probes.ts 89% 87% -2%
src/lib/onboard...tp-readiness.ts 88% 94% +6%
src/lib/actions...lution-probe.ts 88% 94% +6%
src/lib/actions...e-validation.ts 81% 90% +9%
src/lib/actions...x/mcp-bridge.ts 35% 44% +9%
src/lib/sandbox...rsion-scheme.ts 73% 100% +27%
src/lib/inference/vllm.ts 41% 76% +35%
src/lib/onboard...irtual-clock.ts 0% 100% +100%

Updated July 09, 2026 06:37 UTC
Code Coverage is in Public Preview. Learn more and provide us with your feedback.

@github-actions

github-actions Bot commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

E2E Advisor Recommendation

Required E2E: onboard-repair, onboard-resume, cloud-onboard
Optional E2E: gateway-health-honest-e2e

Dispatch hint: onboard-repair,onboard-resume,cloud-onboard

Workflow run

Full advisor summary

E2E Recommendation Advisor

Base: origin/main
Head: HEAD
Confidence: high

Required E2E

  • onboard-repair (live GitHub-hosted E2E): Required by the deterministic risk plan for lifecycle-state changes. The PR changes gateway health and startup failure behavior that must converge with persisted state and repair policy after failed or stale gateway states.
  • onboard-resume (live GitHub-hosted E2E): Required by the deterministic risk plan for lifecycle-state changes. The PR changes onboarding gateway wait deadlines and error normalization, which can affect resume from interrupted or partially completed onboarding sessions.
  • cloud-onboard (live GitHub-hosted E2E with NVIDIA inference secret): Gateway health wait and startup failure handling are part of the full hosted onboarding path; run the real cloud onboard flow to verify a clean install/onboard journey still reaches a healthy sandbox with inference credentials.

Optional E2E

  • gateway-health-honest-e2e (live regression E2E): Adjacent regression coverage for gateway readiness honesty. Useful because this PR changes deadline-based gateway health polling and failure messages, but the required onboard-resume/onboard-repair/cloud-onboard jobs are the merge-blocking floor.

New E2E recommendations

  • None.

Dispatch hint

  • Workflow: .github/workflows/e2e.yaml
  • jobs input: onboard-repair,onboard-resume,cloud-onboard

@github-actions

github-actions Bot commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

E2E Target Recommendation

Required E2E targets: onboard-repair, onboard-resume
Optional E2E targets: None

Dispatch required E2E targets:

  • gh workflow run e2e.yaml --ref <pr-head-ref> --field jobs=onboard-repair
  • gh workflow run e2e.yaml --ref <pr-head-ref> --field jobs=onboard-resume

Workflow run

Full E2E target advisor summary

E2E Target Advisor

Base: origin/main
Head: HEAD
Confidence: high

Required E2E targets

  • onboard-repair: Onboarding and sandbox state must converge across persisted metadata, reported status, and the live runtime.
    • Dispatch: gh workflow run e2e.yaml --ref <pr-head-ref> --field jobs=onboard-repair
  • onboard-resume: Onboarding and sandbox state must converge across persisted metadata, reported status, and the live runtime.
    • Dispatch: gh workflow run e2e.yaml --ref <pr-head-ref> --field jobs=onboard-resume

Optional E2E targets

  • None.

Relevant changed files

  • src/lib/onboard.ts
  • src/lib/onboard/__test-helpers__/virtual-clock.ts
  • src/lib/onboard/docker-driver-gateway-service.ts
  • src/lib/onboard/gateway-health-wait.ts
  • src/lib/onboard/gateway-start-failure.ts

@github-actions

github-actions Bot commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

PR Review Advisor (Nemotron Ultra) — Changes requested

Merge posture: Do not merge yet
Primary next action: Fix PRA-1: Required E2E jobs onboard-repair and onboard-resume not confirmed passed; then add or justify PRA-T1.
Open items: 1 required · 1 warning · 1 suggestion · 4 test follow-ups
Since last review: 3 prior items resolved · 1 still applies · 1 new item found

Action checklist

  • PRA-1 Fix: Required E2E jobs onboard-repair and onboard-resume not confirmed passed
  • PRA-2 Resolve or justify: Lifecycle-state invariants lack live validation despite unit coverage in src/lib/onboard/gateway-health-wait.ts:72
  • PRA-T1 Add or justify test follow-up: Runtime validation
  • PRA-T2 Add or justify test follow-up: Runtime validation
  • PRA-T3 Add or justify test follow-up: Required E2E jobs onboard-repair and onboard-resume not confirmed passed
  • PRA-T4 Add or justify test follow-up: Lifecycle-state invariants lack live validation despite unit coverage
  • PRA-3 In-scope improvement: Deadline budget behavior change not documented for operators in src/lib/onboard/gateway-health-wait.ts:1

Findings index

ID Severity Category Location Required action
PRA-1 Required tests Execute onboard-repair and onboard-resume CI jobs and confirm both pass with green status on PR head SHA d555879 before merging.
PRA-2 Resolve/justify tests src/lib/onboard/gateway-health-wait.ts:72 Ensure onboard-repair and onboard-resume E2E jobs pass (see blocker finding). No additional unit tests needed; the validation gap is inherently runtime.
PRA-3 Improvement docs src/lib/onboard/gateway-health-wait.ts:1 Add a brief changelog entry or inline comment noting the deadline-based timeout semantics and updated error message format.

🚨 Required before merge

Address these before merging unless a maintainer explicitly overrides the advisor with rationale.

PRA-1 Required — Required E2E jobs onboard-repair and onboard-resume not confirmed passed

  • Location: not file-specific
  • Category: tests
  • Problem: Risk plan tier 2 mandates onboard-repair and onboard-resume as deterministic validation floor for lifecycle-state invariants: ghost resource convergence, status agreement with independently probed gateway/sandbox state, and cleanup preservation of unrelated sandboxes. Unit mocks cannot validate cross-process resource lifecycle. PR claims 77/77 targeted tests pass but does not confirm these specific E2E jobs ran on head SHA d555879.
  • Impact: Without E2E validation, onboarding could leave ghost gateway containers, stale ports, or incorrectly report sandbox health, causing subsequent onboarding attempts to fail or corrupt state across multiple sandboxes.
  • Required action: Execute onboard-repair and onboard-resume CI jobs and confirm both pass with green status on PR head SHA d555879 before merging.
  • Expected follow-up: Fix before merge or get explicit maintainer override.
  • Verification: Check CI pipeline for jobs named 'onboard-repair' and 'onboard-resume' with green status on the PR head SHA.
  • Missing regression test: E2E validation of ghost resource convergence after partial gateway start failure; status agreement between reported gateway health and live k3s pod state; cleanup preservation of unrelated sandboxes during repair/resume.
  • Done when: The required change is committed and verification passes: Check CI pipeline for jobs named 'onboard-repair' and 'onboard-resume' with green status on the PR head SHA.
  • Evidence: Risk plan requiredJobs: onboard-repair, onboard-resume (tier 2, lifecycle-state family). Invariants: partial failure/retry converge without ghost resources; status agrees with independently probed gateway and sandbox state; cleanup preserves unrelated sandboxes.
Review findings by urgency: 1 required fix, 1 item to resolve/justify, 1 in-scope improvement

⚠️ 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-2 Resolve/justify — Lifecycle-state invariants lack live validation despite unit coverage

  • Location: src/lib/onboard/gateway-health-wait.ts:72
  • Category: tests
  • Problem: Unit tests cover mocked deadline paths (deadline expiry, zero-interval probes, HTTP probe abort, error normalization, budget clamping) but cannot validate cross-process resource lifecycle: ghost container convergence, independent probe vs reported status agreement, multi-sandbox cleanup preservation. Required E2E jobs are the validation floor per risk plan.
  • Impact: Unit tests verify scheduling logic but not the actual Docker/k3s resource lifecycle that the invariants protect. A logic bug in deadline calculation could allow ghost resources in production despite passing unit tests.
  • Recommended action: Ensure onboard-repair and onboard-resume E2E jobs pass (see blocker finding). No additional unit tests needed; the validation gap is inherently runtime.
  • Expected follow-up: Resolve in this PR or explain why the risk is acceptable.
  • Verification: Run the required E2E jobs and verify they exercise gateway start failure, repair, and resume paths with multiple sandboxes.
  • Missing regression test: E2E test covering partial gateway start failure → repair → resume cycle with verification that no ghost containers/ports remain and unrelated sandboxes are untouched.
  • Done when: The risk is fixed or explicitly justified in the PR. Verification: Run the required E2E jobs and verify they exercise gateway start failure, repair, and resume paths with multiple sandboxes.
  • Evidence: Risk plan invariants require live runtime validation. Unit tests in gateway-health-wait.test.ts and docker-driver-gateway-service.test.ts use virtual clock and mocks only.

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

PRA-3 Improvement — Deadline budget behavior change not documented for operators

  • Location: src/lib/onboard/gateway-health-wait.ts:1
  • Category: docs
  • Problem: Positive intervals now use deadlineMs = count × interval instead of fixed maxAttempts with fixed interval; zero interval preserves bounded immediate probes. Terminal error message changed from 'Gateway failed to start' to 'Gateway failed within Xs.' No changelog or docs updated.
  • Impact: Operators debugging gateway timeouts will see different error messages and timeout semantics. The deadline-based behavior is more predictable but differs from the previous attempt-count behavior.
  • Suggested action: Add a brief changelog entry or inline comment noting the deadline-based timeout semantics and updated error message format.
  • Expected follow-up: Prefer a current-PR fix when local to changed code; defer only with rationale or linked follow-up.
  • Verification: Check if CHANGELOG.md or release notes mention the gateway health wait deadline change.
  • Missing regression test: None needed — this is a documentation improvement. Existing tests verify the new behavior.
  • Done when: The local improvement is applied, or the PR notes why it should be deferred.
  • Evidence: PR quality gates: 'Docs not applicable — justification: the change preserves the existing readiness contract and only corrects internal polling semantics and terminal diagnostics.'
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 Runtime validation — Run the onboard-repair E2E job for Onboarding and sandbox state must converge across persisted metadata, reported status, and the live runtime.. Deterministic regression risks require live validation for lifecycle-state invariants (ghost resource convergence, status agreement, cleanup preservation). Unit tests cover all new scheduling logic and error paths with virtual clock, but cross-process Docker/k3s resource lifecycle requires E2E.
  • PRA-T2 Runtime validation — Run the onboard-resume E2E job for Onboarding and sandbox state must converge across persisted metadata, reported status, and the live runtime.. Deterministic regression risks require live validation for lifecycle-state invariants (ghost resource convergence, status agreement, cleanup preservation). Unit tests cover all new scheduling logic and error paths with virtual clock, but cross-process Docker/k3s resource lifecycle requires E2E.
  • PRA-T3 Required E2E jobs onboard-repair and onboard-resume not confirmed passed — Execute onboard-repair and onboard-resume CI jobs and confirm both pass with green status on PR head SHA d555879 before merging.
  • PRA-T4 Lifecycle-state invariants lack live validation despite unit coverage — Ensure onboard-repair and onboard-resume E2E jobs pass (see blocker finding). No additional unit tests needed; the validation gap is inherently runtime.
Since last review details

Current findings, using the urgency labels above:

PRA-1 Required — Required E2E jobs onboard-repair and onboard-resume not confirmed passed

  • Location: not file-specific
  • Category: tests
  • Problem: Risk plan tier 2 mandates onboard-repair and onboard-resume as deterministic validation floor for lifecycle-state invariants: ghost resource convergence, status agreement with independently probed gateway/sandbox state, and cleanup preservation of unrelated sandboxes. Unit mocks cannot validate cross-process resource lifecycle. PR claims 77/77 targeted tests pass but does not confirm these specific E2E jobs ran on head SHA d555879.
  • Impact: Without E2E validation, onboarding could leave ghost gateway containers, stale ports, or incorrectly report sandbox health, causing subsequent onboarding attempts to fail or corrupt state across multiple sandboxes.
  • Required action: Execute onboard-repair and onboard-resume CI jobs and confirm both pass with green status on PR head SHA d555879 before merging.
  • Expected follow-up: Fix before merge or get explicit maintainer override.
  • Verification: Check CI pipeline for jobs named 'onboard-repair' and 'onboard-resume' with green status on the PR head SHA.
  • Missing regression test: E2E validation of ghost resource convergence after partial gateway start failure; status agreement between reported gateway health and live k3s pod state; cleanup preservation of unrelated sandboxes during repair/resume.
  • Done when: The required change is committed and verification passes: Check CI pipeline for jobs named 'onboard-repair' and 'onboard-resume' with green status on the PR head SHA.
  • Evidence: Risk plan requiredJobs: onboard-repair, onboard-resume (tier 2, lifecycle-state family). Invariants: partial failure/retry converge without ghost resources; status agrees with independently probed gateway and sandbox state; cleanup preserves unrelated sandboxes.

PRA-2 Resolve/justify — Lifecycle-state invariants lack live validation despite unit coverage

  • Location: src/lib/onboard/gateway-health-wait.ts:72
  • Category: tests
  • Problem: Unit tests cover mocked deadline paths (deadline expiry, zero-interval probes, HTTP probe abort, error normalization, budget clamping) but cannot validate cross-process resource lifecycle: ghost container convergence, independent probe vs reported status agreement, multi-sandbox cleanup preservation. Required E2E jobs are the validation floor per risk plan.
  • Impact: Unit tests verify scheduling logic but not the actual Docker/k3s resource lifecycle that the invariants protect. A logic bug in deadline calculation could allow ghost resources in production despite passing unit tests.
  • Recommended action: Ensure onboard-repair and onboard-resume E2E jobs pass (see blocker finding). No additional unit tests needed; the validation gap is inherently runtime.
  • Expected follow-up: Resolve in this PR or explain why the risk is acceptable.
  • Verification: Run the required E2E jobs and verify they exercise gateway start failure, repair, and resume paths with multiple sandboxes.
  • Missing regression test: E2E test covering partial gateway start failure → repair → resume cycle with verification that no ghost containers/ports remain and unrelated sandboxes are untouched.
  • Done when: The risk is fixed or explicitly justified in the PR. Verification: Run the required E2E jobs and verify they exercise gateway start failure, repair, and resume paths with multiple sandboxes.
  • Evidence: Risk plan invariants require live runtime validation. Unit tests in gateway-health-wait.test.ts and docker-driver-gateway-service.test.ts use virtual clock and mocks only.

PRA-3 Improvement — Deadline budget behavior change not documented for operators

  • Location: src/lib/onboard/gateway-health-wait.ts:1
  • Category: docs
  • Problem: Positive intervals now use deadlineMs = count × interval instead of fixed maxAttempts with fixed interval; zero interval preserves bounded immediate probes. Terminal error message changed from 'Gateway failed to start' to 'Gateway failed within Xs.' No changelog or docs updated.
  • Impact: Operators debugging gateway timeouts will see different error messages and timeout semantics. The deadline-based behavior is more predictable but differs from the previous attempt-count behavior.
  • Suggested action: Add a brief changelog entry or inline comment noting the deadline-based timeout semantics and updated error message format.
  • Expected follow-up: Prefer a current-PR fix when local to changed code; defer only with rationale or linked follow-up.
  • Verification: Check if CHANGELOG.md or release notes mention the gateway health wait deadline change.
  • Missing regression test: None needed — this is a documentation improvement. Existing tests verify the new behavior.
  • Done when: The local improvement is applied, or the PR notes why it should be deferred.
  • Evidence: PR quality gates: 'Docs not applicable — justification: the change preserves the existing readiness contract and only corrects internal polling semantics and terminal diagnostics.'

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.

@github-actions

github-actions Bot commented Jul 9, 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: Validate lifecycle-state convergence under deadline-based gateway waits.
Open items: 0 required · 1 warning · 0 suggestions · 3 test follow-ups
Since last review: 1 prior item resolved · 1 still applies · 0 new items found

Action checklist

  • PRA-1 Resolve or justify: Validate lifecycle-state convergence under deadline-based gateway waits in src/lib/onboard/gateway-health-wait.ts:72
  • PRA-T1 Add or justify test follow-up: Runtime validation
  • PRA-T2 Add or justify test follow-up: Runtime validation
  • PRA-T3 Add or justify test follow-up: Validate lifecycle-state convergence under deadline-based gateway waits

Findings index

ID Severity Category Location Required action
PRA-1 Resolve/justify tests src/lib/onboard/gateway-health-wait.ts:72 Resolve or justify with behavior-specific runtime validation for the changed lifecycle paths, at minimum evidence equivalent to the listed onboard-repair and onboard-resume validation floor under positive-interval deadline waits.
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 — Validate lifecycle-state convergence under deadline-based gateway waits

  • Location: src/lib/onboard/gateway-health-wait.ts:72
  • Category: tests
  • Problem: Positive-interval gateway waits now use an absolute deadline budget instead of a fixed attempt cap. The changed unit tests cover mocked timing, zero-interval attempts, error propagation, package-managed breadcrumb clear/no-clear ordering, and metadata/HTTP readiness paths, but they do not provide runtime evidence for the riskPlan lifecycle-state invariants after a real gateway readiness timeout.
  • Impact: On slower real hosts, deadline-based waits can reduce the number of actual gateway probes compared with the old attempt cap. If repair or resume paths interpret partially initialized gateway state differently after such a timeout, onboarding could leave stale ports, ghost runtime breadcrumbs, or persisted state that disagrees with the live gateway or sandbox.
  • Recommended action: Resolve or justify with behavior-specific runtime validation for the changed lifecycle paths, at minimum evidence equivalent to the listed onboard-repair and onboard-resume validation floor under positive-interval deadline waits.
  • Expected follow-up: Resolve in this PR or explain why the risk is acceptable.
  • Verification: Inspect the validation evidence for onboard-repair and onboard-resume scenarios that include a positive-interval gateway readiness timeout, then confirm independently probed gateway/sandbox health, no stale bound gateway port, no ghost runtime breadcrumb, and preservation of unrelated sandboxes/resources.
  • Missing regression test: Add or cite a runtime E2E scenario where gateway readiness times out under positive deadline waits, then both repair and resume runs converge cleanly: the gateway becomes independently healthy, stale gateway ports are not left bound, owned runtime breadcrumbs are removed only after verified health, and unrelated sandboxes/resources remain intact.
  • Done when: The risk is fixed or explicitly justified in the PR. Verification: Inspect the validation evidence for onboard-repair and onboard-resume scenarios that include a positive-interval gateway readiness timeout, then confirm independently probed gateway/sandbox health, no stale bound gateway port, no ghost runtime breadcrumb, and preservation of unrelated sandboxes/resources.
  • Evidence: createGatewayHealthWaitOptions() in src/lib/onboard/gateway-health-wait.ts now returns deadlineMs: now() + count * interval for positive intervals, and startPackageManagedDockerDriverGateway() reuses that helper. The riskPlan lists lifecycle-state invariants and required jobs onboard-repair and onboard-resume; the changed tests are mocked/unit tests using virtual clocks and mocked OpenShell/probe outputs.

💡 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 Runtime validation — Run or provide equivalent evidence for onboard-repair: force a gateway readiness timeout under a positive health deadline, then repair onboarding and verify the gateway is independently healthy, no stale gateway port remains bound, no ghost runtime breadcrumb remains, and unrelated sandboxes/resources are preserved.. Unit and mocked coverage is strong for the changed timing and error contracts, but the riskPlan marks lifecycle-state as a deterministic regression family. The changed positive-interval deadline behavior can affect real repair/resume convergence, stale ports, and persisted/runtime state in ways mocked virtual-clock tests cannot observe.
  • PRA-T2 Runtime validation — Run or provide equivalent evidence for onboard-resume: interrupt or fail onboarding after a positive-deadline gateway readiness timeout, then resume and verify the selected gateway/sandbox state agrees with independent probes, owned runtime artifacts are cleaned only after verified health, and unrelated sandboxes/resources are preserved.. Unit and mocked coverage is strong for the changed timing and error contracts, but the riskPlan marks lifecycle-state as a deterministic regression family. The changed positive-interval deadline behavior can affect real repair/resume convergence, stale ports, and persisted/runtime state in ways mocked virtual-clock tests cannot observe.
  • PRA-T3 Validate lifecycle-state convergence under deadline-based gateway waits — Resolve or justify with behavior-specific runtime validation for the changed lifecycle paths, at minimum evidence equivalent to the listed onboard-repair and onboard-resume validation floor under positive-interval deadline waits.
Since last review details

Current findings, using the urgency labels above:

PRA-1 Resolve/justify — Validate lifecycle-state convergence under deadline-based gateway waits

  • Location: src/lib/onboard/gateway-health-wait.ts:72
  • Category: tests
  • Problem: Positive-interval gateway waits now use an absolute deadline budget instead of a fixed attempt cap. The changed unit tests cover mocked timing, zero-interval attempts, error propagation, package-managed breadcrumb clear/no-clear ordering, and metadata/HTTP readiness paths, but they do not provide runtime evidence for the riskPlan lifecycle-state invariants after a real gateway readiness timeout.
  • Impact: On slower real hosts, deadline-based waits can reduce the number of actual gateway probes compared with the old attempt cap. If repair or resume paths interpret partially initialized gateway state differently after such a timeout, onboarding could leave stale ports, ghost runtime breadcrumbs, or persisted state that disagrees with the live gateway or sandbox.
  • Recommended action: Resolve or justify with behavior-specific runtime validation for the changed lifecycle paths, at minimum evidence equivalent to the listed onboard-repair and onboard-resume validation floor under positive-interval deadline waits.
  • Expected follow-up: Resolve in this PR or explain why the risk is acceptable.
  • Verification: Inspect the validation evidence for onboard-repair and onboard-resume scenarios that include a positive-interval gateway readiness timeout, then confirm independently probed gateway/sandbox health, no stale bound gateway port, no ghost runtime breadcrumb, and preservation of unrelated sandboxes/resources.
  • Missing regression test: Add or cite a runtime E2E scenario where gateway readiness times out under positive deadline waits, then both repair and resume runs converge cleanly: the gateway becomes independently healthy, stale gateway ports are not left bound, owned runtime breadcrumbs are removed only after verified health, and unrelated sandboxes/resources remain intact.
  • Done when: The risk is fixed or explicitly justified in the PR. Verification: Inspect the validation evidence for onboard-repair and onboard-resume scenarios that include a positive-interval gateway readiness timeout, then confirm independently probed gateway/sandbox health, no stale bound gateway port, no ghost runtime breadcrumb, and preservation of unrelated sandboxes/resources.
  • Evidence: createGatewayHealthWaitOptions() in src/lib/onboard/gateway-health-wait.ts now returns deadlineMs: now() + count * interval for positive intervals, and startPackageManagedDockerDriverGateway() reuses that helper. The riskPlan lists lifecycle-state invariants and required jobs onboard-repair and onboard-resume; the changed tests are mocked/unit tests using virtual clocks and mocked OpenShell/probe outputs.

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.

@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/gateway-health-wait.test.ts (1)

6-12: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Add coverage for the positive-interval formatting branch.

The new tests exercise getGatewayHealthWaitBudgetMs and formatGatewayHealthWaitLimit's zero-interval "immediate probes" branch (line 142), but none of the visible tests exercise formatGatewayHealthWaitLimit/formatGatewayHealthWaitBudget with a positive interval (the "Xs health deadline" text path). Given these formatters are meant to also drive the docker-driver-gateway-service timeout message, a direct assertion here would guard against regressions in that string.

♻️ Example additional test
it("formats a positive-interval budget as a health deadline", () => {
  expect(formatGatewayHealthWaitLimit(5, 2)).toBe("10s health deadline");
});

Also applies to: 97-178

🤖 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/gateway-health-wait.test.ts` around lines 6 - 12, The gateway
health wait tests cover the zero-interval “immediate probes” path but miss the
positive-interval formatting branch in formatGatewayHealthWaitLimit. Add a
direct assertion in gateway-health-wait.test.ts for the formatter’s non-zero
interval case using the existing exported helper, and verify it returns the “Xs
health deadline” text so regressions in the docker-driver-gateway-service
timeout message are caught.
src/lib/onboard/docker-driver-gateway-service.test.ts (1)

300-334: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Add a failure-path case for the zero-interval message.

This test only exercises the success path for healthPollInterval: 0. The unhealthy-timeout message now embeds formatGatewayHealthWaitLimit(pollCount, pollInterval) (docker-driver-gateway-service.ts Lines 357-360), but no test in this file exhausts the bounded immediate probes and asserts the resulting zero-interval error text end-to-end through this caller.

🧪 Suggested additional case
it("fails after bounded immediate probes are exhausted when the interval is zero", async () => {
  await expect(
    startPackageManagedDockerDriverGateway({
      // ...same wiring as above, but registerDockerDriverGatewayEndpoint always returns true
      // and isDockerDriverGatewayReady always resolves false so health never passes
      healthPollCount: 3,
      healthPollInterval: 0,
      now: () => Number.MAX_SAFE_INTEGER,
      // ...
    }),
  ).rejects.toThrow(/* expected zero-interval limit wording */);
});
🤖 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-service.test.ts` around lines 300 -
334, Add a failure-path test for startPackageManagedDockerDriverGateway that
uses healthPollCount with healthPollInterval set to 0 and lets
isDockerDriverGatewayReady stay false so the bounded probes are exhausted; then
assert the thrown error includes the zero-interval limit wording from
formatGatewayHealthWaitLimit. Reuse the existing test setup in
docker-driver-gateway-service.test.ts, but make
registerDockerDriverGatewayEndpoint always succeed so the code reaches the
unhealthy timeout branch and verifies the message end-to-end.
🤖 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-service.test.ts`:
- Around line 300-334: Add a failure-path test for
startPackageManagedDockerDriverGateway that uses healthPollCount with
healthPollInterval set to 0 and lets isDockerDriverGatewayReady stay false so
the bounded probes are exhausted; then assert the thrown error includes the
zero-interval limit wording from formatGatewayHealthWaitLimit. Reuse the
existing test setup in docker-driver-gateway-service.test.ts, but make
registerDockerDriverGatewayEndpoint always succeed so the code reaches the
unhealthy timeout branch and verifies the message end-to-end.

In `@src/lib/onboard/gateway-health-wait.test.ts`:
- Around line 6-12: The gateway health wait tests cover the zero-interval
“immediate probes” path but miss the positive-interval formatting branch in
formatGatewayHealthWaitLimit. Add a direct assertion in
gateway-health-wait.test.ts for the formatter’s non-zero interval case using the
existing exported helper, and verify it returns the “Xs health deadline” text so
regressions in the docker-driver-gateway-service timeout message are caught.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 241a94f6-12a8-4823-8ac7-efa4d4e5a210

📥 Commits

Reviewing files that changed from the base of the PR and between 48e4967 and 2b52189.

📒 Files selected for processing (6)
  • src/lib/onboard.ts
  • src/lib/onboard/__test-helpers__/virtual-clock.ts
  • src/lib/onboard/docker-driver-gateway-service.test.ts
  • src/lib/onboard/docker-driver-gateway-service.ts
  • src/lib/onboard/gateway-health-wait.test.ts
  • src/lib/onboard/gateway-health-wait.ts

Preserve Error identity and normalize primitive throws at the gateway-start boundary.

Use the shared virtual clock for zero-interval package-service coverage.

Co-authored-by: Ho Lim <subhoya@gmail.com>
Signed-off-by: Apurv Kumaria <akumaria@nvidia.com>
@github-actions

github-actions Bot commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

E2E Target Results — ✅ All requested jobs passed

Run: 28998763194
Workflow ref: codex/3768-gateway-health-deadlines
Requested targets: (default — all supported)
Requested jobs: onboard-repair,onboard-resume
Summary: 2 passed, 0 failed, 0 cancelled, 0 skipped

Job Result
onboard-repair ✅ success
onboard-resume ✅ success

@cv
cv merged commit 48ba928 into main Jul 9, 2026
124 checks passed
@cv
cv deleted the codex/3768-gateway-health-deadlines branch July 9, 2026 07:08
@jyaunches jyaunches mentioned this pull request Jul 9, 2026
21 tasks
cv pushed a commit that referenced this pull request Jul 9, 2026
<!-- markdownlint-disable MD041 -->
## Summary
Adds the pre-tag v0.0.79 release notes entry to
`docs/about/release-notes.mdx` so the release plan can be generated
after docs merge.
The entry summarizes the merged v0.0.79 release train across inference,
diagnostics, runtime hardening, policies, onboarding recovery, and
release validation.

## Changes
- Added the v0.0.79 release notes section with linked follow-up
documentation for OpenRouter onboarding, managed vLLM changes,
completion and logging, Deep Agents runtime limits, policy updates,
onboarding recovery, and release validation.
- Source summary:
- #6461 -> `docs/about/release-notes.mdx`: Documents OpenRouter
onboarding support and links to inference/provider references.
- #6271 and #6272 -> `docs/about/release-notes.mdx`: Documents shell
completion and structured logging highlights.
- #6465, #6539, #6570, and #6528 -> `docs/about/release-notes.mdx`:
Documents status route-drift, orphaned sandbox, gateway cleanup, and DGX
Spark express-install diagnostics.
- #6523, #6551, #6484, #6488, #6324, and #6542 ->
`docs/about/release-notes.mdx`: Documents managed vLLM, Qwen3.6 tool
parser, compaction, and timeout/readiness improvements.
- #6559, #6538, #6560, #6568, #6552, #6567, and #6587 ->
`docs/about/release-notes.mdx`: Documents runtime, credential, proxy,
PID namespace, TOML, and provider-state hardening.
- #6541, #5415, #6246, #6496, and #6573 ->
`docs/about/release-notes.mdx`: Documents GitHub policy, Gmail policy,
MCP allowlist, WhatsApp, and messaging-variant updates.
- #6253, #6572, #6444, #6536, and #5860 ->
`docs/about/release-notes.mdx`: Documents onboarding resume and
create-step recovery improvements.
- #6508, #6527, #5506, #6588, #6446, #6447, #6582, #6296, #6367, #6397,
and #6505 -> `docs/about/release-notes.mdx`: Documents docs,
release-risk, and E2E validation updates.

## Type of Change

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

## Quality Gates
<!-- Check exactly one tests line and one docs line. Check other lines
when applicable. Add every requested justification or approval
reference. -->
- [ ] Tests added or updated for changed behavior
- [ ] Existing tests cover changed behavior — justification:
- [x] Tests not applicable — justification: Release-note prose only.
- [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 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 the DCO sign-off declaration and every
commit appears as `Verified` in GitHub
- [x] Normal `pre-commit`, `commit-msg`, and `pre-push` hooks passed, or
`npm run check:diff` passed when hooks were skipped or unavailable
- [x] Targeted behavior tests pass for the current change set, or tests
are marked not applicable above — command/result or justification: Tests
not applicable, release-note prose only.
- [ ] Applicable broad gate passed — `npm test` for broad
runtime/test-harness changes; `npm run check` for repo-wide
validation/coverage changes — command/result:
- [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)

Docs validation note: `npm run docs:check-agent-variants && npm run
docs:check-routes && git diff --check` passed. Full `npm run docs` is
currently blocked before Fern validation because the pinned
`fern-api@5.65.2` package is unavailable from npm (`ETARGET No matching
version found`).

---
<!-- 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 release notes for v0.0.79 with a new summary of recent
improvements, including onboarding and inference options, operator/CLI
diagnostics, sandbox recovery hardening, runtime limits, network policy
behavior, and release validation updates.
  * Added updated references and links for the latest release.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Hadar301 pushed a commit to Hadar301/NemoClaw-OpenShift that referenced this pull request Jul 12, 2026
<!-- markdownlint-disable MD041 -->
## Summary
This replacement carries Ho Lim's work from NVIDIA#6489 onto current `main`
and preserves Ho as a commit co-author. It replaces fixed attempt caps
with bounded gateway-health deadlines while retaining deterministic,
configured immediate probes when the poll interval is zero.

## Related Issue
Refs NVIDIA#3768. This is a partial mitigation for the gateway-health and
package-managed Docker-driver paths; it intentionally leaves the broader
readiness-loop issue open.

## Changes
- Derive positive-interval gateway health waits from one deadline
budget.
- Preserve the configured number of bounded immediate probes for a zero
interval.
- Keep deadline-aware terminal errors intact through the onboarding
failure path.
- Share a deterministic virtual clock and add positive, zero-interval,
rejection, and slow-probe coverage.

## 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
<!-- Check exactly 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:
- [ ] Docs updated for user-facing behavior changes
- [x] Docs not applicable — justification: the change preserves the
existing readiness contract and only corrects internal polling semantics
and terminal diagnostics.
- [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: the exact fixed tree
was reviewed on NVIDIA#6489 with no credential, authorization, SSRF,
sandbox-escape, or dependency blocker; this replacement is
tree-equivalent on current main.
- [ ] Non-success, skipped, or missing CI check accepted by maintainer —
check name, approval link, and follow-up issue:

## 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 the DCO sign-off declaration and every
commit appears as `Verified` in GitHub
- [x] Normal `pre-commit`, `commit-msg`, and `pre-push` hooks passed, or
`npm run check:diff` passed when hooks were skipped or unavailable
- [x] Targeted behavior tests pass for the current change set, or tests
are marked not applicable above — `24/24` focused gateway tests and
`77/77` targeted onboarding/integration tests passed.
- [ ] Applicable broad gate passed — `npm test` for broad
runtime/test-harness changes; `npm run check` for repo-wide
validation/coverage changes — command/result:
- [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)

---
<!-- 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: Apurv Kumaria <akumaria@nvidia.com>


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

* **New Features**
* Gateway health checks now use deadline/budget-based timing, including
an immediate-probe mode when the poll interval is zero.
* Health-wait timing can be driven by an injected clock source for
deterministic behavior.
* **Bug Fixes**
* Gateway startup failures now preserve the original thrown error when
available, with improved timeout/deadline messaging.
* **Tests**
* Added a virtual clock helper and updated gateway health/startup tests
to use deterministic time, including new zero-interval and
deadline-expiration coverage.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Signed-off-by: Apurv Kumaria <akumaria@nvidia.com>
Co-authored-by: Ho Lim <subhoya@gmail.com>
Hadar301 pushed a commit to Hadar301/NemoClaw-OpenShift that referenced this pull request Jul 12, 2026
<!-- markdownlint-disable MD041 -->
## Summary
Adds the pre-tag v0.0.79 release notes entry to
`docs/about/release-notes.mdx` so the release plan can be generated
after docs merge.
The entry summarizes the merged v0.0.79 release train across inference,
diagnostics, runtime hardening, policies, onboarding recovery, and
release validation.

## Changes
- Added the v0.0.79 release notes section with linked follow-up
documentation for OpenRouter onboarding, managed vLLM changes,
completion and logging, Deep Agents runtime limits, policy updates,
onboarding recovery, and release validation.
- Source summary:
- NVIDIA#6461 -> `docs/about/release-notes.mdx`: Documents OpenRouter
onboarding support and links to inference/provider references.
- NVIDIA#6271 and NVIDIA#6272 -> `docs/about/release-notes.mdx`: Documents shell
completion and structured logging highlights.
- NVIDIA#6465, NVIDIA#6539, NVIDIA#6570, and NVIDIA#6528 -> `docs/about/release-notes.mdx`:
Documents status route-drift, orphaned sandbox, gateway cleanup, and DGX
Spark express-install diagnostics.
- NVIDIA#6523, NVIDIA#6551, NVIDIA#6484, NVIDIA#6488, NVIDIA#6324, and NVIDIA#6542 ->
`docs/about/release-notes.mdx`: Documents managed vLLM, Qwen3.6 tool
parser, compaction, and timeout/readiness improvements.
- NVIDIA#6559, NVIDIA#6538, NVIDIA#6560, NVIDIA#6568, NVIDIA#6552, NVIDIA#6567, and NVIDIA#6587 ->
`docs/about/release-notes.mdx`: Documents runtime, credential, proxy,
PID namespace, TOML, and provider-state hardening.
- NVIDIA#6541, NVIDIA#5415, NVIDIA#6246, NVIDIA#6496, and NVIDIA#6573 ->
`docs/about/release-notes.mdx`: Documents GitHub policy, Gmail policy,
MCP allowlist, WhatsApp, and messaging-variant updates.
- NVIDIA#6253, NVIDIA#6572, NVIDIA#6444, NVIDIA#6536, and NVIDIA#5860 ->
`docs/about/release-notes.mdx`: Documents onboarding resume and
create-step recovery improvements.
- NVIDIA#6508, NVIDIA#6527, NVIDIA#5506, NVIDIA#6588, NVIDIA#6446, NVIDIA#6447, NVIDIA#6582, NVIDIA#6296, NVIDIA#6367, NVIDIA#6397,
and NVIDIA#6505 -> `docs/about/release-notes.mdx`: Documents docs,
release-risk, and E2E validation updates.

## Type of Change

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

## Quality Gates
<!-- Check exactly one tests line and one docs line. Check other lines
when applicable. Add every requested justification or approval
reference. -->
- [ ] Tests added or updated for changed behavior
- [ ] Existing tests cover changed behavior — justification:
- [x] Tests not applicable — justification: Release-note prose only.
- [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 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 the DCO sign-off declaration and every
commit appears as `Verified` in GitHub
- [x] Normal `pre-commit`, `commit-msg`, and `pre-push` hooks passed, or
`npm run check:diff` passed when hooks were skipped or unavailable
- [x] Targeted behavior tests pass for the current change set, or tests
are marked not applicable above — command/result or justification: Tests
not applicable, release-note prose only.
- [ ] Applicable broad gate passed — `npm test` for broad
runtime/test-harness changes; `npm run check` for repo-wide
validation/coverage changes — command/result:
- [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)

Docs validation note: `npm run docs:check-agent-variants && npm run
docs:check-routes && git diff --check` passed. Full `npm run docs` is
currently blocked before Fern validation because the pinned
`fern-api@5.65.2` package is unavailable from npm (`ETARGET No matching
version found`).

---
<!-- 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 release notes for v0.0.79 with a new summary of recent
improvements, including onboarding and inference options, operator/CLI
diagnostics, sandbox recovery hardening, runtime limits, network policy
behavior, and release validation updates.
  * Added updated references and links for the latest release.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
@wscurran wscurran added the area: onboarding Onboarding FSM, provider setup, sandbox launch, or first-run flow label Aug 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: onboarding Onboarding FSM, provider setup, sandbox launch, or first-run flow

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants