chore: experiment with trimmed winnode publishing - #1002
Conversation
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 8d7a4316-1b92-4ca0-970a-e9afd2d3972e
|
Codex review: found issues before merge. Reviewed August 23, 2026, 8:19 AM ET / 12:19 UTC. ClawSweeper reviewWhat this changesThis draft turns on partial trimming for standalone Merge readinessKeep open for explicit maintainer direction and two remaining review fixes: the trimmed published executable still is not exercised against Local MCP, and its new CI job uses an older setup action than current main. Priority: P3 Review scores
Verification
Live VerificationCommand: Result: FAIL (failed) — execution before step 1 Assertions:
How this fits together
flowchart LR
A[WinNode source] --> B[Self-contained publish]
B --> C[Partial trimming]
C --> D[Published winnode executable]
E[Tray Local MCP server] --> F[Tool discovery and invocation]
D --> F
F --> G[Windows node capability result]
Decision needed
Why: The PR intentionally changes no shipped asset and frames trimming as a possible future standalone distribution, so the value of retaining ongoing CI cost and compatibility responsibility needs maintainer intent. Before merge
Findings
Agent review detailsSecurityNone. Review metrics
Merge-risk optionsMaintainer options:
Technical reviewBest possible solution: Keep standalone trimming experimental until a rebased CI job proves the published executable can list tools and run a harmless Local MCP command against an isolated tray profile. Do we have a high-confidence way to reproduce the issue? Yes, source inspection shows a deterministic gap: the added smoke command is Is this the best way to solve the issue? No; reflection-safe JSON output and byte-identical Shared checks are useful, but they do not validate the published executable’s supported Local MCP operation. Full review comments:
Overall correctness: patch is incorrect AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against ccd64bbb7d68. LabelsLabel changes:
Label justifications:
EvidenceWhat 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
HistoryReview history (22 earlier review cycles; latest 8 shown)
|
|
This pull request has been automatically marked as stale due to inactivity. |
What Problem This Solves
This draft explores whether the standalone
winnodeCLI can be safely tree-trimmed before we decide to distribute it independently. Today,winnodeis not included in the GitHub release installer or portable ZIP, so this experiment does not reduce current OpenClaw Companion release assets.Why This Change Was Made
The experiment enables conservative partial trimming for
winnodewhile copyingOpenClaw.Shared.dllunchanged. It removes the CLI's reflection-based JSON pretty-print call and adds an independent x64/ARM64 CI job that publishes the trimmed CLI, verifies the Shared assembly remains byte-identical, and smoke-runs the executable.The WinNode CI job is separate from Tray artifact publishing and is not a dependency of the release job. This PR intentionally does not trim or otherwise alter the Tray application.
User Impact
No current user-visible impact. This is an experiment for a possible future standalone
winnodedistribution.Measured standalone x64 output:
Latest GitHub release v0.6.12 remains unchanged: x64 installer 114.12 MiB, ARM64 installer 99.90 MiB, x64 ZIP 141.64 MiB, ARM64 ZIP 133.04 MiB.
Evidence
winnode.exe --helpexited 0.winnode.exe --helpexited 0 on an ARM64 host.OpenClaw.Shared.dllSHA-256 matched its pre-link build output immediately after both publish sequences.Change Type
Scope
winnodeValidation
./build.ps1— passed; Shared, CLI, WinNode CLI, SetupEngine, and WinUI built successfully for win-arm64.dotnet test ./tests/OpenClaw.Shared.Tests/OpenClaw.Shared.Tests.csproj --no-restore— 2,863 passed, 31 skipped, 0 failed.dotnet test ./tests/OpenClaw.Tray.Tests/OpenClaw.Tray.Tests.csproj --no-restore— 1,717 passed, 0 failed.dotnet test ./tests/OpenClaw.WinNode.Cli.Tests/OpenClaw.WinNode.Cli.Tests.csproj --no-restore— 127 passed, 0 failed.dotnet publish ./src/OpenClaw.WinNode.Cli/OpenClaw.WinNode.Cli.csproj -c Release -r win-x64 --self-contained true— passed; Shared hash matched;--helppassed.dotnet publish ./src/OpenClaw.WinNode.Cli/OpenClaw.WinNode.Cli.csproj -c Release -r win-arm64 --self-contained true— passed; Shared hash matched;--helppassed.Real Behavior Proof
af85963fOpenClaw.Shared.dll, then run the publishedwinnode.exe --help.winnode --list-tools, and invoke a safe command such assystem.whichagainst an isolated Tray profile.Security Impact
Yes, explain the risk and mitigation: N/ACompatibility and Migration
Experiment Risks
_ComputeManagedAssemblyToLinktarget; a future SDK update could change that ordering. CI therefore verifiesOpenClaw.Shared.dllbyte-for-byte on both RIDs.winnodecode that calls additional Shared functionality may require new published-binary tests.OpenClaw.Shared; trimming does not solve that dependency-boundary problem.OPENCLAW_MCP_TOKENidentifier inProgram.csas secret-like content. No secrets were added or changed.Second-Machine Test Plan
publish-winnodeoutput on a clean Windows machine without the .NET runtime installed.winnode.exe --help.OPENCLAW_TRAY_DATA_DIRto that isolated profile.winnode.exe --list-tools.winnode.exe --command system.which --params '{"bins":["git","node","powershell"]}'.Review Conversations