fix(onboard): keep pending route reservation through not-ready recreate#6626
Conversation
When an interrupted onboard left a partial sandbox live on the gateway, the not-ready recreate removed the pending inference-route row before the long rebuild, so a second interruption stranded `--resume` with "route reservation disappeared". The create path finalises that row in place via updateSandbox and never re-registers it, so the reservation must survive the recreate. Stamp the reservation with the owning onboard session id and skip the pre-rebuild registry removal for the current session's pending reservation; abandoned reservations from other sessions still prune. Signed-off-by: Tinson Lai <tinsonl@nvidia.com>
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Enterprise Run ID: 📒 Files selected for processing (5)
🚧 Files skipped from review as they are similar to previous changes (3)
📝 WalkthroughWalkthroughSandbox route reservations now track their owning onboarding session. Resume flows propagate that session ID, and sandbox recreation preserves matching pending reservations while continuing to delete non-ready sandbox resources. ChangesReservation ownership flow
Estimated code review effort: 3 (Moderate) | ~20 minutes Sequence Diagram(s)sequenceDiagram
participant ProviderInference
participant SetupInference
participant Registry
participant Onboard
participant SandboxLifecycle
ProviderInference->>SetupInference: Pass session ID
SetupInference->>Registry: Reserve route with session ID
Registry-->>SetupInference: Persist pending reservation ownership
Onboard->>SandboxLifecycle: Remove sandbox unless session reservation
SandboxLifecycle->>Registry: Check reservation ownership
Registry-->>SandboxLifecycle: Return ownership match
SandboxLifecycle-->>Onboard: Preserve matching reservation
Suggested labels: 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
Code Coverage OverviewLanguages: TypeScript TypeScript / code-coverage/pluginThe overall coverage remains at 96%, unchanged from the branch. TypeScript / code-coverage/cliThe overall coverage in the branch remains at 77%, unchanged from the branch. Show a code coverage summary of the most impacted files.
Updated |
E2E Advisor RecommendationRequired E2E: Dispatch hint: Full advisor summaryE2E Recommendation AdvisorBase: Required E2E
Optional E2E
New E2E recommendations
Dispatch hint
|
E2E Target RecommendationRequired E2E targets: Dispatch required E2E targets:
Full E2E target advisor summaryE2E Target AdvisorBase: Required E2E targets
Optional E2E targets
Relevant changed files
|
PR Review Advisor (Nemotron Ultra) — Changes requestedMerge posture: Do not merge yet Action checklist
Findings index
🚨 Required before mergeAddress these before merging unless a maintainer explicitly overrides the advisor with rationale.
|
PR Review Advisor — Changes requestedMerge posture: Do not merge yet Action checklist
Findings index
Review findings by urgency: 0 required fixes, 1 item to resolve/justify, 1 in-scope improvement
|
… entrypoint Move the pending-reservation removal guard out of the onboard.ts entrypoint into sandbox-lifecycle.removeSandboxUnlessSessionReservation so the codebase-growth guardrail stays satisfied, and assert the new reservationSessionId stamp in the provider-inference route reservation tests. Signed-off-by: Tinson Lai <tinsonl@nvidia.com>
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@src/lib/onboard/machine/handlers/provider-inference.test.ts`:
- Line 386: Update the affected tests in the provider-inference scenarios to
capture the active session ID used by each scenario and assert that exact value
in the reserveRoute payload, replacing expect.any(String) at both assertions.
Use the existing session setup or fixture symbol that represents the active
session so stale or mismatched IDs fail the test.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Enterprise
Run ID: e124bae7-71a3-40be-8cd2-54b1a240cb03
📒 Files selected for processing (3)
src/lib/onboard.tssrc/lib/onboard/machine/handlers/provider-inference.test.tssrc/lib/onboard/sandbox-lifecycle.ts
🚧 Files skipped from review as they are similar to previous changes (1)
- src/lib/onboard.ts
…tion Signed-off-by: Tinson Lai <tinsonl@nvidia.com>
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@src/lib/onboard/machine/handlers/provider-inference.test.ts`:
- Line 60: Replace the remaining weak expect.any(String) assertions for
reservationSessionId in the provider inference tests with assertions against the
concrete expected session ID, following the already-fixed rebuiltSession
scenarios around the calls.complete mocks. Update every listed scenario so the
expected value is the correct session ID returned or threaded through that test,
preserving the ownership contract.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Enterprise
Run ID: 8855dcb2-2b1d-4691-bfef-e8993d6171ac
📒 Files selected for processing (4)
src/lib/onboard/machine/handlers/provider-inference.test.tssrc/lib/onboard/machine/handlers/provider-inference.tssrc/lib/onboard/setup-inference-route-containment.test.tssrc/lib/onboard/setup-inference.ts
cv
left a comment
There was a problem hiding this comment.
Reviewed exact head 0642e00dd. The session-owned reservation design is sound and supplies the primitives #6634 needs, but this head is not merge-ready:
-
Fix the source-related shard failure. Run 29086449236 shard 3 fails
src/lib/onboard/machine/core-flow-phases.test.ts:355because the expectedsetupInferenceoptions omit the newly correctreservationSessionId. Update the assertion with the exact session ID. (Shard 4's MCP status timeout is unrelated and can be rerun after the source fix.) -
Pin ownership behavior precisely. Replace the remaining
expect.any(String)session-ID assertions with the concrete expected ID. Add caller-level negative coverage proving foreign-session and unstamped pending reservations are removed during recreate, plus a positive ownership-transfer test when a new session successfully retargets the reservation. -
Sequence #6634 explicitly. Landing these helpers alone is insufficient: #6634 must later accept either a fully registered row or a pending row owned by the active session, rather than
Boolean(registry.getSandbox(name)).
After the test changes, sync current main, refresh the advisors, and run the required exact-head targets from E2E advisor run 29086449243: cloud-onboard, inference-routing, network-policy, onboard-repair, and onboard-resume.
No production security defect was found; this hold is correctness coverage, a real failing assertion, and exact-head evidence.
Signed-off-by: Charan Jagwani <cjagwani@nvidia.com>
Signed-off-by: Charan Jagwani <cjagwani@nvidia.com>
E2E Target Results — ✅ All requested jobs passedRun: 29110826642
|
Superseded at exact head fd0249d: the stale assertion, concrete session IDs, foreign and unstamped reservation cleanup, ownership transfer, current-main sync, ordinary CI, and all five required exact-head live jobs are now addressed. Trusted advisor posture remains a separate gate.
## Summary Release-prep documentation for **v0.0.80**. Adds the `## v0.0.80` section to `docs/about/release-notes.mdx` summarizing user-facing changes since v0.0.79, each bullet linking to the relevant deeper page. Produced via `nemoclaw-contributor-update-docs` (pre-tag path): scanned `v0.0.79..HEAD`, applied the docs skip list (no violations), and confirmed the 8 commits that already shipped in-PR docs are complete. No new pages needed. ## Source summary - #6507 -> `docs/about/release-notes.mdx`: Hermes v0.18 + Slack Block Kit (rich rendering, digest-pinned base image). - #6584 / #6616 -> `docs/about/release-notes.mdx`: host-local OpenRouter runtime attribution adapter (port `11437`, `NEMOCLAW_OPENROUTER_RUNTIME_ADAPTER_PORT`) and native Deep Agents `openrouter` provider. - #6210 / #6292 -> `docs/about/release-notes.mdx`: host corporate proxy CA import into sandbox trust (`NEMOCLAW_CORPORATE_CA_BUNDLE`, `NEMOCLAW_CORPORATE_CA_IMPORT`). - #6624 / #6623 / #6656 -> `docs/about/release-notes.mdx`: release-matched base-image selection, surfaced cluster-image build diagnostics, preserved Nemotron profile registration. - #6629 / #6637 -> `docs/about/release-notes.mdx`: bare `connect` default-sandbox behavior and route-probe hardening. - #6634 / #6626 / #6596 / #5569 / #6610 / #6655 -> `docs/about/release-notes.mdx`: onboarding/recovery preservation, stale-gateway-PID fix, installer backup message, vLLM label on managed platforms. - #6578 / #5670 -> `docs/about/release-notes.mdx`: automatic Hermes light terminal skin and non-interactive `npx` MCP server startup. ## Verification `npm run docs`: 0 errors, all internal links resolve (2 pre-existing hidden-page warnings). `_build/` variants for OpenClaw, Hermes, and Deep Agents all regenerate with the v0.0.80 section. Signed-off-by: Prekshi Vyas <prekshiv@nvidia.com> 🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Documentation** * Added release notes for v0.0.80. * Documented Hermes upgrades, including Slack Block Kit rendering. * Added details on OpenRouter traffic routing and attribution headers. * Documented improved proxy certificate handling and sandbox reliability. * Highlighted enhanced connection defaults, route-probing safeguards, onboarding recovery, and terminal/MCP startup behavior. * Added references to relevant user-guide documentation. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Signed-off-by: Prekshi Vyas <prekshiv@nvidia.com> Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…te (NVIDIA#6626) <!-- markdownlint-disable MD041 --> ## Summary `onboard --resume` still failed with `sandbox route reservation '<name>' disappeared while onboarding was in progress` after PR NVIDIA#6572, but only when an interrupted first run left a partial sandbox live on the gateway (reproduced on DGX Spark). This preserves the current onboard session's pending route reservation through the not-ready recreate so the resumed run can recover. ## Related Issue Fixes NVIDIA#6562 Same root cause as NVIDIA#6563 (closed, co-fixed by NVIDIA#6572). Release-safe groundwork for the NVIDIA#6228 checkpoint refactor and NVIDIA#6492 atomic registry/gateway work; it does not close their acceptance criteria. ## Changes - `state/registry.ts`: add `reservationSessionId` to the sandbox row, stamp it in `reserveSandboxInferenceRoute`, and add `isPendingReservationForSession` to distinguish the active session's reservation from an abandoned one. - `onboard/machine/handlers/provider-inference.ts`: stamp the reservation with the current onboard `sessionId` (persisted, so it survives `--resume`). - `onboard.ts`: in the not-ready recreate path, skip the pre-rebuild registry removal for the current session's pending reservation. PR NVIDIA#6572 guarded only the `!liveExists` tool-disclosure prune; this covers the `liveExists` (partial-sandbox) path that reproduced on slower hosts. Abandoned reservations from other sessions still prune, and the not-ready gateway sandbox is still deleted before the rebuild. - Tests: registry ownership/stamping coverage and a subprocess fault-injection test asserting the reservation row survives a not-ready recreate. ## 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: - [ ] Docs updated for user-facing behavior changes - [x] Docs not applicable — justification: internal onboarding lifecycle repair; no user-facing behavior, CLI surface, or configuration change. - [x] Sensitive paths changed (security, policy, credentials, preflight, onboarding, inference, runner, sandbox, or messaging) - [ ] Sensitive-path review completed or maintainer-approved waiver recorded — reviewer/approval link/justification: - [ ] Non-success, skipped, or missing CI check accepted by maintainer — check name, approval link, and follow-up issue: ## Verification - [x] 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 - [x] Targeted behavior tests pass for the current change set, or tests are marked not applicable above — command/result: `vitest run` — `registry-route-reservation` 5/5, `onboard-reservation-recreate` 1/1, full `onboard.test.ts` 66/66, and `tool-disclosure-flow` + `sandbox-lifecycle` + `provider-inference-route-containment` 15/15. - [ ] 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) Note on hooks: `pre-commit` and `commit-msg` passed. `pre-push` (and `npm run check:diff`) fail only on pre-existing environment gaps in the local worktree — an unbuilt `dist/` (package-contract and e2e-live imports) and a missing `typebox` dependency (`tools/pr-review-advisor`) — neither of which touches this diff. `npm run typecheck:cli` reports zero errors in the changed files; CI runs the authoritative full-environment checks. --- Signed-off-by: Tinson Lai <tinsonl@nvidia.com> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Bug Fixes** * Preserved pending sandbox route reservations during sandbox recreation when owned by the active onboarding session. * Prevented cleanup from removing a sandbox when its pending reservation is reserved for the current session. * Added session-aware pending reservation ownership tracking, including support for stamping reservation ownership IDs onto reservations. * **Tests** * Added integration coverage for reservation-safe sandbox recreation across multiple reservation ownership scenarios. * Expanded unit/integration tests to verify reservation session stamping and correct ownership transfer behavior. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Signed-off-by: Tinson Lai <tinsonl@nvidia.com> Signed-off-by: Charan Jagwani <cjagwani@nvidia.com> Co-authored-by: Charan Jagwani <cjagwani@nvidia.com>
## Summary Release-prep documentation for **v0.0.80**. Adds the `## v0.0.80` section to `docs/about/release-notes.mdx` summarizing user-facing changes since v0.0.79, each bullet linking to the relevant deeper page. Produced via `nemoclaw-contributor-update-docs` (pre-tag path): scanned `v0.0.79..HEAD`, applied the docs skip list (no violations), and confirmed the 8 commits that already shipped in-PR docs are complete. No new pages needed. ## Source summary - NVIDIA#6507 -> `docs/about/release-notes.mdx`: Hermes v0.18 + Slack Block Kit (rich rendering, digest-pinned base image). - NVIDIA#6584 / NVIDIA#6616 -> `docs/about/release-notes.mdx`: host-local OpenRouter runtime attribution adapter (port `11437`, `NEMOCLAW_OPENROUTER_RUNTIME_ADAPTER_PORT`) and native Deep Agents `openrouter` provider. - NVIDIA#6210 / NVIDIA#6292 -> `docs/about/release-notes.mdx`: host corporate proxy CA import into sandbox trust (`NEMOCLAW_CORPORATE_CA_BUNDLE`, `NEMOCLAW_CORPORATE_CA_IMPORT`). - NVIDIA#6624 / NVIDIA#6623 / NVIDIA#6656 -> `docs/about/release-notes.mdx`: release-matched base-image selection, surfaced cluster-image build diagnostics, preserved Nemotron profile registration. - NVIDIA#6629 / NVIDIA#6637 -> `docs/about/release-notes.mdx`: bare `connect` default-sandbox behavior and route-probe hardening. - NVIDIA#6634 / NVIDIA#6626 / NVIDIA#6596 / NVIDIA#5569 / NVIDIA#6610 / NVIDIA#6655 -> `docs/about/release-notes.mdx`: onboarding/recovery preservation, stale-gateway-PID fix, installer backup message, vLLM label on managed platforms. - NVIDIA#6578 / NVIDIA#5670 -> `docs/about/release-notes.mdx`: automatic Hermes light terminal skin and non-interactive `npx` MCP server startup. ## Verification `npm run docs`: 0 errors, all internal links resolve (2 pre-existing hidden-page warnings). `_build/` variants for OpenClaw, Hermes, and Deep Agents all regenerate with the v0.0.80 section. Signed-off-by: Prekshi Vyas <prekshiv@nvidia.com> 🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Documentation** * Added release notes for v0.0.80. * Documented Hermes upgrades, including Slack Block Kit rendering. * Added details on OpenRouter traffic routing and attribution headers. * Documented improved proxy certificate handling and sandbox reliability. * Highlighted enhanced connection defaults, route-probing safeguards, onboarding recovery, and terminal/MCP startup behavior. * Added references to relevant user-guide documentation. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Signed-off-by: Prekshi Vyas <prekshiv@nvidia.com> Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
<!-- markdownlint-disable MD041 --> ## Summary Resume onboarding can skip provider setup after the provider/model are already recorded but before sandbox setup is complete. This change reserves or repairs the sandbox inference route during that resume path so the later sandbox profile step does not fail with `sandbox route reservation '<name>' disappeared while onboarding was in progress`. ## Related Issue Fixes #6562 ## Changes - Reserve the sandbox inference route when `nemoclaw onboard --resume` skips already-ready inference while sandbox setup is still incomplete. - Apply the repair to both routed and direct-compatible provider branches while preserving complete-sandbox resume behavior. - Add regression coverage for the reported cancellation-after-sandbox-name resume path and the already-ready inference resume path. What each PR/fix does: - #6572: protects an existing `pendingRouteReservation` from being deleted by stale-entry cleanup when no live sandbox exists. It handles "reservation existed, cleanup would remove it." - #6626: protects an existing session-owned pending reservation during a NotReady sandbox recreate. It handles "reservation existed, recreate would remove it." - This fix: creates/repairs the reservation when resume skips inference before sandbox setup has a complete sandbox. It handles your repro: "reservation was missing because resume skipped the step that normally creates it." ## 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: - [ ] Docs updated for user-facing behavior changes - [x] Docs not applicable — justification: The public `--resume` contract is unchanged; this repairs internal route reservation state. A docs review found no documentation updates needed. - [x] Sensitive paths changed (security, policy, credentials, preflight, onboarding, inference, runner, sandbox, or messaging) - [ ] Sensitive-path review completed or maintainer-approved waiver recorded — reviewer/approval link/justification: - [ ] Non-success, skipped, or missing CI check accepted by maintainer — check name, approval link, and follow-up issue: ## Verification - [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 - `git push -u origin HEAD` ran pre-push TypeScript checks and passed. - `npm run check:diff` passed in a temporary clean worktree after `npm run build:cli` generated the required `dist/` artifacts. The main checkout has ignored local `worktrees/` directories that otherwise make the source-shape scanner inspect unrelated files. - [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 cli src/lib/onboard/machine/handlers/provider-inference.test.ts` — passed (35 tests) - `npx vitest run --project cli src/lib/onboard/machine/handlers/provider-inference-recovery-gating.test.ts src/lib/onboard/machine/handlers/provider-inference-route-containment.test.ts src/lib/state/registry-route-reservation.test.ts src/lib/onboard/setup-inference-route-containment.test.ts src/lib/onboard/sandbox-lifecycle.test.ts` — passed (38 tests) - `npm run typecheck:cli` — passed - `npm run build:cli` — 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) --- Signed-off-by: San Dang <sdang@nvidia.com> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Bug Fixes** * Improved resume reliability during provider inference by correcting which sandbox route is reserved, even when inference is already ready or provider reselection is required. * Ensured no sandbox route is reserved when resuming after the sandbox step is already completed. * Updated routed-inference reservation behavior to match the expected host-alias endpoint details. * **Tests** * Added coverage to validate the resumed provider inference reservation flow and updated related router reconciliation expectations. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Signed-off-by: San Dang <sdang@nvidia.com>
Summary
onboard --resumestill failed withsandbox route reservation '<name>' disappeared while onboarding was in progressafter PR #6572, but only when an interrupted first run left a partial sandbox live on the gateway (reproduced on DGX Spark). This preserves the current onboard session's pending route reservation through the not-ready recreate so the resumed run can recover.Related Issue
Fixes #6562
Same root cause as #6563 (closed, co-fixed by #6572). Release-safe groundwork for the #6228 checkpoint refactor and #6492 atomic registry/gateway work; it does not close their acceptance criteria.
Changes
state/registry.ts: addreservationSessionIdto the sandbox row, stamp it inreserveSandboxInferenceRoute, and addisPendingReservationForSessionto distinguish the active session's reservation from an abandoned one.onboard/machine/handlers/provider-inference.ts: stamp the reservation with the current onboardsessionId(persisted, so it survives--resume).onboard.ts: in the not-ready recreate path, skip the pre-rebuild registry removal for the current session's pending reservation. PR fix(onboard): preserve pending route reservation across resume #6572 guarded only the!liveExiststool-disclosure prune; this covers theliveExists(partial-sandbox) path that reproduced on slower hosts. Abandoned reservations from other sessions still prune, and the not-ready gateway sandbox is still deleted before the rebuild.Type of Change
Quality Gates
Verification
Verifiedin GitHubpre-commit,commit-msg, andpre-pushhooks passed, ornpm run check:diffpassed when hooks were skipped or unavailablevitest run—registry-route-reservation5/5,onboard-reservation-recreate1/1, fullonboard.test.ts66/66, andtool-disclosure-flow+sandbox-lifecycle+provider-inference-route-containment15/15.npm testfor broad runtime/test-harness changes;npm run checkfor repo-wide validation/coverage changes — command/result:npm run docsbuilds without warnings (doc changes only)Note on hooks:
pre-commitandcommit-msgpassed.pre-push(andnpm run check:diff) fail only on pre-existing environment gaps in the local worktree — an unbuiltdist/(package-contract and e2e-live imports) and a missingtypeboxdependency (tools/pr-review-advisor) — neither of which touches this diff.npm run typecheck:clireports zero errors in the changed files; CI runs the authoritative full-environment checks.Signed-off-by: Tinson Lai tinsonl@nvidia.com
Summary by CodeRabbit
Bug Fixes
Tests