Commit 7ae32cf
fix(launcher-standard): resolve 3 cross-doc contradictions (#170)
## Summary
The launcher standard (`docs/UX-standards/launcher-standard.adoc` +
`launcher/launcher-standard.a2ml`) and the lifecycle standard
(`docs/UX-standards/LM-LA-LIFECYCLE-STANDARD.adoc`) disagreed on three
points. Each was a real contradiction — not stylistic drift — and would
have left a downstream implementer unsure which doc to follow.
- **`--browser` was listed as an independent required mode** in the a2ml
while prose calls it an alias for `--auto`. Split `[required-modes]`
(canonical only) from a new `[aliases]` table mapping
`--browser`/`--web` → `--auto`. Same enforcement, cleaner taxonomy.
- **`--integ` / `--disinteg` supersede the standalone install/uninstall
scripts** (per launcher-standard.adoc v0.2.0), but LM-LA never absorbed
the change. Added `IMPORTANT` callouts to §Installation Standard and
§Uninstallation Standard scoping the script templates as reference for
what `--integ` / `--disinteg` must do internally, and marking the
standalone scripts optional when those modes exist.
- **`sudo` violation**: launcher-standard.adoc design principle 5
forbids
elevated privileges, but the LM-LA templates ran `sudo dnf`, `sudo cp`,
`sudo systemctl`. Added a "Privilege model" callout: sudo paths are
opt-in platform-maintainer extensions for machine-wide deployment only;
a launcher's `--integ` MUST NOT invoke them without explicit `--system`
opt-in. Missing deps under a user install fail with an actionable
message, not escalate.
Spec version bumped 0.2.0 → 0.3.0 (taxonomy change in
`[required-modes]`;
behaviour for compliant launchers is unchanged because every accepted
input is still accepted).
## Out of scope (follow-ups identified but deferred)
Surfaced during the same review, not bundled here so this PR stays
small enough to read:
- No CI gate enforcing the prose↔a2ml lock-step requirement stated in
`launcher/README.adoc:37-39`.
- Hard-coded `/var/mnt/eclipse/repos/...` paths in the a2ml fallback and
`.desktop` examples — breaks on non-eclipse hosts.
- Browser launcher missing macOS `open`, WSL `wslview`, `\$BROWSER`.
- `wait_for_server` flat-1s polling ignores the
`wait-for-url-timeout-seconds` constant the a2ml already declares.
- PID/log under predictable `/tmp/` names — symlink-attack target on
shared hosts; should use `\$XDG_RUNTIME_DIR` / `\$XDG_STATE_HOME`.
- `keepopen.sh` doesn't honour `NO_COLOR`.
- `gui-dialog-chain` and `[soft-attach]` declared in a2ml without
reference impl → every downstream launcher will reinvent.
- `--version` mode missing entirely from required-modes.
Happy to take any of these in follow-up PRs.
## Test plan
- [x] AsciiDoc renders (visual diff — only added `[IMPORTANT]` blocks
and one bullet)
- [x] a2ml parses (additive `[aliases]` table + literal-string list
shortening)
- [ ] Downstream `launch-scaffolder` rebuild picks up the new
`[aliases]` table (separate repo)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>1 parent 37ccfb4 commit 7ae32cf
2 files changed
Lines changed: 57 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
55 | 55 | | |
56 | 56 | | |
57 | 57 | | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
58 | 93 | | |
59 | 94 | | |
60 | 95 | | |
| |||
63 | 98 | | |
64 | 99 | | |
65 | 100 | | |
| 101 | + | |
66 | 102 | | |
67 | 103 | | |
68 | 104 | | |
| |||
352 | 388 | | |
353 | 389 | | |
354 | 390 | | |
| 391 | + | |
| 392 | + | |
| 393 | + | |
| 394 | + | |
| 395 | + | |
| 396 | + | |
| 397 | + | |
| 398 | + | |
| 399 | + | |
| 400 | + | |
355 | 401 | | |
356 | 402 | | |
357 | 403 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
15 | 15 | | |
16 | 16 | | |
17 | 17 | | |
18 | | - | |
19 | | - | |
| 18 | + | |
| 19 | + | |
20 | 20 | | |
21 | 21 | | |
22 | 22 | | |
| |||
44 | 44 | | |
45 | 45 | | |
46 | 46 | | |
47 | | - | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
48 | 50 | | |
49 | 51 | | |
50 | 52 | | |
| |||
61 | 63 | | |
62 | 64 | | |
63 | 65 | | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
64 | 72 | | |
65 | 73 | | |
66 | 74 | | |
| |||
0 commit comments