Skip to content

fix(onboard): preserve reasoning capability state - #7574

Merged
cv merged 28 commits into
NVIDIA:mainfrom
HOYALIM:codex/issue-7570-reasoning-propagation
Aug 4, 2026
Merged

fix(onboard): preserve reasoning capability state#7574
cv merged 28 commits into
NVIDIA:mainfrom
HOYALIM:codex/issue-7570-reasoning-propagation

Conversation

@HOYALIM

@HOYALIM HOYALIM commented Jul 26, 2026

Copy link
Copy Markdown
Contributor

Summary

Persist the validated OpenAI-compatible reasoning capability through the onboarding sandbox-create contract instead of rereading mutable ambient process state at Dockerfile patch time. This keeps fresh onboarding validation, the built image environment, and generated OpenClaw model metadata consistent.

Related Issue

Closes #7570.

Changes

  • carry compatibleEndpointReasoning from provider selection through the sandbox create intent and Dockerfile patch options
  • prefer the validated capability over a drifted ambient NEMOCLAW_REASONING value while preserving the existing env fallback for other callers
  • cover provider-to-sandbox propagation, patch-flow forwarding, conflicting-env behavior, resume drift, repair, and checkpoint recovery
  • make the protected real compatible-endpoint cloud-onboard target assert both the built image environment and OpenClaw model metadata, and retain the normalized result as a JSON evidence artifact

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 restores the existing NEMOCLAW_REASONING contract already documented in docs/inference/configure-model-capabilities.mdx and docs/reference/commands.mdx; it adds no command, default, configuration input, schema, or supported workflow.
  • 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: Codex Desktop independently reviewed all 15 changed files and all nine security categories for revision e444e08b29b52ab27fabf6b1885403d4ad3eafd7 with base 4cd4d64fe67143b57707f874afa0b9d269dfeff2: PASS with no findings. Secrets and credentials: no secret material or credential values were added. Input validation: the propagated capability accepts only literal true or false; the live probe validates the sandbox name, quotes the Docker label, and passes the model as an argument. Authentication and authorization: no change. Dependencies: no change. Errors and logging: new messages and the JSON artifact disclose only normalized capability values. Cryptography and data protection: no change. Configuration and security headers: the change sets the existing build argument and does not change policy, headers, or public network access. Security testing: focused coverage exercises propagation, ambient-state override, resume drift, repair, and checkpoint replay. System security: resume and checkpoint drift prevent stale sandbox reuse, the capability participates in the sandbox-create fingerprint, and the live probe emits only the two expected booleans. Required GitHub checks for the validated branch revision are authoritative. Diff fingerprint: cc5e55ca818ade7cf6d1f3674a224f2da7195956e1374734de82335268d8ea95.
  • Non-success, skipped, or missing CI check accepted by maintainer — check name, approval link, and follow-up issue:

Documentation Writer Review

  • Documentation writer subagent reviewed the completed changes
  • Result: no-docs-needed
  • Evidence: docs/inference/configure-model-capabilities.mdx already documents NEMOCLAW_REASONING as a build-time input and states that resumed onboarding and rebuild replay its recorded value. docs/reference/commands.mdx already documents the environment variable and rebuild behavior. The change restores that contract and adds no command, default, configuration input, schema, or operator step. Docs / CLI Parity passed for the validated branch revision.
  • Agent: Codex Desktop

DGX Station Hardware Evidence

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

Verification

  • PR description includes a Signed-off-by: line and every newly pushed commit appears as Verified in GitHub
  • Normal pre-commit, commit-msg, and pre-push hooks passed — npx prek run --from-ref origin/main --to-ref HEAD and the complete pre-push hook set passed
  • Targeted behavior tests pass — 88/88 tests passed across the six focused reasoning/create/resume files
  • Applicable broad gate passed — command/result: fresh GitHub CI and protected E2E must pass after branch synchronization
  • 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)

Additional verification:

  • npm run build:cli
  • npm run typecheck:cli
  • plugin, JavaScript-config, and CLI pre-push type checks
  • npx prek run --from-ref origin/main --to-ref HEAD
  • E2E semantic-phase, source-shape, test-size, and project-membership guards

Verification boundary

