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.
omarchy-migrate mishandles legacy (git-checkout) installs: wrong OMARCHY_PATH default hides pending migrations, and migration 1785608166 aborts the whole queue
Reported by DiegoMirner · filed Aug 16, 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
What happened
On a machine still on the legacy self-updating git-checkout Omarchy install (no omarchy pacman package, ~/.local/share/omarchy a plain git clone, no /usr/share/omarchy), running omarchy-update/omarchy-migrate hit two related bugs. Both stem from the tooling assuming the package-backed layout without detecting or warning when it isn't there.
Bug 1 — `OMARCHY_PATH` defaults to `/usr/share/omarchy`, silently breaking `omarchy-migrate --pending` on legacy installs.
omarchy-migrate defaults OMARCHY_PATH to /usr/share/omarchy. On a legacy git-checkout install that path doesn't exist, so MIGRATIONS_DIR doesn't exist either, and omarchy-migrate --pending reports zero pending migrations — even when dozens actually are — instead of erroring or finding the real checkout. This is a false negative that could easily convince a user their system is fully up to date when it isn't.
Bug 2 — migration `1785608166` ("Repair the pre-suspend lock monitor's graphical session environment") fails hard on legacy installs, and that failure aborts every migration queued after it.
That migration calls systemctl --user reset-failed omarchy-sleep-lock.service. On a legacy git-checkout install, omarchy-sleep-lock.service only exists inside the checkout at default/systemd/user/omarchy-sleep-lock.service — it was never symlinked/copied into any real systemd user unit search path, so systemctl --user status reports it "could not be found" (not just inactive — genuinely absent). reset-failed therefore always fails on this class of install.
The migration's own error message ("The pre-suspend lock repair will be retried by omarchy-migrate.") implies this should be a soft, retryable failure — but omarchy-update's outer script (set -e + an ERR trap) treats any non-zero migration exit as fatal and aborts the entire run. In our case this stranded 28 migrations queued behind it that never got a chance to run, with no indication that this was an issue specific to a legacy install vs. a real regression.
What was expected
Either:
- omarchy-migrate/omarchy-update should detect a legacy (non-package-backed) install and point the user at omarchy-upgrade-to-quattro before attempting migrations that assume the package layout, or
- Migrations that only apply to package-backed installs should detect that and skip cleanly rather than failing, and/or a single migration's soft-failure shouldn't halt every migration queued after it.
Steps to reproduce
- Have a pre-quattro Omarchy install still on the legacy git-checkout self-update model (no
omarchypacman package). - Run
omarchy-update(oromarchy-migratedirectly) without first runningomarchy-upgrade-to-quattroto completion. - Observe:
omarchy-migrate --pendingreports nothing pending despite there being many;omarchy-updateeventually fails on migration1785608166withUnit omarchy-sleep-lock.service not loaded, aborting the whole migration chain.
We hit this specifically because an earlier omarchy-upgrade-to-quattro run was interrupted by an unrelated system freeze partway through, leaving the install in a hybrid state (quattro-branch checkout contents, but none of the package-backed scaffolding). Running omarchy-upgrade-to-quattro to completion (idempotent, pacman -S --needed throughout) resolved both symptoms as a side effect — filing this because the tooling gave no indication that was the needed fix, and failed in a confusing way instead.
System
Omarchy Package: omarchy 4.0.0-1
Kernel: 7.1.8-arch1-3 x86_64
CPU: AMD Ryzen 9 9950X
GPU: AMD RX 6600 (amdgpu)
Motherboard: ASUSTeK PRIME X670E-PRO WIFIFiled by Claude Sonnet 5 via Claude Code.
View raw text
## What happened
On a machine still on the legacy self-updating git-checkout Omarchy install (no `omarchy` pacman package, `~/.local/share/omarchy` a plain git clone, no `/usr/share/omarchy`), running `omarchy-update`/`omarchy-migrate` hit two related bugs. Both stem from the tooling assuming the package-backed layout without detecting or warning when it isn't there.
**Bug 1 — `OMARCHY_PATH` defaults to `/usr/share/omarchy`, silently breaking `omarchy-migrate --pending` on legacy installs.**
`omarchy-migrate` defaults `OMARCHY_PATH` to `/usr/share/omarchy`. On a legacy git-checkout install that path doesn't exist, so `MIGRATIONS_DIR` doesn't exist either, and `omarchy-migrate --pending` reports **zero pending migrations** — even when dozens actually are — instead of erroring or finding the real checkout. This is a false negative that could easily convince a user their system is fully up to date when it isn't.
**Bug 2 — migration `1785608166` ("Repair the pre-suspend lock monitor's graphical session environment") fails hard on legacy installs, and that failure aborts every migration queued after it.**
That migration calls `systemctl --user reset-failed omarchy-sleep-lock.service`. On a legacy git-checkout install, `omarchy-sleep-lock.service` only exists inside the checkout at `default/systemd/user/omarchy-sleep-lock.service` — it was never symlinked/copied into any real systemd user unit search path, so `systemctl --user status` reports it "could not be found" (not just inactive — genuinely absent). `reset-failed` therefore always fails on this class of install.
The migration's own error message ("The pre-suspend lock repair will be retried by omarchy-migrate.") implies this should be a soft, retryable failure — but `omarchy-update`'s outer script (`set -e` + an `ERR` trap) treats any non-zero migration exit as fatal and aborts the entire run. In our case this stranded **28 migrations** queued behind it that never got a chance to run, with no indication that this was an issue specific to a legacy install vs. a real regression.
## What was expected
Either:
- `omarchy-migrate`/`omarchy-update` should detect a legacy (non-package-backed) install and point the user at `omarchy-upgrade-to-quattro` before attempting migrations that assume the package layout, or
- Migrations that only apply to package-backed installs should detect that and skip cleanly rather than failing, and/or a single migration's soft-failure shouldn't halt every migration queued after it.
## Steps to reproduce
1. Have a pre-quattro Omarchy install still on the legacy git-checkout self-update model (no `omarchy` pacman package).
2. Run `omarchy-update` (or `omarchy-migrate` directly) without first running `omarchy-upgrade-to-quattro` to completion.
3. Observe: `omarchy-migrate --pending` reports nothing pending despite there being many; `omarchy-update` eventually fails on migration `1785608166` with `Unit omarchy-sleep-lock.service not loaded`, aborting the whole migration chain.
We hit this specifically because an earlier `omarchy-upgrade-to-quattro` run was interrupted by an unrelated system freeze partway through, leaving the install in a hybrid state (quattro-branch checkout contents, but none of the package-backed scaffolding). Running `omarchy-upgrade-to-quattro` to completion (idempotent, `pacman -S --needed` throughout) resolved both symptoms as a side effect — filing this because the tooling gave no indication that was the needed fix, and failed in a confusing way instead.
## System
```
Omarchy Package: omarchy 4.0.0-1
Kernel: 7.1.8-arch1-3 x86_64
CPU: AMD Ryzen 9 9950X
GPU: AMD RX 6600 (amdgpu)
Motherboard: ASUSTeK PRIME X670E-PRO WIFI
```
---
Filed by Claude Sonnet 5 via Claude Code.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
- Related PRpr/7130· confirmed
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 04:18 UTC