Skip to content

fix(onboard): honor extended validation timeout budgets - #4449

Merged
cv merged 3 commits into
mainfrom
fix/onboard-validation-timeout-budget
May 29, 2026
Merged

fix(onboard): honor extended validation timeout budgets#4449
cv merged 3 commits into
mainfrom
fix/onboard-validation-timeout-budget

Conversation

@ericksoa

@ericksoa ericksoa commented May 28, 2026

Copy link
Copy Markdown
Contributor

Summary

Increase NemoClaw onboarding validation tolerance for slow NVIDIA Endpoints model probes without broadening the default 15s probe path for every model. This targets the observed timeout when validating qwen/qwen3.5-397b-a17b and deepseek-ai/deepseek-v4-flash from build.nvidia.com.

Related Issue

None filed yet. Thread context: NVIDIA Endpoints chat-completions probe times out at 15s during nemoclaw onboard, while the same request succeeds with curl --max-time 300.

Changes

  • Derive the curl subprocess timeout from --max-time so extended curl budgets are not killed early by Node's wrapper timeout.
  • Add a NEMOCLAW_ONBOARD_VALIDATION_TIMEOUT_SECONDS floor for non-interactive/on-call validation override.
  • Give the two reported NVIDIA Endpoint models a 300s onboard validation budget while preserving existing generic/Kimi/DeepSeek Pro budgets.
  • Keep timeout retry behavior model-aware so retries do not fall back to the generic 15s base for slow models.

Release Target / Blast Radius

Targeting v0.0.55, pending blast-radius review. This is intentionally a draft PR until we confirm the widened validation path is acceptable for onboard UX and CI runtime.

Expected blast radius is limited to onboarding-time inference validation and shared curl probe process timeouts. Runtime inference routing is unchanged; model payloads are unchanged except for existing model-specific paths.

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)

Verification

  • npx prek run --all-files passes
  • npm test passes
  • Tests added or updated for new or changed behavior
  • No secrets, API keys, or credentials committed
  • Docs updated for user-facing behavior changes
  • 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)

Focused verification run:

  • npm run build:cli
  • npm run typecheck:cli
  • npx vitest run src/lib/adapters/http/probe.test.ts src/lib/inference/onboard-probes.test.ts test/wsl2-probe-timeout.test.ts
  • npx vitest run test/onboard-selection.test.ts -t "NVIDIA Endpoints"
  • git diff --check

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

Summary by CodeRabbit

  • New Features

    • Env var to configure inference validation timeout
    • Extended validation budget for select NVIDIA models
    • Explicit probe timeout override support
  • Improvements

    • More accurate and consistent timeout computation for curl-based probes
    • Retry logic now uses derived timing values for better reliability
  • Tests

    • Added tests covering inferred timeout, repeated max-time handling, and explicit timeout override

Review Change Stack

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

copy-pr-bot Bot commented May 28, 2026

Copy link
Copy Markdown

Auto-sync is disabled for draft pull requests in this repository. Workflows must be run manually.

Contributors can view more details about this message here.

@coderabbitai

coderabbitai Bot commented May 28, 2026

Copy link
Copy Markdown
Contributor

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: ba3b9fcb-c28e-474e-ad92-62e348ee77b7

📥 Commits

Reviewing files that changed from the base of the PR and between 2c2c84c and e143747.

📒 Files selected for processing (2)
  • src/lib/adapters/http/probe.test.ts
  • src/lib/adapters/http/probe.ts
🚧 Files skipped from review as they are similar to previous changes (2)
  • src/lib/adapters/http/probe.test.ts
  • src/lib/adapters/http/probe.ts

📝 Walkthrough

Walkthrough

Derives probe process timeouts from curl --max-time (with slack) or explicit timeoutMs, applies resolved timeouts to three curl-based probes, and adds an env-driven onboarding validation timeout override plus model-specific extended validation budgets.

Changes

Curl Timeout Resolution and Validation Budget Configuration

