Conversation
Route Local AI retry setup through a non-destructive recovery pipeline that preserves the existing WSL sandbox and restarts the gateway after Local AI reconfiguration. Add focused regression coverage for the recovery route and pipeline shape. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
|
🦞👀 Pull request received. I will update this pull request when review starts. ClawSweeper review completeClawSweeper finished reviewing this revision. The review result is being finalized. |
|
Codex review: blocked before merge. Reviewed September 5, 2026, 6:58 PM ET / 22:58 UTC. ClawSweeper reviewWhat this changesRoutes Local AI retry through a setup pipeline that preserves the existing WSL gateway, opens the Local AI review screen directly, and changes command-output draining. Regression provenancePossible regression — suspected (reviewed change). No predecessor PR is attributed. Merge readiness⛔ Blocked before merge - 5 items remain This remains necessary: main and the latest release still route retry through full onboarding. The dedicated recovery path is useful, but two introduced regressions block landing. Priority: P0 Review scores
Verification
How this fits togetherThe Windows companion launches setup when users retry Local AI installation. Setup prepares the native inference runtime, connects it to the WSL gateway, and returns users to the companion. flowchart TD
A[Local AI retry] --> B[Setup window]
B --> C[Local AI review]
C --> D[Recovery pipeline]
D --> E[Native inference runtime]
D --> F[Existing WSL gateway]
F --> G[Gateway restart and health check]
Before merge
Findings
Agent review detailsSecurityNone. Review metrics
Merge-risk optionsMaintainer options:
Copy recommended automerge instructionTechnical reviewBest possible solution: Keep recovery non-destructive, select provisioning only when the managed gateway is genuinely absent, and preserve command deadlines while draining trailing output. Do we have a high-confidence way to reproduce the issue? Yes, source establishes both failure paths: retry with no managed gateway reaches WSL verification without provisioning, and a normally exited command with a pipe-holding descendant bypasses its timeout. Neither was executed during this read-only review. Is this the best way to solve the issue? Partly: reusing setup steps in a dedicated recovery pipeline is appropriate, but unconditional recovery selection and unlimited default output draining are not safe replacements for the existing contracts. Full review comments:
Overall correctness: patch is incorrect AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning medium; reviewed against 305bb4ef5334. LabelsLabel changes:
Label justifications:
EvidenceAcceptance criteria:
What I checked:
Likely related people:
Rank-up movesOptional improvements that raise the rating; they are not merge blockers.
Rating scale
Overall follows the weaker of proof and patch quality. Workflow
|
Fixes #1307
Summary
Required proof pools
windows-wsl-dgx-blackwell: Local AI WSL-visible NVIDIA setup/restart/inference proof is required for hardware-backed behavior.windows-wsl-gateway-e2e: Local AI recovery must preserve product WSL/gateway state and prove gateway invocation.windows-winui-interactive: current-head visual proof is required for the Local AI retry and Install & setup recovery path.Validation
.\build.ps1: passed, all builds succeeded.$env:OPENCLAW_REPO_ROOT=(Get-Location).Path; dotnet test .\tests\OpenClaw.Shared.Tests\OpenClaw.Shared.Tests.csproj --no-restore: passed, 3937 passed, 32 skipped, 0 failed.$env:OPENCLAW_REPO_ROOT=(Get-Location).Path; dotnet test .\tests\OpenClaw.Tray.Tests\OpenClaw.Tray.Tests.csproj --no-restore: passed, 2858 passed, 0 skipped, 0 failed.$env:OPENCLAW_REPO_ROOT=(Get-Location).Path; dotnet test .\tests\OpenClaw.SetupEngine.Tests\OpenClaw.SetupEngine.Tests.csproj --no-restore: passed, 1058 passed, 0 skipped, 0 failed.$env:OPENCLAW_REPO_ROOT=(Get-Location).Path; dotnet test .\tests\OpenClaw.SetupEngine.Tests\OpenClaw.SetupEngine.Tests.csproj --no-restore --filter "FullyQualifiedName~SetupPipelineTests": passed, 29 passed, 0 skipped, 0 failed.$env:OPENCLAW_REPO_ROOT=(Get-Location).Path; dotnet test .\tests\OpenClaw.Tray.Tests\OpenClaw.Tray.Tests.csproj --no-restore --filter "FullyQualifiedName~LocalAiPageViewModelTests": passed, 3 passed, 0 skipped, 0 failed.python .agents\skills\autoreview\scripts\autoreview --mode local: no significant issues reported by rubber-duck closeout; helper failed closed on one path because the diff bundle exceeded the local safety limit.Real behavior proof
LocalAiPageViewModelTestsverifies Retry setup or download now invokesShowLocalAiSetupRecoveryand does not invoke full onboarding.SetupPipelineTests.BuildLocalAiRecoverySteps_PreservesExistingWslGatewayverifies the retry pipeline excludes WSL/gateway destructive steps such ascleanup-stale-distro,cleanup-stale-gateway,create-wsl,configure-wsl, andinstall-cli, while still including Local AI repair, WSL verification, gateway configuration, and gateway restart.Ownership notes
WindowManager.ShowLocalAiSetupRecoveryAsyncopens setup in Local AI recovery mode, andSetupStepFactory.BuildLocalAiRecoveryStepsowns the non-destructive retry step list.App.xaml.csremains only the composition-root command forwarder; setup window orchestration stays inWindowManager, and full onboarding behavior is unchanged for normal setup.