Provider manager (plans/0010): install, list, update, upgrade, pin, remove, use — for stdio provider binaries distributed as GitHub release tarballs (the 4-target matrix rootle and its providers ship: linux+macOS × x86_64+aarch64).
Layout (XDG tiers, one purpose each — see the plan's survey):
~/.local/share/rootle/providers/<name>/<version>/rootle-<name> binary
~/.local/share/rootle/providers/<name>/current -> <version>/ pointer
~/.local/state/rootle/providers/<name>.toml receipt
Atomicity (krew model): download to temp staging → verify sha256
(mandatory) → extract into the versioned dir → write the receipt
LAST → atomically re-point current. A failed step leaves the
previous version intact. The running TUI is never affected —
provider children die with the app, the next spawn picks up the
new current.
Config declares, the store installs (mise pattern): use writes
the existing [provider] block; the runtime build() is
untouched and hand-edited configs keep working.
Submodules by concern: refs (the install-reference grammar),
release (GitHub API, tarball, checksum), install (the
install/update/upgrade flows), store (local state on disk),
bookkeeping (pin/remove/use/list).