Layer / File(s) Summary
Timeout Resolution Mechanism
src/lib/adapters/http/probe.ts, src/lib/adapters/http/probe.test.ts
Adds constants and helper to parse curl --max-time and compute an effective process timeout (with slack) and tests verifying derived timeout, repeated-flag behavior, and explicit timeoutMs override.
Apply Resolved Timeouts to Probe Implementations
src/lib/adapters/http/probe.ts
Updates base curl probe, chat-completions streaming probe, and streaming-event probe to pass the resolved timeout to spawnSyncImpl and report process.timeout_ms from the resolved value.
Validation Timeout Configuration and Overrides
src/lib/inference/onboard-probes.ts, src/lib/inference/onboard-probes.test.ts
Adds NEMOCLAW_ONBOARD_VALIDATION_TIMEOUT_SECONDS and extended-NVIDIA-model list; refactors provider-specific validation curl-args to use a shared override helper; tests assert env override and extended budgets for slow models.
Chat Completions Timing Centralization
src/lib/inference/onboard-probes.ts
Introduces getChatCompletionsProbeTimingArgs and needsExtendedNvidiaEndpointValidationBudget, ensures tool-calling and non-DeepSeek probe paths (including retries) use model-aware timing and pass explicit timeoutMs to runCurlProbe.

🎯 3 (Moderate) | ⏱️ ~25 minutes

  • cv

"🐰
I parse the curl's whispered time,
I add a little slack in line,
Env says when the budget's wide,
Each probe now waits with measured pride,
Hop, timeout met — the warren's fine!"

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 4.17% 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 PR title clearly and concisely summarizes the main objective: fixing the onboarding validation timeout budget handling to honor extended timeouts for slow NVIDIA models.
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.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ 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 fix/onboard-validation-timeout-budget

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 ESLint

If the error stems from missing dependencies, add them to the package.json file. For unrecoverable errors (e.g., due to private dependencies), disable the tool in the CodeRabbit configuration.

ESLint skipped: no ESLint configuration detected in root package.json. To enable, add eslint to devDependencies.


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

@github-actions

github-actions Bot commented May 28, 2026

Copy link
Copy Markdown
Contributor

E2E Advisor Recommendation

Required E2E: cloud-onboard-e2e, cloud-inference-e2e, inference-routing-e2e
Optional E2E: kimi-inference-compat-e2e, onboard-inference-smoke-e2e, onboard-negative-paths-e2e

Dispatch hint: cloud-onboard-e2e,cloud-inference-e2e,inference-routing-e2e

Auto-dispatched E2E: cloud-onboard-e2e, cloud-inference-e2e, inference-routing-e2e via nightly-e2e.yaml at e1437478c387abc8f1bee19993f24d023373a07fnightly run

Workflow run

Full advisor summary

E2E Recommendation Advisor

Base: origin/main
Head: HEAD
Confidence: high

Required E2E

  • cloud-onboard-e2e (high): Validates the end-to-end cloud onboarding path with a real NVIDIA API key, including provider/model validation and inference.local health after onboarding. This is the highest-signal existing E2E for changes to onboard probe timing and validation success/failure behavior.
  • cloud-inference-e2e (medium): Exercises live inference through sandbox → gateway → NVIDIA cloud API → response. Required because curl probe timeout changes can affect the runtime inference route that users hit after onboarding.
  • inference-routing-e2e (medium): Covers inference routing, credential isolation, invalid-key classification, and unreachable endpoint classification. These are adjacent to probe failure summarization and transport/timeout handling changed in this PR.

Optional E2E

  • kimi-inference-compat-e2e (medium): Useful because the PR touches Kimi validation timing helpers and chat-completions probe argument generation. The test is hermetic for Kimi-compatible onboarding and runtime behavior, but the default Kimi timing behavior is largely preserved, so it is not merge-blocking.
  • onboard-inference-smoke-e2e (low): Useful regression guard that onboard does not report success until a configured inference route has served a real request. It is adjacent to onboard probe behavior, but it is a simulated regression test rather than the primary live-provider validation path for this PR.
  • onboard-negative-paths-e2e (high): Provides additional coverage for onboard failure handling, invalid credentials, and live onboard edge cases. Optional because cloud-onboard-e2e plus inference-routing-e2e are more directly targeted to the probe timing changes.

