Repository navigation
Conversation
Signed-off-by: Sebastien Tardif <SebTardif@ncf.ca>
Recursive deletion of the wsl directory could remove a sibling distro VHD. Uninstall now deletes the configured child only and leaves an uncertain path in the log. Signed-off-by: Sebastien Tardif <SebTardif@ncf.ca>
Bind primary filesystem deletion to the generated local-data root, preserve uncertain custom roots with durable warnings, and reject redirected ancestors. Exercise the real PowerShell first-phase AST with modeled transport and owned filesystem fixtures. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: fa19a99c-5eea-4942-a104-a82d6fb6c12a
Reject redirected app and WSL roots even when their target lacks the configured distro child. Preserve the missing-directory no-op and cover empty junction targets through the actual first-phase PowerShell path. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: fa19a99c-5eea-4942-a104-a82d6fb6c12a
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
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: needs real behavior proof before merge. Reviewed September 25, 2026, 7:38 PM ET / 23:38 UTC. ClawSweeper reviewWhat this changesNarrows Windows uninstall cleanup to named generated files and one WSL distro child, with path guards, documentation, and filesystem tests. Merge readiness⛔ Blocked before merge - 12 items remain Keep this PR open. Current main still deletes the selected install directory after successful gateway cleanup, so the repair remains useful. The replacement has unresolved deletion-safety defects and lacks signed-installer proof. Priority: P0 Review scores
Verification
How this fits togetherThe Inno uninstaller takes a user-selected install path and a choice to remove the local WSL Gateway. It calls a PowerShell helper to check Store migration ownership and unregister the distro before removing local files. flowchart TD
A[Uninstall choice] --> C[Inno uninstaller]
B[Selected install path] --> C
C --> D[Store ownership check]
D --> E[WSL gateway cleanup]
E --> F[Generated data cleanup]
F --> G[Removed or preserved files]
F --> H[Uninstall diagnostics]
Before merge
Findings
Agent review detailsSecurityNeeds attention: The new child-only PowerShell entrypoint reaches destructive WSL data removal without the Store migration ownership admission used by normal cleanup. Review metrics
Merge-risk optionsMaintainer options:
Technical reviewBest possible solution: Keep distro-child deletion inside migration-protected cleanup, preserve files whose ownership is uncertain, retain warnings in a durable uninstall log, and verify fresh and upgrade uninstall with signed Windows artifacts. Do we have a high-confidence way to reproduce the issue? Yes. Current-main source gives a clear path: complete gateway cleanup with a custom install folder containing an unrelated sentinel, then observe the whole-folder deletion. This read-only review did not execute it. Is this the best way to solve the issue? No. Narrowing deletion is appropriate, but the child-only mode needs ownership admission and generic named directories need content-level preservation. Full review comments:
Overall correctness: patch is incorrect AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against 5a59535216ee. LabelsLabel changes: No label changes. Label justifications:
EvidenceSecurity concerns:
What I checked:
Likely related people:
Rating scale
Overall follows the weaker of proof and patch quality. Workflow
|
|
CI failure audit for exact head
Classification: baseline/runner failures, not branch-caused. No uninstall-scope code change was made. #1521 remains draft with |
Supersedes #1486 without rewriting @SebTardif's contributor fork. This maintainer-owned replacement rebases the smallest useful change onto current
main(5a595352), including #1515 and #1518.Summary
Required proof pools
windows-clean-installer-upgrade: Not verified / blocked. This session had no approved signed installer/upgrade pool host. Local current-head headless uninstall proof below does not substitute for the signed installer pool.Validation
OPENCLAW_REPO_ROOT=<worktree>; .\build.ps1- passed.dotnet test .\tests\OpenClaw.Shared.Tests\OpenClaw.Shared.Tests.csproj --no-restore- 4,107 passed, 32 skipped.dotnet test .\tests\OpenClaw.Tray.Tests\OpenClaw.Tray.Tests.csproj --no-restore- 3,136 passed.dotnet test .\tests\OpenClaw.SetupEngine.Tests\OpenClaw.SetupEngine.Tests.csproj --filter "FullyQualifiedName~Uninstall"- 30 passed.dotnet test .\tests\OpenClaw.Tray.Tests\OpenClaw.Tray.Tests.csproj --no-restore --filter "FullyQualifiedName~InnoMigrationContractTests|FullyQualifiedName~InstallerIssAssertionTests"- 83 passed.python .agents\skills\autoreview\scripts\autoreview --mode branch --base origin/main --engine codex --model gpt-5.6-sol --thinking high --stream-engine-output- blocked before findings by repeated Codex API401 Unauthorizedresponses.Real behavior proof
Exact head:
5e5bd4bc0a3e2f2fe97c9ac958084a5353da733e.-DevBuildand verifiedapp-identity.txtwasdev.OpenClaw.SetupEngine.Program.Mainthrough a disposable task-owned host with explicit GUID-scoped roots and identifiers.0; all 34 rollback steps previewed.0againstOpenClawGateway-PR1486-263455e2dc4c.run.markerandexec-approvals.jsonremoved; custom WSL distro, scheduled task, and autostart value absent after completion.pr1486-uninstall-263455e2dc4clogs (not uploaded because they contain host-local paths).Review status
HOLD until structured autoreview can authenticate and
windows-clean-installer-upgradeproof is supplied. No merge requested.