Unify executor binary names to mxc-exec* across platforms
- Dominant language
- Rust
- Stars
- 1.3k
- Forks
- 79
- Avg merge
- 2d 7h
- Merged PRs (30d)
- 117
Description
### Description of the task
Unify the executor binary names to a single `mxc-exec` family across all three platforms. Today the entry executables are named inconsistently:
| Platform | Current name | Crate |
|----------|--------------|-------|
| Windows | `wxc-exec.exe` | `wxc` / `wxc_common` |
| Linux | `lxc-exec` | `lxc` |
| macOS | `mxc-exec-mac` | `mxc_darwin` |
Only one of the three (`mxc-exec-mac`) even matches the product name "MXC"; `wxc-` does not. A single, consistent `mxc-exec` (with `.exe` on Windows) is cleaner, matches `@microsoft/mxc-sdk`, and lets the SDK binary-discovery logic in `sdk/src/platform.ts` collapse its three per-OS `find*Executable` functions toward a single name.
Scope note: the Windows build also ships a `wxc-*` helper family (`wxc-windows-sandbox-guest`, `wxc-windows-sandbox-daemon`, `winhttp-proxy-shim`, `wxc-test-proxy`, `wxc-host-prep`). To avoid a half-consistent set, this task should rename the whole `wxc-*`/`lxc-exec`/`mxc-exec-mac` family to `mxc-*`, not just the entry binary.
Expected outcome: all executor binaries use the `mxc-*` naming convention; build scripts, SDK discovery, docs, and test scripts are updated; and a backward-compatibility alias is provided for a deprecation window so existing invocations (notably the documented `wxc-exec --prepare-system-drive` host-setup CLI) keep working.
### Additional context
Blast radius (current references in the repo): `wxc-exec` ~461, `lxc-exec` ~126, `mxc-exec-mac` ~65 across `.rs`, build scripts (`build.bat`/`build.sh`/`build-mac.sh`), test scripts, docs, CI YAML, and the Cargo `[[bin]]` names in the `wxc`, `lxc`, and `mxc_darwin` crates.
Suggested approach:
- Rename Cargo `[[bin]]` targets and the producing crates' output names.
- Update `build.bat` / `build.sh` / `build-mac.sh` copy steps.
- Simplify `sdk/src/platform.ts` discovery to a single `mxc-exec` name (plus `.exe` on Windows).
- Update docs (`docs/host-prep.md`, `docs/lxc-support/`, `docs/macos-support/`, per-backend guides) and `.github/copilot-instructions.md` (Binary naming section).
- Update test scripts under `test_scripts/` and any E2E harness that invokes binaries by name.
- Ship a back-compat alias/shim (or symlink) under the old names for at least one release, with a deprecation note.
Backward-compatibility considerations:
- `wxc-exec --prepare-system-drive` / `--unprepare-system-drive` is a documented host-setup CLI; external scripts may depend on it.
- Test drivers and the `wxc_test_driver` invoke binaries by name.
Sequencing: do this **after** the SDK platform-package packaging change (#512), so the rename rebases onto the simpler per-platform package layout rather than the legacy `bin//` tree.
Related: #512.
Contributor guide
Assessment
This issue has not been assessed yet.