New E2E recommendations

  • slow NVIDIA Build model validation budgets (medium): The PR adds special 300-second validation budgets for qwen/qwen3.5-397b-a17b and deepseek-ai/deepseek-v4-flash, but existing E2E jobs appear to default to nvidia/nemotron-3-super-120b-a12b and do not explicitly verify these slow-model onboarding paths.
    • Suggested test: Add a targeted cloud onboard validation scenario that sets NEMOCLAW_CLOUD_EXPERIMENTAL_MODEL to one of the extended-budget NVIDIA Build models and asserts onboarding waits long enough for validation without the Node process wrapper killing curl early.
  • onboard validation timeout override (medium): The new NEMOCLAW_ONBOARD_VALIDATION_TIMEOUT_SECONDS environment override is unit-tested, but there is no existing E2E that proves the override works through the actual non-interactive onboard flow.
    • Suggested test: Add a lightweight hermetic compatible-endpoint onboard E2E that delays responses beyond the default validation budget, sets NEMOCLAW_ONBOARD_VALIDATION_TIMEOUT_SECONDS, and verifies onboard succeeds only when the override is present.

Dispatch hint

  • Workflow: .github/workflows/nightly-e2e.yaml
  • jobs input: cloud-onboard-e2e,cloud-inference-e2e,inference-routing-e2e

@github-actions

github-actions Bot commented May 28, 2026

Copy link
Copy Markdown
Contributor

E2E Scenario Advisor Recommendation

Required scenario E2E: None
Optional scenario E2E: None

Workflow run

Full scenario advisor summary

E2E Scenario Advisor

Base: origin/main
Head: HEAD
Confidence: high

Required scenario E2E

  • None. No scenario workflow, scenario metadata, scenario runtime, or validation-suite files changed.

Optional scenario E2E

  • None.

Relevant changed files

  • None.

@github-actions

github-actions Bot commented May 28, 2026

Copy link
Copy Markdown
Contributor

PR Review Advisor

Findings: 0 needs attention, 6 worth checking, 1 nice ideas
Since last review: 0 prior items resolved, 5 still apply, 0 new items found

Review findings

🛠️ Needs attention

  • None.