Revision e444e08b29 and all preceding PR commits are GitHub-verified. The feature merges cleanly with current main at 03fbf5ebf; the combined code passes 91 focused create, resume, repair, checkpoint, and Dockerfile-patch tests. The contributor fork still needs an authorized branch update, followed by successful GitHub CI, protected compatible-endpoint E2E, automated review, and maintainer review for that updated revision. Do not merge before those gates settle successfully.


Signed-off-by: Ho Lim subhoya@gmail.com

Copilot AI review requested due to automatic review settings July 26, 2026 06:45
@copy-pr-bot

copy-pr-bot Bot commented Jul 26, 2026

Copy link
Copy Markdown

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

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

Copilot AI 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.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@coderabbitai

coderabbitai Bot commented Jul 26, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

The onboarding flow preserves compatible-endpoint reasoning capability from provider selection through sandbox creation, recovery decisions, and Dockerfile patching, using the validated value instead of relying solely on the ambient environment variable.

Changes

Compatible Endpoint Reasoning

Layer / File(s) Summary
Sandbox state propagation
src/lib/onboard/types.ts, src/lib/onboard/machine/core-flow-phases.ts, src/lib/onboard/machine/handlers/sandbox.ts, src/lib/onboard/machine/handlers/sandbox-test-fixtures.ts, src/lib/onboard/machine/core-flow-phases.test.ts
Reasoning capability is added to sandbox state and create-intent types, propagated into sandbox creation, and included in fingerprints only for exact "true"/"false" values.
Sandbox resume drift handling
src/lib/onboard/machine/handlers/sandbox-resume.ts, src/lib/onboard/machine/handlers/sandbox.ts, src/lib/onboard/machine/handlers/*resume.test.ts, src/lib/onboard/machine/handlers/sandbox-checkpoint-crash-recovery.test.ts
Resume logic detects recorded capability drift, prevents reuse, recreates ready sandboxes, and fails fast during incompatible checkpoint replay.
Dockerfile patch forwarding
src/lib/onboard/sandbox-dockerfile-patch-flow.ts, src/lib/onboard.ts, src/lib/onboard/dockerfile-patch.ts, src/lib/onboard/*dockerfile*test.ts
The validated reasoning value is forwarded through sandbox patch preparation and takes precedence over process.env.NEMOCLAW_REASONING when rewriting the staged Dockerfile.

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

Suggested labels: integration: openclaw, area: onboarding, area: inference, bug-fix

Suggested reviewers: copilot, jyaunches, laitingsheng

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed The PR forwards the validated compatible-endpoint reasoning value through onboarding and Dockerfile patching, which addresses the fresh sandbox persistence bug in #7570.
Out of Scope Changes check ✅ Passed The resume and crash-recovery updates are still tied to the same compatible-endpoint reasoning state and do not appear unrelated to the fix.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main change: preserving the validated reasoning capability state during onboarding.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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

@github-actions

github-actions Bot commented Jul 26, 2026

Copy link
Copy Markdown
Contributor

PR Review Advisor — No blocking findings reported

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

Model lanes

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

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

  • compatibleEndpointReasoning at src/lib/onboard/dockerfile-patch.ts:105: selected only by the second-opinion lane as established.
  • reasoning capability at src/lib/onboard/dockerfile-patch-reasoning.test.ts:12: selected only by the second-opinion lane as justified.
3 additional E2E selections from the second opinion

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

  • rebuild-hermes: The completed second-opinion lane identified E2E coverage that the primary lane omitted.
  • rebuild-openclaw: The completed second-opinion lane identified E2E coverage that the primary lane omitted.
  • sandbox-operations: The completed second-opinion lane identified E2E coverage that the primary lane omitted.

Second-opinion terminology and E2E selections are advisory. They do not change the primary assessment or E2E / PR Gate.

Since last review: 0 prior items resolved · 0 still apply · 0 new items found

2 semantic terminology decisions

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

  • justified — compatible endpoint reasoning capability at src/lib/onboard/machine/handlers/sandbox-resume.ts:194: Keep this term where the provider-specific capability and its resume behavior must be explicit.
  • justified — image-baked registry value at src/lib/onboard/machine/handlers/sandbox-resume.test.ts:174: Keep this phrase where the test must distinguish recorded build state from ambient environment state.

E2E guidance

Advisory only. E2E / PR Gate selects and runs jobs independently.

Recommended E2E: cloud-onboard, onboard-repair, onboard-resume

Workflow run details

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

@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/onboard/dockerfile-patch-reasoning.test.ts`:
- Around line 15-18: Update the test setup and teardown around the
NEMOCLAW_REASONING environment variable to capture its pre-test value and
restore it after each test instead of always deleting it. Preserve the existing
temporary-directory cleanup and ensure the restoration handles both originally
defined and originally absent values.

In `@src/lib/onboard/machine/handlers/sandbox.ts`:
- Line 1168: Update the authoritative sandbox drift and checkpoint fingerprint
logic to include the outer create intent’s compatibleEndpointReasoning value
alongside createIntent.resolved, ensuring Dockerfile-affecting reasoning changes
invalidate stale sandboxes. Route fresh, resumed, repair, and failure flows
through this authoritative contract, and add coverage for fresh creation, reuse,
interrupted resume, and repair behavior.
🪄 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: e350be72-6a42-4fe5-acff-ecc0872acb43

📥 Commits

Reviewing files that changed from the base of the PR and between d525e15 and 70e05f3.

📒 Files selected for processing (10)
  • src/lib/onboard.ts
  • src/lib/onboard/dockerfile-patch-reasoning.test.ts
  • src/lib/onboard/dockerfile-patch.ts
  • src/lib/onboard/machine/core-flow-phases.test.ts
  • src/lib/onboard/machine/core-flow-phases.ts
  • src/lib/onboard/machine/handlers/sandbox-test-fixtures.ts
  • src/lib/onboard/machine/handlers/sandbox.ts
  • src/lib/onboard/sandbox-dockerfile-patch-flow.test.ts
  • src/lib/onboard/sandbox-dockerfile-patch-flow.ts
  • src/lib/onboard/types.ts

Comment thread src/lib/onboard/dockerfile-patch-reasoning.test.ts
Comment thread src/lib/onboard/machine/handlers/sandbox.ts

@cv cv left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The fresh propagation path is correct and the exact focused suite passes 26/26, but three release blockers remain:

  1. compatibleEndpointReasoning is outside createIntent.resolved, while assertCheckpointCreateInputsStillMatch and the recorded sandbox_create receipt fingerprint only createIntent.resolved (sandbox.ts:1217-1221,1322-1326). An interrupted run can therefore resume/reuse a sandbox built with the opposite reasoning capability. Bind the validated outer value into the authoritative light/full fingerprint and add fresh, interrupted-resume/reuse, repair, and drift-rejection coverage.
  2. The new test always deletes process.env.NEMOCLAW_REASONING in afterEach, corrupting a preexisting runner value. Capture and restore the original defined/absent state. Keep the test body linear; the repository requires all env/global mutations to be restored.
  3. The growth gate fails because src/lib/onboard.ts grows +3/-0. Keep that entrypoint net-neutral or move the handoff into a focused src/lib/onboard/ module. Re-run the conditional-growth gate as well after fixing the new cleanup branch.

After the final code head, complete the current PR-template receipts (documentation writer can report no docs needed; this is an onboarding-sensitive path), authorize and run normal fork CI plus protected cloud-onboard/resume/repair E2E, and attach an exact-head real compatible-endpoint proof that the built env and OpenClaw metadata both retain the validated value. This should sequence before #7463; their files do not collide, but both affect reasoning-model release validation.

Copilot AI review requested due to automatic review settings July 26, 2026 10:41
@HOYALIM
HOYALIM force-pushed the codex/issue-7570-reasoning-propagation branch from 70e05f3 to db24d68 Compare July 26, 2026 10:41

Copilot AI 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.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

Copilot AI review requested due to automatic review settings July 26, 2026 10:47
@HOYALIM
HOYALIM force-pushed the codex/issue-7570-reasoning-propagation branch from db24d68 to f89987d Compare July 26, 2026 10:47

Copilot AI 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.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@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: 1

🧹 Nitpick comments (1)
src/lib/onboard/dockerfile-patch-reasoning.test.ts (1)

4-30: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Use vi.stubEnv for NEMOCLAW_REASONING. Vitest restores stubbed env vars in this project, so the beforeEach/afterEach env bookkeeping can go away; keep the temp-dir cleanup in finally.

🤖 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/dockerfile-patch-reasoning.test.ts` around lines 4 - 30,
Update the test around “uses validated reasoning state instead of drifted
ambient env (`#7570`)” to use Vitest’s vi.stubEnv for NEMOCLAW_REASONING, removing
the originalReasoning variable and its beforeEach/afterEach environment
restoration. Retain temporary-directory cleanup and ensure it runs in a finally
block around the test’s filesystem operations.

Sources: Coding guidelines, Path instructions, Learnings, Pipeline failures

🤖 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/sandbox.ts`:
- Line 636: Make fingerprint generation in sandbox.ts backward-compatible by
omitting the newly inserted default reasoning component for absent/default
values, or by normalizing legacy fingerprints before resume comparison; ensure
resume and repair bridges converge on the authoritative path. In
sandbox-checkpoint-crash-recovery.test.ts, retain a pre-change fingerprint
fixture and add coverage proving older checkpoints remain resumable.

---

Nitpick comments:
In `@src/lib/onboard/dockerfile-patch-reasoning.test.ts`:
- Around line 4-30: Update the test around “uses validated reasoning state
instead of drifted ambient env (`#7570`)” to use Vitest’s vi.stubEnv for
NEMOCLAW_REASONING, removing the originalReasoning variable and its
beforeEach/afterEach environment restoration. Retain temporary-directory cleanup
and ensure it runs in a finally block around the test’s filesystem operations.
🪄 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: 82bf6c86-3fe4-47b0-991b-3fcd22b7a6b8

📥 Commits

Reviewing files that changed from the base of the PR and between db24d68 and f89987d.

📒 Files selected for processing (11)
  • src/lib/onboard.ts
  • src/lib/onboard/dockerfile-patch-reasoning.test.ts
  • src/lib/onboard/dockerfile-patch.ts
  • src/lib/onboard/machine/core-flow-phases.test.ts
  • src/lib/onboard/machine/core-flow-phases.ts
  • src/lib/onboard/machine/handlers/sandbox-checkpoint-crash-recovery.test.ts
  • src/lib/onboard/machine/handlers/sandbox-test-fixtures.ts
  • src/lib/onboard/machine/handlers/sandbox.ts
  • src/lib/onboard/sandbox-dockerfile-patch-flow.test.ts
  • src/lib/onboard/sandbox-dockerfile-patch-flow.ts
  • src/lib/onboard/types.ts
🚧 Files skipped from review as they are similar to previous changes (7)
  • src/lib/onboard/machine/handlers/sandbox-test-fixtures.ts
  • src/lib/onboard/machine/core-flow-phases.ts
  • src/lib/onboard/dockerfile-patch.ts
  • src/lib/onboard/sandbox-dockerfile-patch-flow.test.ts
  • src/lib/onboard/sandbox-dockerfile-patch-flow.ts
  • src/lib/onboard.ts
  • src/lib/onboard/machine/core-flow-phases.test.ts

Comment thread src/lib/onboard/machine/handlers/sandbox.ts Outdated
@HOYALIM
HOYALIM force-pushed the codex/issue-7570-reasoning-propagation branch from f89987d to eda46fc Compare July 26, 2026 14:53
Copilot AI review requested due to automatic review settings July 26, 2026 14:53

Copilot AI 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.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@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: 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/sandbox.ts`:
- Around line 636-638: Update the sandbox reuse decision around
compatibleEndpointReasoningForCreateIntent so the desired reasoning value in the
fingerprint is compared for already-ready sandboxes, not only during checkpoint
recovery. Reject or repair stale sandboxes before calling
backfillReusedSandboxCheckpointReceipts, and preserve correct behavior across
fresh creation, normal reuse, interrupted resume, and repair flows with coverage
for each path.
🪄 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: debb9b90-ebcb-4ddf-8f50-0a30dfc87624

📥 Commits

Reviewing files that changed from the base of the PR and between f89987d and eda46fc.

📒 Files selected for processing (11)
  • src/lib/onboard.ts
  • src/lib/onboard/dockerfile-patch-reasoning.test.ts
  • src/lib/onboard/dockerfile-patch.ts
  • src/lib/onboard/machine/core-flow-phases.test.ts
  • src/lib/onboard/machine/core-flow-phases.ts
  • src/lib/onboard/machine/handlers/sandbox-checkpoint-crash-recovery.test.ts
  • src/lib/onboard/machine/handlers/sandbox-test-fixtures.ts
  • src/lib/onboard/machine/handlers/sandbox.ts
  • src/lib/onboard/sandbox-dockerfile-patch-flow.test.ts
  • src/lib/onboard/sandbox-dockerfile-patch-flow.ts
  • src/lib/onboard/types.ts
🚧 Files skipped from review as they are similar to previous changes (8)
  • src/lib/onboard/machine/core-flow-phases.ts
  • src/lib/onboard.ts
  • src/lib/onboard/types.ts
  • src/lib/onboard/sandbox-dockerfile-patch-flow.test.ts
  • src/lib/onboard/machine/handlers/sandbox-checkpoint-crash-recovery.test.ts
  • src/lib/onboard/machine/handlers/sandbox-test-fixtures.ts
  • src/lib/onboard/machine/core-flow-phases.test.ts
  • src/lib/onboard/sandbox-dockerfile-patch-flow.ts

Comment thread src/lib/onboard/machine/handlers/sandbox.ts
Signed-off-by: Ho Lim <subhoya@gmail.com>
Copilot AI review requested due to automatic review settings July 26, 2026 19:45
@HOYALIM
HOYALIM force-pushed the codex/issue-7570-reasoning-propagation branch from eda46fc to 7055e08 Compare July 26, 2026 19:45

Copilot AI 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.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@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: 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/dockerfile-patch-reasoning.test.ts`:
- Line 44: Update the Dockerfile assertion in the relevant test to verify the
generated content does not contain the stale “ARG NEMOCLAW_REASONING=false”
declaration, in addition to asserting the expected true value. Keep the
validation focused on the observable Dockerfile output and ensure conflicting
reasoning declarations cannot pass.
🪄 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: 26150bf5-439b-4cb8-bf2c-843a510347aa

📥 Commits

Reviewing files that changed from the base of the PR and between eda46fc and 7055e08.

📒 Files selected for processing (14)
  • src/lib/onboard.ts
  • src/lib/onboard/dockerfile-patch-reasoning.test.ts
  • src/lib/onboard/dockerfile-patch.ts
  • src/lib/onboard/machine/core-flow-phases.test.ts
  • src/lib/onboard/machine/core-flow-phases.ts
  • src/lib/onboard/machine/handlers/sandbox-checkpoint-crash-recovery.test.ts
  • src/lib/onboard/machine/handlers/sandbox-recreate-resume.test.ts
  • src/lib/onboard/machine/handlers/sandbox-resume.test.ts
  • src/lib/onboard/machine/handlers/sandbox-resume.ts
  • src/lib/onboard/machine/handlers/sandbox-test-fixtures.ts
  • src/lib/onboard/machine/handlers/sandbox.ts
  • src/lib/onboard/sandbox-dockerfile-patch-flow.test.ts
  • src/lib/onboard/sandbox-dockerfile-patch-flow.ts
  • src/lib/onboard/types.ts
🚧 Files skipped from review as they are similar to previous changes (7)
  • src/lib/onboard/types.ts
  • src/lib/onboard.ts
  • src/lib/onboard/dockerfile-patch.ts
  • src/lib/onboard/machine/handlers/sandbox.ts
  • src/lib/onboard/machine/handlers/sandbox-test-fixtures.ts
  • src/lib/onboard/machine/core-flow-phases.ts
  • src/lib/onboard/machine/core-flow-phases.test.ts

Comment thread src/lib/onboard/dockerfile-patch-reasoning.test.ts Outdated
Signed-off-by: Ho Lim <subhoya@gmail.com>
Copilot AI review requested due to automatic review settings July 26, 2026 20:24

Copilot AI 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.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

Signed-off-by: Prekshi Vyas <prekshiv@nvidia.com>
Signed-off-by: Prekshi Vyas <prekshiv@nvidia.com>
Signed-off-by: Apurv Kumaria <akumaria@nvidia.com>
Signed-off-by: Apurv Kumaria <akumaria@nvidia.com>
Signed-off-by: Apurv Kumaria <akumaria@nvidia.com>
@apurvvkumaria
apurvvkumaria enabled auto-merge (squash) July 31, 2026 17:43
@senthilr-nv
senthilr-nv disabled auto-merge July 31, 2026 20:04
@cjagwani

cjagwani commented Aug 2, 2026

Copy link
Copy Markdown
Collaborator

Exact-head follow-up for e061860: CI / Pull Request attempt 2 failed only in cli-test-shards (4) on an unrelated MCP lifecycle-lock race (ENOENT opening the temporary lock file in test/mcp-lifecycle-lock.test.ts:436). The E2E coordination check records retry reason prerequisite-ci and confirms that no E2E was dispatched.

I am not rerunning that attempt because its recorded base d47ffe5 is no longer current, so it cannot provide valid exact-head/base evidence. A fresh head/base revision is needed to run current CI and the selected E2E plan. This is a coordination comment, not a Changes Requested review.

CI: https://github.com/NVIDIA/NemoClaw/actions/runs/30701992183/attempts/2
Failed shard: https://github.com/NVIDIA/NemoClaw/actions/runs/30701992183/job/91374647014
Coordination: https://github.com/NVIDIA/NemoClaw/runs/91374541865

cv and others added 3 commits August 2, 2026 00:14
Signed-off-by: Prekshi Vyas <prekshiv@nvidia.com>
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
@HOYALIM

HOYALIM commented Aug 3, 2026

Copy link
Copy Markdown
Contributor Author

@cv Current head e444e08b29 is now frozen.

  • Ordinary code checks are green.
  • There are no active non-outdated review threads or current-head human change requests.
  • The primary advisor reported 0 blockers. The failed Nemotron lane was an incomplete second opinion.
  • E2E / PR Gate timed out while waiting for maintainer approval to run fork E2E, so that remaining gate is external to the contributor.

I will not sync main or push another CI-refresh commit unless a concrete current-head blocker or merge conflict appears. To avoid resetting checks and approvals again, could you please choose one disposition for this head: merge when repository gates permit, identify the remaining code or evidence blocker, or mark the PR superseded / otherwise close its review path?

@github-actions github-actions Bot added v0.0.102 and removed v0.0.101 labels Aug 3, 2026
@apurvvkumaria

Copy link
Copy Markdown
Collaborator

Protected E2E completed: https://github.com/NVIDIA/NemoClaw/actions/runs/30860793216

The cloud-onboard, onboard-resume, and onboard-repair lanes all stopped during sandbox-image construction, before reaching this PR's changed onboarding behavior. Each failure is the shared MCP tool-discovery runtime audit rejecting the current fast-uri, hono, and ip-address advisories.

The branch still merges cleanly with current main, and all 91 focused onboarding tests pass on that combined tree. This is therefore a repository dependency blocker, not evidence of a PR-specific regression. Do not rerun until the applicable dependency remediation lands; no failed-gate exception or bypass is requested.

@cjagwani

cjagwani commented Aug 4, 2026

Copy link
Copy Markdown
Collaborator

Exact-head follow-up for e444e08b29b52ab27fabf6b1885403d4ad3eafd7: current selected E2E finished with failures in onboard-resume, cloud-onboard, and onboard-repair. The coordination result has no retry marker, and the required native E2E check remains red, so I am not rerunning it as transient infrastructure. A new commit addressing those failures is needed before exact-head validation can continue. This is a coordination comment, not a Changes Requested review.

@cv
cv merged commit d2a46b9 into NVIDIA:main Aug 4, 2026
10 of 12 checks passed
apurvvkumaria added a commit that referenced this pull request Aug 4, 2026
<!-- markdownlint-disable MD041 -->
## Summary

Prepares the canonical v0.0.102 release documentation from the current
release-labeled scope.
The change adds a dated changelog for all 38 user-facing shipping PRs
and corrects the OpenClaw agent command reference for the behavior
delivered by #8191.

## Changes

- Add `docs/changelog/2026-08-04.mdx` with the v0.0.102 release summary,
detailed behavior changes, support boundaries, security evidence links,
and links to durable documentation.
- Update `docs/reference/commands.mdx` to describe non-JSON OpenClaw
output capture, its combined limit, marker handling, stream suppression,
recovery guidance, and exit behavior.
- [#8167](#8167) ->
`docs/changelog/2026-08-04.mdx`: Records authenticated attachment of
operator-managed llama.cpp servers.
- [#8129](#8129) ->
`docs/changelog/2026-08-04.mdx`: Records the Experimental managed vLLM
profile for two DGX Spark systems.
- [#7983](#7983) ->
`docs/changelog/2026-08-04.mdx`: Records qualification of the May 2026
GB300WS factory image.
- [#8207](#8207) ->
`docs/changelog/2026-08-04.mdx`: Records the qualified DGX Station
driver transaction.
- [#8208](#8208) ->
`docs/changelog/2026-08-04.mdx`: Records mode-bound Express resume
state.
- [#8158](#8158) ->
`docs/changelog/2026-08-04.mdx`: Records recovery of host-global
dual-Station runtime ownership.
- [#8145](#8145) ->
`docs/changelog/2026-08-04.mdx`: Records Windows-host Ollama validation
from Docker Desktop's network context.
- [#8190](#8190) ->
`docs/changelog/2026-08-04.mdx`: Records HTTP model pulls when WSL has
no local Ollama executable.
- [#8195](#8195) ->
`docs/changelog/2026-08-04.mdx`: Records reuse of a healthy
installer-managed CLI.
- [#8053](#8053) ->
`docs/changelog/2026-08-04.mdx`: Records early rejection of incompatible
OpenShell gateway versions.
- [#8098](#8098) ->
`docs/changelog/2026-08-04.mdx`: Records the bounded
package-service-to-standalone gateway recovery transition.
- [#8216](#8216) ->
`docs/changelog/2026-08-04.mdx`: Records the final dashboard port
selected during multi-sandbox onboarding.
- [#8146](#8146) ->
`docs/changelog/2026-08-04.mdx`: Records managed startup-state
restoration for stopped sandboxes.
- [#8092](#8092) ->
`docs/changelog/2026-08-04.mdx`: Records gateway watchdog recovery for
classified not-serving states.
- [#8182](#8182) ->
`docs/changelog/2026-08-04.mdx`: Records consistent managed-recovery
wait configuration.
- [#8040](#8040) ->
`docs/changelog/2026-08-04.mdx`: Records Docker sandbox rollback
authority through late validation.
- [#8130](#8130) ->
`docs/changelog/2026-08-04.mdx`: Records bounded Shields deadline
recovery and durable containment.
- [#8086](#8086) ->
`docs/changelog/2026-08-04.mdx`: Records repair of narrowly validated
permission-only configuration drift.
- [#8122](#8122) ->
`docs/changelog/2026-08-04.mdx`: Records prompt failure and guidance for
corrupt transition locks.
- [#8124](#8124) ->
`docs/changelog/2026-08-04.mdx`: Records policy restoration flags,
previews, and target revalidation.
- [#7886](#7886) ->
`docs/changelog/2026-08-04.mdx`: Records explicit destruction after
pre-delete Shields hardening failures while preserving recovery
authority.
- [#7901](#7901) ->
`docs/changelog/2026-08-04.mdx`: Records multi-port uninstall behavior
and shared-resource preservation.
- [#7984](#7984) ->
`docs/changelog/2026-08-04.mdx`: Records one classified transient remote
MCP startup retry.
- [#7954](#7954) ->
`docs/changelog/2026-08-04.mdx`: Records bounded hosted-inference probe
replies.
- [#7574](#7574) ->
`docs/changelog/2026-08-04.mdx`: Records preservation of validated
reasoning capabilities through onboarding.
- [#8089](#8089) ->
`docs/changelog/2026-08-04.mdx`: Records proxy routing for Hermes
WhatsApp pairing and media traffic.
- [#7682](#7682) ->
`docs/changelog/2026-08-04.mdx`: Records native Hermes session deletion
and identifier validation.
- [#8150](#8150) ->
`docs/changelog/2026-08-04.mdx`: Records corporate CA trust for
LangChain Deep Agents Code image builds.
- [#8156](#8156) ->
`docs/changelog/2026-08-04.mdx`: Records reviewed managed runtime
dependency remediation.
- [#8180](#8180) ->
`docs/changelog/2026-08-04.mdx`: Records reviewed MCP discovery runtime
dependency updates.
- [#8196](#8196) ->
`docs/changelog/2026-08-04.mdx`: Records private npm dependency
remediation across managed images.
- [#8203](#8203) ->
`docs/changelog/2026-08-04.mdx`: Records reviewed Hermes and LangChain
Deep Agents Code Python dependency updates.
- [#8125](#8125) ->
`docs/changelog/2026-08-04.mdx`: Records bounded diagnostics for invalid
enumerated CLI values.
- [#8193](#8193) ->
`docs/changelog/2026-08-04.mdx`: Records bounded diagnostics for
unresolved sandbox base images.
- [#8118](#8118) ->
`docs/changelog/2026-08-04.mdx`: Records bounded diagnostics for changed
gateway authority.
- [#8191](#8191) ->
`docs/changelog/2026-08-04.mdx`, `docs/reference/commands.mdx`: Records
output capture, marker handling, recovery guidance, and exit behavior
for non-JSON OpenClaw agent commands.
- [#8187](#8187) ->
`docs/changelog/2026-08-04.mdx`: Records the aligned
interactive-installation start across supported agents.
- [#8153](#8153) ->
`docs/changelog/2026-08-04.mdx`: Records current product capabilities
and support boundaries.

## 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

- [ ] Tests added or updated for changed behavior
- [ ] Existing tests cover changed behavior — justification:
- [x] Tests not applicable — justification: This documentation-only
release preparation does not change executable behavior. Existing
changelog and published-route tests pass.
- [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:

## Documentation Writer Review

- [x] Documentation writer subagent reviewed the completed changes
- Result: `docs-updated`
- Evidence: Independently reviewed `docs/changelog/2026-08-04.mdx` and
`docs/reference/commands.mdx` at commit `b89913780`. All 38 user-facing
v0.0.102 PRs are represented, #8191 behavior matches the implementation,
and the writing rules, documentation style, controlled terminology,
route structure, and skip policy pass review. Targeted tests pass 36/36
and the documentation build completes with 0 errors.
- Agent: Codex Desktop independent documentation writer
<!-- docs-review-head-sha: b899137 -->
<!-- docs-review-agents-blob-sha: 3dd7c24 -->

## DGX Station Hardware Evidence

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

## Verification

- [x] PR description includes a `Signed-off-by:` line and every commit
appears as `Verified` in GitHub
- [x] Normal `pre-commit`, `commit-msg`, and `pre-push` hooks passed, or
`npm run validate:pr` passed after refreshing `origin/main` when hooks
were skipped or unavailable
- [x] Targeted behavior tests pass for the current change set, or tests
are marked not applicable above — `npx vitest run --project integration
test/changelog-docs.test.ts test/check-docs-published-routes.test.ts`
passed 36/36.
- [x] Applicable broad gate passed — not applicable to
documentation-only changes; `npm run docs` completed successfully with 0
errors.
- [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) —
completed with 0 errors and 2 existing Fern warnings.
- [x] Doc pages follow the [style
guide](https://github.com/NVIDIA/NemoClaw/blob/main/docs/CONTRIBUTING.md)
(doc changes only)
- [x] New doc pages include SPDX header and frontmatter (new pages only)
— the native dated changelog uses the required parser-safe MDX SPDX
comment and intentionally has no frontmatter.

---
Signed-off-by: Apurv Kumaria <akumaria@nvidia.com>


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

## Summary by CodeRabbit

- **Documentation**
- Added release notes for v0.0.102, covering authentication, hardware
setup, WSL, installer recovery, sandbox resilience, policy management,
inference reliability, CLI improvements, and unified quickstarts.
- Updated command documentation to explain how non-JSON agent output is
collected, replayed, and reported.

- **Bug Fixes**
- Improved command-output recovery guidance when output exceeds limits
or contains unsupported fallback markers.
- Preserved accurate command exit-status reporting after output
processing.

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

Signed-off-by: Apurv Kumaria <akumaria@nvidia.com>
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 area: providers Inference provider integrations and provider behavior area: sandbox OpenShell sandbox lifecycle, runtime, config, or recovery bug-fix PR fixes a bug or regression

Projects

None yet

Development

Successfully merging this pull request may close these issues.

NEMOCLAW_REASONING=true is read during onboarding but written as false on a fresh sandbox

8 participants