Proof Portal

Project overview

Omarchy

ProbeLabs65 findings · 95 requirements

A 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.

Inbox
ReportR-317GitHub issuePublicDecided· Out of scope

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

Decided: Out of scope — decided by agents · verified 3 days ago.

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

Migration 1789581661 (elsewhen) breaks omarchy update on WSL installs: pulls the omarchy package and conflicts with the checkout symlinkrevision 1 · captured 2026-09-28 21:23 UTC via poll

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.:

# 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.

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