🔎 Worth checking

  • Source-of-truth review needed: NEMOCLAW_ONBOARD_VALIDATION_TIMEOUT_SECONDS override: The advisor marked localized patch analysis as needs_followup.
    • Recommendation: Identify the invalid state, source boundary, source-fix constraint, regression test, and removal condition before merging the localized behavior.
    • Evidence: withValidationMaxTimeOverride() reads ONBOARD_VALIDATION_TIMEOUT_ENV, rounds Number(raw), and raises --max-time when the override exceeds the current max.
  • Source-of-truth review needed: Extended NVIDIA endpoint model budget allowlist: The advisor marked localized patch analysis as needs_followup.
    • Recommendation: Identify the invalid state, source boundary, source-fix constraint, regression test, and removal condition before merging the localized behavior.
    • Evidence: EXTENDED_NVIDIA_ENDPOINT_VALIDATION_MODELS contains qwen/qwen3.5-397b-a17b and deepseek-ai/deepseek-v4-flash.
  • Source-of-truth review needed: Model-aware timeout retry path: The advisor marked localized patch analysis as needs_followup.
    • Recommendation: Identify the invalid state, source boundary, source-fix constraint, regression test, and removal condition before merging the localized behavior.
    • Evidence: The retry path computes baseArgs from getChatCompletionsProbeTimingArgs(model, platformOptions), doubles numeric args, and builds the retry curl request.
  • Bound and document NEMOCLAW_ONBOARD_VALIDATION_TIMEOUT_SECONDS (src/lib/inference/onboard-probes.ts:215): The new validation-timeout environment override accepts any positive finite value, rounds it up, and feeds it into curl --max-time and the Node process wrapper timeout. Because validation probes can retry, an accidentally inherited or excessive value can make non-interactive onboarding or smoke validation stall for an impractically long time in an inference/network path.
    • Recommendation: Clamp the override to a documented maximum, keep the existing floor-only semantics if intended, document the env var as supported behavior, and add tests for invalid, zero, negative, decimal, exponential, and excessive values.
    • Evidence: withValidationMaxTimeOverride() reads process.env[ONBOARD_VALIDATION_TIMEOUT_ENV], uses Math.ceil(Number(raw)), only requires Number.isFinite(...) && > 0, and replaces --max-time when the override exceeds the current budget. getProbeProcessTimeoutMs() and the HTTP adapter derive process timeouts from that curl budget.
  • Cover slow-model retry timeout budgets (src/lib/inference/onboard-probes.ts:740): The PR claims timeout retry behavior remains model-aware so slow models do not fall back to the generic 15s base. The implementation now uses getChatCompletionsProbeTimingArgs(model, platformOptions) in the retry path, but the added tests only assert initial curl argument construction for the new slow models.
    • Recommendation: Add a fake-curl retry test for at least one of qwen/qwen3.5-397b-a17b or deepseek-ai/deepseek-v4-flash that captures the retry request and asserts the doubled retry args are based on the 300s model-specific budget, not the generic validation budget.
    • Evidence: The new tests assert getChatCompletionsProbeCurlArgs() returns --max-time 300 for the two slow models. Existing retry tests exercise test-model or nvidia/nemotron-3-super-120b-a12b, not either new extended-budget model.
  • Document the source of truth for the extended NVIDIA model budget allowlist (src/lib/inference/onboard-probes.ts:31): The hardcoded EXTENDED_NVIDIA_ENDPOINT_VALIDATION_MODELS allowlist is localized compatibility policy for hosted model latency, but the code does not explain the ownership boundary, update criteria, why the upstream/source behavior cannot be fixed here, or when the special case can be removed.
    • Recommendation: Add an ownership/update/removal comment near the allowlist, or move validation timing policy into a typed helper with focused tests. Include the invalid state being handled and the criteria for adding/removing models from this 300s path.
    • Evidence: EXTENDED_NVIDIA_ENDPOINT_VALIDATION_MODELS contains qwen/qwen3.5-397b-a17b and deepseek-ai/deepseek-v4-flash, and getChatCompletionsProbeTimingArgs() routes matching model IDs to getExtendedNvidiaEndpointValidationProbeCurlArgs().

🌱 Nice ideas

  • Extract validation timing policy from the ts-nocheck onboarding module (src/lib/inference/onboard-probes.ts:1): This PR adds more model-specific timing policy and env override behavior to an already large // @ts-nocheck module. The deterministic monolith check also shows all four changed files grew, including onboard-probes.ts by 41 lines.
    • Recommendation: Consider extracting validation timing policy, including the env override parser and model-specific budgets, into a typed helper module with focused unit tests. If extraction is not practical in this PR, add comments that make the policy boundaries explicit.
    • Evidence: src/lib/inference/onboard-probes.ts starts with // @ts-nocheck and now owns ONBOARD_VALIDATION_TIMEOUT_ENV, EXTENDED_NVIDIA_ENDPOINT_VALIDATION_MODELS, withValidationMaxTimeOverride(), getExtendedNvidiaEndpointValidationProbeCurlArgs(), and retry timing selection.
Since last review details

