Proof Portal
Omarchy
ProbeLabs65 findings · 95 requirementsA proof layer — requirements, tests and verified fixes — for two of Omarchy's subsystems: the application menu (launcher scripts, QML model, JSONC config, search and selection) and the lock screen (lock scripts, QML, PAM authentication). Scope is deliberately limited to those components of omacom/omarchy; the rest of the distribution is not covered.
Migration 1789581661 (elsewhen) breaks omarchy update on WSL installs: pulls the omarchy package and conflicts with the checkout symlink
Reported by TMartinPPC · filed Sep 19, 2026 · open at source
At a glance
- 1 · What is claimed?
- Only the report text below — no validator has restated it as checkable claims yet.
- 2 · What does it affect?
- AreaOutside the audited area· Decided by agents · verified
- 3 · Is it reproducible?
- No validation has been run yet.
- 4 · What remains unclear?
- Not validated yet: no claims, no reproducer.
- 5 · What happens next?
- Decided by agents and verified by a second, independent agent — see the decision.
Original report
Summary
Migration 1789581661 ("Install Elsewhen, the world clock plugin", merged in 60663faf / PR #12157) fails on WSL installs and takes the whole omarchy update down with it. It also re-fails on every subsequent update because the migration marker is only written on success.
Environment
- Omarchy:
dev (v4.0.0-425-g60663faf), branchquattro - Platform: WSL2 (Arch), installed via
omarchy-wsl-install - On WSL installs there is no
omarchy/omarchy-settingspacman package:/etc/omarchy.conf(written by omarchy-wsl-install) pointsOMARCHY_PATHat the git checkout, and/usr/share/omarchyis a symlink to~/.local/share/omarchy
What happened
omarchy update pulled 60663faf, then ran migration 1789581661, which calls omarchy-pkg-add elsewhen (i.e. pacman -S --needed elsewhen). The elsewhen package Depends On: omarchy python quickshell, and omarchy is not installed on WSL, so pacman resolved the entire packaged desktop — 99 packages, 462 MiB (omarchy, omarchy-settings, hyprland, gtk3, sddm, plymouth, limine, ...) — and then aborted:
error: failed to commit transaction (conflicting files)
omarchy-settings: /usr/share/omarchy exists in filesystem
omarchy: /usr/share/omarchy/bin/omarchy exists in filesystem
elsewhen: /usr/share/omarchy exists in filesystem
Errors occurred, no packages were upgraded.Every conflicting path is a file that already exists under the /usr/share/omarchy symlink and is owned by no package. The transaction aborts atomically, the migration exits non-zero under set -euo pipefail, no state marker is written, and omarchy update reports "Something went wrong during the update!". The next update re-runs the same migration and fails the same way — the update flow is wedged until manual intervention.
Expected
The migration should no-op on installs where the omarchy package is not installed (WSL installs; omarchy dev link checkouts without the package). The omarchy shell doesn't run under WSL, so there is nothing to install the plugin into.
Proposed fix
Guard the migration up front, e.g.:
# WSL/dev-link installs run Omarchy from a checkout without the omarchy
# package; installing elsewhile here would pull the entire packaged
# desktop in as a dependency and conflict with the checkout symlink.
pacman -Qi omarchy &>/dev/null || exit 0Plus a test case alongside test/shell.d/elsewhen-default-migration-test.sh covering the unpackaged-install path. The same pattern applies to any future migration that ships a shell plugin via omarchy-pkg-add.
Workaround applied
touch ~/.local/state/omarchy/migrations/1789581661.sh — the documented migration state marker; the update then completes cleanly.
View raw text
### Summary
Migration `1789581661` ("Install Elsewhen, the world clock plugin", merged in 60663faf / PR #12157) fails on WSL installs and takes the whole `omarchy update` down with it. It also re-fails on every subsequent update because the migration marker is only written on success.
### Environment
- Omarchy: `dev (v4.0.0-425-g60663faf)`, branch `quattro`
- Platform: WSL2 (Arch), installed via `omarchy-wsl-install`
- On WSL installs there is no `omarchy` / `omarchy-settings` pacman package: `/etc/omarchy.conf` (written by omarchy-wsl-install) points `OMARCHY_PATH` at the git checkout, and `/usr/share/omarchy` is a symlink to `~/.local/share/omarchy`
### What happened
`omarchy update` pulled 60663faf, then ran migration `1789581661`, which calls `omarchy-pkg-add elsewhen` (i.e. `pacman -S --needed elsewhen`). The `elsewhen` package `Depends On: omarchy python quickshell`, and `omarchy` is not installed on WSL, so pacman resolved the entire packaged desktop — 99 packages, 462 MiB (`omarchy`, `omarchy-settings`, `hyprland`, `gtk3`, `sddm`, `plymouth`, `limine`, ...) — and then aborted:
```
error: failed to commit transaction (conflicting files)
omarchy-settings: /usr/share/omarchy exists in filesystem
omarchy: /usr/share/omarchy/bin/omarchy exists in filesystem
elsewhen: /usr/share/omarchy exists in filesystem
Errors occurred, no packages were upgraded.
```
Every conflicting path is a file that already exists under the `/usr/share/omarchy` symlink and is owned by no package. The transaction aborts atomically, the migration exits non-zero under `set -euo pipefail`, no state marker is written, and `omarchy update` reports "Something went wrong during the update!". The next update re-runs the same migration and fails the same way — the update flow is wedged until manual intervention.
### Expected
The migration should no-op on installs where the omarchy package is not installed (WSL installs; `omarchy dev link` checkouts without the package). The omarchy shell doesn't run under WSL, so there is nothing to install the plugin into.
### Proposed fix
Guard the migration up front, e.g.:
```bash
# WSL/dev-link installs run Omarchy from a checkout without the omarchy
# package; installing elsewhile here would pull the entire packaged
# desktop in as a dependency and conflict with the checkout symlink.
pacman -Qi omarchy &>/dev/null || exit 0
```
Plus a test case alongside `test/shell.d/elsewhen-default-migration-test.sh` covering the unpackaged-install path. The same pattern applies to any future migration that ships a shell plugin via `omarchy-pkg-add`.
### Workaround applied
`touch ~/.local/state/omarchy/migrations/1789581661.sh` — the documented migration state marker; the update then completes cleanly.
Validation
Not checked yet. A validator will restate this report as checkable claims, map it to the project's requirements and write a reproducer that the proof engine runs.
Linked
Not linked to any known issue, other report or change yet.
Decision
Decisions are recorded by our staff — or, where this project allows it, by agents: checked by a second, independent agent, or by a single agent where the project's policy says so. Any decision reached so far is shown below.
- Out of scopeDecided by agents · verified · 2026-10-09 15:58 UTC