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 4, 2026, 6:05 PM ET / 22:05 UTC. ClawSweeper reviewWhat this changesThe PR enables partial trimming for standalone Windows-node CLI publishes and adds x64/ARM64 CI publishing, hash, and startup checks. Merge readiness⛔ Blocked until stronger real behavior proof is added - 6 items remain Keep open. The unchanged PR head still validates only Priority: P3 Review scores
Verification
How this fits togetherThe standalone Windows-node CLI connects to the locally running Tray MCP server to discover and invoke node tools. This PR trims the CLI deployment bundle while attempting to retain the shared tray/node assembly unchanged. flowchart LR
Source[WinNode CLI source] --> Publish[Trimmed publish]
Publish --> Guard[Preserve Shared assembly]
Guard --> Artifact[Standalone CLI artifact]
Artifact --> Cli[Published winnode executable]
Cli --> Mcp[Local MCP server]
Mcp --> Tools[Node tools]
Before merge
Findings
Agent review detailsSecurityNone. Review metrics
Merge-risk optionsMaintainer options:
Technical reviewBest possible solution: Retain the focused partial-trim experiment, but gate it with a published-binary Local MCP discovery and harmless invocation against an isolated Tray profile, then align its SDK setup action with current CI. Do we have a high-confidence way to reproduce the issue? Yes. Source proves that Is this the best way to solve the issue? No. The hash and help checks are useful, but repository policy requires Local MCP discovery and invocation proof for this Windows-node CLI surface. Full review comments:
Overall correctness: patch is incorrect AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against 6e225e4758e1. LabelsLabel 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 (19 earlier review cycles; latest 8 shown)
|
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