Current findings:

  • Source-of-truth review needed: NEMOCLAW_ONBOARD_VALIDATION_TIMEOUT_SECONDS override: The advisor marked localized patch analysis as needs_followup.
    • Recommendation: Identify the invalid state, source boundary, source-fix constraint, regression test, and removal condition before merging the localized behavior.
    • Evidence: withValidationMaxTimeOverride() reads ONBOARD_VALIDATION_TIMEOUT_ENV, rounds Number(raw), and raises --max-time when the override exceeds the current max.
  • Source-of-truth review needed: Extended NVIDIA endpoint model budget allowlist: The advisor marked localized patch analysis as needs_followup.
    • Recommendation: Identify the invalid state, source boundary, source-fix constraint, regression test, and removal condition before merging the localized behavior.
    • Evidence: EXTENDED_NVIDIA_ENDPOINT_VALIDATION_MODELS contains qwen/qwen3.5-397b-a17b and deepseek-ai/deepseek-v4-flash.
  • Source-of-truth review needed: Model-aware timeout retry path: The advisor marked localized patch analysis as needs_followup.
    • Recommendation: Identify the invalid state, source boundary, source-fix constraint, regression test, and removal condition before merging the localized behavior.
    • Evidence: The retry path computes baseArgs from getChatCompletionsProbeTimingArgs(model, platformOptions), doubles numeric args, and builds the retry curl request.
  • Bound and document NEMOCLAW_ONBOARD_VALIDATION_TIMEOUT_SECONDS (src/lib/inference/onboard-probes.ts:215): The new validation-timeout environment override accepts any positive finite value, rounds it up, and feeds it into curl --max-time and the Node process wrapper timeout. Because validation probes can retry, an accidentally inherited or excessive value can make non-interactive onboarding or smoke validation stall for an impractically long time in an inference/network path.
    • Recommendation: Clamp the override to a documented maximum, keep the existing floor-only semantics if intended, document the env var as supported behavior, and add tests for invalid, zero, negative, decimal, exponential, and excessive values.
    • Evidence: withValidationMaxTimeOverride() reads process.env[ONBOARD_VALIDATION_TIMEOUT_ENV], uses Math.ceil(Number(raw)), only requires Number.isFinite(...) && > 0, and replaces --max-time when the override exceeds the current budget. getProbeProcessTimeoutMs() and the HTTP adapter derive process timeouts from that curl budget.
  • Cover slow-model retry timeout budgets (src/lib/inference/onboard-probes.ts:740): The PR claims timeout retry behavior remains model-aware so slow models do not fall back to the generic 15s base. The implementation now uses getChatCompletionsProbeTimingArgs(model, platformOptions) in the retry path, but the added tests only assert initial curl argument construction for the new slow models.
    • Recommendation: Add a fake-curl retry test for at least one of qwen/qwen3.5-397b-a17b or deepseek-ai/deepseek-v4-flash that captures the retry request and asserts the doubled retry args are based on the 300s model-specific budget, not the generic validation budget.
    • Evidence: The new tests assert getChatCompletionsProbeCurlArgs() returns --max-time 300 for the two slow models. Existing retry tests exercise test-model or nvidia/nemotron-3-super-120b-a12b, not either new extended-budget model.
  • Document the source of truth for the extended NVIDIA model budget allowlist (src/lib/inference/onboard-probes.ts:31): The hardcoded EXTENDED_NVIDIA_ENDPOINT_VALIDATION_MODELS allowlist is localized compatibility policy for hosted model latency, but the code does not explain the ownership boundary, update criteria, why the upstream/source behavior cannot be fixed here, or when the special case can be removed.
    • Recommendation: Add an ownership/update/removal comment near the allowlist, or move validation timing policy into a typed helper with focused tests. Include the invalid state being handled and the criteria for adding/removing models from this 300s path.
    • Evidence: EXTENDED_NVIDIA_ENDPOINT_VALIDATION_MODELS contains qwen/qwen3.5-397b-a17b and deepseek-ai/deepseek-v4-flash, and getChatCompletionsProbeTimingArgs() routes matching model IDs to getExtendedNvidiaEndpointValidationProbeCurlArgs().
  • Extract validation timing policy from the ts-nocheck onboarding module (src/lib/inference/onboard-probes.ts:1): This PR adds more model-specific timing policy and env override behavior to an already large // @ts-nocheck module. The deterministic monolith check also shows all four changed files grew, including onboard-probes.ts by 41 lines.
    • Recommendation: Consider extracting validation timing policy, including the env override parser and model-specific budgets, into a typed helper module with focused unit tests. If extraction is not practical in this PR, add comments that make the policy boundaries explicit.
    • Evidence: src/lib/inference/onboard-probes.ts starts with // @ts-nocheck and now owns ONBOARD_VALIDATION_TIMEOUT_ENV, EXTENDED_NVIDIA_ENDPOINT_VALIDATION_MODELS, withValidationMaxTimeOverride(), getExtendedNvidiaEndpointValidationProbeCurlArgs(), and retry timing selection.

