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: needs real behavior proof before merge. Reviewed July 16, 2026, 4:34 PM ET / 20:34 UTC. Summary Reproducibility: not applicable. This PR is a packaging and CI experiment rather than a report of broken existing behavior. Review metrics: 3 noteworthy metrics.
Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Proof guidance:
Risk before merge
Maintainer options:
Next step before merge
Security Review detailsBest possible solution: Retain the isolated partial-trim design only if clean-machine x64 and ARM64 runs prove Do we have a high-confidence way to reproduce the issue? Not applicable: this PR is a packaging and CI experiment rather than a report of broken existing behavior. Is this the best way to solve the issue? Unclear: conservative partial trimming with a byte-identical Shared assembly is a reasonable boundary, but AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against e0afbc425fb7. Label changesLabel changes:
Label justifications:
Evidence reviewedWhat I checked:
Likely related people:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. How this review workflow works
|
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