diff --git a/docs/UX-standards/LM-LA-LIFECYCLE-STANDARD.adoc b/docs/UX-standards/LM-LA-LIFECYCLE-STANDARD.adoc index f7d680fa..f6b0b13a 100644 --- a/docs/UX-standards/LM-LA-LIFECYCLE-STANDARD.adoc +++ b/docs/UX-standards/LM-LA-LIFECYCLE-STANDARD.adoc @@ -55,6 +55,41 @@ and warmup procedures for different user types. == Installation Standard (LM/LA-INSTALL) +[IMPORTANT] +.Relationship to `launcher-standard.adoc` `--integ` / `--disinteg` +==== +As of `launcher-standard.adoc` v0.2.0, the *typical* install path for a +hyperpolymath launcher is the launcher's own `--integ` mode, and removal +is `--disinteg`. When a launcher implements those modes, a separate +`scripts/install.sh` / `scripts/uninstall.sh` is **no longer required**. + +This document remains authoritative for **what** must happen during install +and uninstall (the desktop file, the icon, the integrity hashes, what to +preserve on removal, etc.). `launcher-standard.adoc` is authoritative for +**where** those operations are triggered from (the launcher binary itself). + +The script-based templates in this section are the reference for what +`--integ` / `--disinteg` must accomplish internally — they are not a +parallel, separately-invoked install surface. +==== + +[IMPORTANT] +.Privilege model — user-level by default +==== +Both `--integ` and the templates below MUST be runnable without elevated +privileges. All paths default to the user's home (`~/.local/share`, +`~/.config`, `~/.local/bin`), matching `launcher-standard.adoc` §System +Integration Modes design principle 5 (*"No elevated privileges. No sudo."*). + +`sudo` calls appear in the §Platform Maintainer Warmup template and in +the optional dependency-bootstrap path below. These are **opt-in extensions +for platform maintainers performing a machine-wide deployment** — they MUST +NOT run as part of a default per-user install, and a launcher's `--integ` +MUST NOT invoke them without explicit `--system` opt-in. If a dependency +is missing under a user install, the correct response is to fail with an +actionable error message, not to escalate. +==== + === Requirements Launchers and applications MUST provide: @@ -63,6 +98,7 @@ Launchers and applications MUST provide: - Named: `-install.sh` - Location: `/scripts/install.sh` - Permissions: `755` (executable) + - **Optional** when the launcher implements `--integ` / `--disinteg`. 2. **Idempotent Operations** - Safe to run multiple times @@ -352,6 +388,16 @@ log "✓ Platform setup complete!" == Uninstallation Standard (LM/LA-UNINSTALL) +[IMPORTANT] +.See §Installation Standard +==== +The same `--integ`/`--disinteg` supersedence and user-level-privilege rules +apply here. When the launcher implements `--disinteg`, a separate +`scripts/uninstall.sh` is not required; the template below is the reference +for what `--disinteg` must accomplish. `sudo` paths are opt-in +platform-maintainer extensions and MUST NOT run by default. +==== + === Uninstall Script Requirements [source,bash] diff --git a/launcher/launcher-standard.a2ml b/launcher/launcher-standard.a2ml index 6075d9ec..8e811560 100644 --- a/launcher/launcher-standard.a2ml +++ b/launcher/launcher-standard.a2ml @@ -15,8 +15,8 @@ # - standards/docs/UX-standards/LM-LA-LIFECYCLE-STANDARD.adoc (install/uninstall) [spec] -version = "0.2.0" -date = "2026-04-17" +version = "0.3.0" +date = "2026-05-26" compliance = [ "launcher-standard.adoc", "LM-LA-LIFECYCLE-STANDARD.adoc", @@ -44,10 +44,18 @@ final-shell = "bash -l at REPO_DIR (never 'press enter to close')" [required-modes] # These are the modes every compliant launcher MUST implement. -runtime = ["--start", "--stop", "--status", "--auto", "--browser"] +# Aliases (see [aliases] below) are not listed here — they are accepted +# inputs, not independent obligations. +runtime = ["--start", "--stop", "--status", "--auto"] integration = ["--integ", "--disinteg"] meta = ["--help"] +[aliases] +# Documented mode aliases. Launchers MUST accept these and route them to +# the canonical mode. Prose: launcher-standard.adoc §Required Modes. +"--browser" = "--auto" +"--web" = "--auto" + [optional-modes] # Modes launchers MAY implement for extra functionality. developer = ["--debug", "--logs", "--tail"]