Workflow run details

This is an automated advisory review. A human maintainer must make the final merge decision.

@ericksoa ericksoa added v0.0.55 and removed v0.0.54 labels May 28, 2026
@ericksoa ericksoa self-assigned this May 28, 2026
@ericksoa
ericksoa marked this pull request as ready for review May 28, 2026 18:11
@github-actions

Copy link
Copy Markdown
Contributor

Selective E2E Results — ✅ All requested jobs passed

Run: 26593178159
Target ref: 2c2c84c19b1869baebc8be8954bdbbc37fef71b0
Workflow ref: main
Requested jobs: all (no filter)
Summary: 8 passed, 0 failed, 2 skipped

Job Result
bedrock-runtime-compatible-anthropic-e2e ⚠️ cancelled
brave-search-e2e ✅ success
channels-add-remove-e2e ⚠️ cancelled
channels-stop-start-e2e ⚠️ cancelled
cloud-e2e ⚠️ cancelled
cloud-inference-e2e ⚠️ cancelled
cloud-onboard-e2e ⚠️ cancelled
credential-migration-e2e ⚠️ cancelled
credential-sanitization-e2e ⚠️ cancelled
device-auth-health-e2e ⚠️ cancelled
diagnostics-e2e ⚠️ cancelled
docs-validation-e2e ⚠️ cancelled
double-onboard-e2e ⚠️ cancelled
gpu-double-onboard-e2e ⏭️ skipped
gpu-e2e ⏭️ skipped
hermes-discord-e2e ✅ success
hermes-e2e ✅ success
hermes-inference-switch-e2e ⚠️ cancelled
hermes-onboard-security-posture-e2e ✅ success
hermes-root-entrypoint-smoke-e2e ✅ success
hermes-slack-e2e ⚠️ cancelled
inference-routing-e2e ⚠️ cancelled
issue-2478-crash-loop-recovery-e2e ⚠️ cancelled
issue-3600-gpu-proof-optional-e2e ✅ success
kimi-inference-compat-e2e ⚠️ cancelled
launchable-smoke-e2e ⚠️ cancelled
messaging-compatible-endpoint-e2e ⚠️ cancelled
messaging-providers-e2e ⚠️ cancelled
network-policy-e2e ⚠️ cancelled
onboard-negative-paths-e2e ⚠️ cancelled
onboard-repair-e2e ⚠️ cancelled
onboard-resume-e2e ⚠️ cancelled
openclaw-discord-pairing-e2e ⚠️ cancelled
openclaw-inference-switch-e2e ⚠️ cancelled
openclaw-onboard-security-posture-e2e ⚠️ cancelled
openclaw-slack-pairing-e2e ⚠️ cancelled
openclaw-tui-chat-correlation-e2e ⚠️ cancelled
openshell-gateway-upgrade-e2e ⚠️ cancelled
overlayfs-autofix-e2e ✅ success
rebuild-hermes-e2e ⚠️ cancelled
rebuild-hermes-stale-base-e2e ⚠️ cancelled
rebuild-openclaw-e2e ⚠️ cancelled
runtime-overrides-e2e ⚠️ cancelled
sandbox-operations-e2e ⚠️ cancelled
sandbox-survival-e2e ⚠️ cancelled
shields-config-e2e ⚠️ cancelled
skill-agent-e2e ⚠️ cancelled
snapshot-commands-e2e ⚠️ cancelled
state-backup-restore-e2e ⚠️ cancelled
telegram-injection-e2e ⚠️ cancelled
token-rotation-e2e ⚠️ cancelled
tunnel-lifecycle-e2e ⚠️ cancelled
upgrade-stale-sandbox-e2e ⚠️ cancelled
vm-driver-privileged-exec-routing-e2e ✅ success

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

