Tracking issue for Aspire CLI acquisition coherence — making install, update, self-update, side-by-side coexistence, channel selection, and uninstall behave correctly across all 5 acquisition routes (get-aspire-cli.{sh,ps1}, get-aspire-cli-pr.{sh,ps1}, winget, Homebrew, dotnet-tool).
Detailed working state, design notes, decision write-ups, and the validation runbook live in @radical's fork (radical#50). This issue is updated sparsely with top-level todos only.
Goals
- Every route behaves correctly when invoked alone — no silent clobbers, no surprise prompts.
- Routes coexist safely side-by-side — no cross-route channel/hive/bundle contamination.
- The CLI knows what it is (route + channel intrinsic to the binary, not heuristic).
- Self-update is install-route-aware — winget/Homebrew/PR-dogfood paths opt out of in-place clobber.
- Running CLI + concurrent update do not corrupt each other (bundle layout + atomicity).
- Uninstall has a defined surface for each route, including shared-state cleanup.
Top-level todos
Research (Track A) — done
Implementation (Track B)
In-flight or already merged contributors: #15932, #15947, #15938, #15951, #15604, #16408 (merged), native-AOT dotnet-tool (landed), #15600, #15601, #15614.
Validation (Track C)
Open decisions
7 decisions tracked privately on the working mirror. Brief leans:
- winget can ship prereleases; Homebrew stable-only.
- Bundle dirs scoped per install-id (route + location hash).
- Channel field becomes per-route in
aspire.config.json.
- Hives become route-scoped under install-id.
aspire uninstall refuses on pkg-mgr installs and redirects; --state-only [--purge] preserves the binary.
- Running-CLI +
aspire update --self warns and proceeds (with --force-while-running to silence) once Windows atomicity gap closes.
- Self-update on pkg-mgr binary refuses by default;
--break-install opts into clobber + warning; refusal message points to the script route for non-stable channels.
Related
/cc @mitchdenny @davidfowl @maddymontaquila @DamianEdwards @danegsta
Tracking issue for Aspire CLI acquisition coherence — making install, update, self-update, side-by-side coexistence, channel selection, and uninstall behave correctly across all 5 acquisition routes (
get-aspire-cli.{sh,ps1},get-aspire-cli-pr.{sh,ps1}, winget, Homebrew, dotnet-tool).Goals
Top-level todos
Research (Track A) — done
Implementation (Track B)
aspire update --selfroute-aware: refuse / redirect /--break-installescapeaspire uninstallwith route-aware state sweep (--state-only,--purge)In-flight or already merged contributors: #15932, #15947, #15938, #15951, #15604, #16408 (merged), native-AOT dotnet-tool (landed), #15600, #15601, #15614.
Validation (Track C)
Open decisions
7 decisions tracked privately on the working mirror. Brief leans:
aspire.config.json.aspire uninstallrefuses on pkg-mgr installs and redirects;--state-only [--purge]preserves the binary.aspire update --selfwarns and proceeds (with--force-while-runningto silence) once Windows atomicity gap closes.--break-installopts into clobber + warning; refusal message points to the script route for non-stable channels.Related
Aspire.Acquisition.Tests)/cc @mitchdenny @davidfowl @maddymontaquila @DamianEdwards @danegsta