Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 46 additions & 0 deletions docs/UX-standards/LM-LA-LIFECYCLE-STANDARD.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand All @@ -63,6 +98,7 @@ Launchers and applications MUST provide:
- Named: `<app-name>-install.sh`
- Location: `<repo-root>/scripts/install.sh`
- Permissions: `755` (executable)
- **Optional** when the launcher implements `--integ` / `--disinteg`.

2. **Idempotent Operations**
- Safe to run multiple times
Expand Down Expand Up @@ -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]
Expand Down
14 changes: 11 additions & 3 deletions launcher/launcher-standard.a2ml
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down Expand Up @@ -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"]
Expand Down
Loading