Actionable comments posted: 2

🤖 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/adapters/http/probe.test.ts`:
- Around line 94-116: getCurlMaxTimeSeconds currently picks the first --max-time
occurrence which contradicts curl's behavior; update getCurlMaxTimeSeconds (in
src/lib/adapters/http/probe.ts) to parse the args and use the last repeated
--max-time value (falling back to default when absent) so the wrapper timeout
calculation is correct, then add a regression test in probe.test.ts that calls
runCurlProbe with duplicated flags (e.g., "--max-time", "15", "--max-time",
"120") and asserts the computed timeout uses the last value (expecting 125_000
ms when wrapper adds the extra buffer).

In `@src/lib/adapters/http/probe.ts`:
- Around line 75-87: getCurlMaxTimeSeconds currently returns on the first match,
but curl uses last-set-wins; update getCurlMaxTimeSeconds to scan all argv
entries and keep the last valid parsed value (handling both "--max-time"
followed by a value and "--max-time=<value>") instead of returning immediately,
then return that last valid number or null if none found; ensure you still
validate Number.isFinite(value) && value > 0 when storing the last seen value.
🪄 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: f5d3bb19-9557-4082-bdb0-3cb8e5314d54

📥 Commits

Reviewing files that changed from the base of the PR and between d3590c9 and 2c2c84c.

📒 Files selected for processing (4)
  • src/lib/adapters/http/probe.test.ts
  • src/lib/adapters/http/probe.ts
  • src/lib/inference/onboard-probes.test.ts
  • src/lib/inference/onboard-probes.ts

Comment thread src/lib/adapters/http/probe.test.ts
Comment thread src/lib/adapters/http/probe.ts Outdated
@github-actions

Copy link
Copy Markdown
Contributor

Selective E2E Results — ✅ All requested jobs passed

Run: 26593343487
Target ref: 2c2c84c19b1869baebc8be8954bdbbc37fef71b0
Workflow ref: main
Requested jobs: cloud-onboard-e2e,cloud-inference-e2e
Summary: 2 passed, 0 failed, 0 skipped

Job Result
cloud-inference-e2e ✅ success
cloud-onboard-e2e ✅ success

@ericksoa
ericksoa requested a review from cv May 28, 2026 19:13
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
@coderabbitai

coderabbitai Bot commented May 28, 2026

Copy link
Copy Markdown
Contributor

Actionable comments posted: 0

@github-actions

Copy link
Copy Markdown
Contributor

Selective E2E Results — ✅ All requested jobs passed

Run: 26596877131
Target ref: e1437478c387abc8f1bee19993f24d023373a07f
Workflow ref: main
Requested jobs: cloud-onboard-e2e,cloud-inference-e2e,inference-routing-e2e
Summary: 3 passed, 0 failed, 0 skipped

Job Result
cloud-inference-e2e ✅ success
cloud-onboard-e2e ✅ success
inference-routing-e2e ✅ success

@cv
cv merged commit 63c7ad8 into main May 29, 2026
30 checks passed
@cv
cv deleted the fix/onboard-validation-timeout-budget branch May 29, 2026 15:24
@wscurran wscurran added area: inference Inference routing, serving, model selection, or outputs bug-fix PR fixes a bug or regression feature PR adds or expands user-visible functionality and removed fix labels Jun 3, 2026
@wscurran wscurran removed the feature PR adds or expands user-visible functionality label Jun 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: inference Inference routing, serving, model selection, or outputs bug-fix PR fixes a bug or regression

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants