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-4533GitHub issuePublicReceived

upgrade-to-quattro: missing bin/omarchy-done aborts at step 18/30 and leaves # both NetworkManager and iwd enabled

Reported by jfbourdeau · filed Aug 6, 2026Closed upstream on 2026-08-08 by the merge of PR #6617 (closed by dhh). GitHub close reason: completed.

Received and recorded verbatim. Nothing has been checked yet.

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?
Not yet mapped to any requirement or component.
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?
Our staff decide whether the report is valid. Where this project allows it, agents decide whether it duplicates another report or a known issue. No decision has been recorded yet.

Original report

upgrade-to-quattro: missing bin/omarchy-done aborts at step 18/30 and leaves # both NetworkManager and iwd enabledrevision 1 · captured 2026-10-04 11:56 UTC via poll

System details

Lenovo Yoga C640 (81UE), Intel i7-10510U, kernel 7.1.5-arch1-2, # omarchy-dev 4.0.0.r1541.gfd1034f (edge) — upgraded from Omarchy 3.8.4

What's wrong?

Upgrading 3.8.4 → Quattro with omarchy-upgrade-to-quattro, the run ended with:

==> Applying Omarchy quattro system transition
==> Applying Omarchy firewall defaults
==> Normalizing SDDM login configuration
==> Applying Omarchy quattro user transition
bash: line 831: /usr/share/omarchy/bin/omarchy-done: No such file or directory

and returned to the prompt — no error summary and no reboot prompt, so it reads as
if the upgrade had finished.

Cause. The script is fetched from quattro branch HEAD, but the installed package
(omarchy-dev 4.0.0.r1046.gd570d99 at the time) did not ship bin/omarchy-done, which the
script calls at the end of the user-transition block:

"$root/bin/omarchy-done" mark first-run-user
...
"$root/bin/omarchy-done" mark finalize-user

Under set -euo pipefail that aborts the whole run inside apply_user_transition — the
18th of 30 top-level calls.

Why this is more than cosmetic: the machine is unsafe to reboot in that state.
apply_system_transition had already enabled NetworkManager, but cleanup_retired_services
— the step that disables iwd — is one of the twelve that never ran:

$ systemctl is-enabled NetworkManager iwd
enabled
enabled

Rebooting there starts two network managers competing for the Wi-Fi adapter, on a laptop
that was just upgraded over Wi-Fi. Also still pending at that point: waybar/walker removal,
omarchy-bar defaults, post-upgrade migrations, the final package upgrade, and
restore_hyprland_config_reload (Hyprland reloads stay suppressed).

Workaround that worked

sudo curl -fsSL https://raw.githubusercontent.com/basecamp/omarchy/refs/heads/quattro/bin/omarchy-done \
  -o /usr/share/omarchy/bin/omarchy-done && sudo chmod +x /usr/share/omarchy/bin/omarchy-done
bash ~/upgrade-to-quattro.sh --dev

The re-run completed all 30 steps, reached the reboot prompt, and the system came up clean
(hyprctl configerrors empty, Quickshell running, NetworkManager fine). It also moved
omarchy-dev from r1046 to r1541, which is presumably why the file exists now — so this
is likely only reproducible when the packaged build lags the branch, i.e. on edge.

Suggestions

  1. Guard the call — [ -x "$root/bin/omarchy-done" ] && …, or write the marker file

directly as a fallback. A "mark setup as done" step shouldn't be able to abort an OS
migration two-thirds of the way through.
2. Make the network switch atomic: disable iwd in the same step that enables
NetworkManager, so no failure path can leave both enabled.
3. On non-zero exit, print a loud "upgrade incomplete — do NOT reboot, re-run the script".
Currently set -e exits silently and the last visible line looks like normal progress.

View raw text
### System details

Lenovo Yoga C640 (81UE), Intel i7-10510U, kernel 7.1.5-arch1-2,  #   omarchy-dev 4.0.0.r1541.gfd1034f (edge) — upgraded from Omarchy 3.8.4

### What's wrong?

Upgrading 3.8.4 → Quattro with `omarchy-upgrade-to-quattro`, the run ended with:

```
==> Applying Omarchy quattro system transition
==> Applying Omarchy firewall defaults
==> Normalizing SDDM login configuration
==> Applying Omarchy quattro user transition
bash: line 831: /usr/share/omarchy/bin/omarchy-done: No such file or directory
```

and returned to the prompt — no error summary and no reboot prompt, so it reads as
if the upgrade had finished.

**Cause.** The script is fetched from `quattro` branch HEAD, but the installed package
(`omarchy-dev 4.0.0.r1046.gd570d99` at the time) did not ship `bin/omarchy-done`, which the
script calls at the end of the user-transition block:

```bash
"$root/bin/omarchy-done" mark first-run-user
...
"$root/bin/omarchy-done" mark finalize-user
```

Under `set -euo pipefail` that aborts the whole run inside `apply_user_transition` — the
**18th of 30 top-level calls**.

**Why this is more than cosmetic: the machine is unsafe to reboot in that state.**
`apply_system_transition` had already enabled NetworkManager, but `cleanup_retired_services`
— the step that disables `iwd` — is one of the twelve that never ran:

```
$ systemctl is-enabled NetworkManager iwd
enabled
enabled
```

Rebooting there starts two network managers competing for the Wi-Fi adapter, on a laptop
that was just upgraded over Wi-Fi. Also still pending at that point: waybar/walker removal,
`omarchy-bar defaults`, post-upgrade migrations, the final package upgrade, and
`restore_hyprland_config_reload` (Hyprland reloads stay suppressed).

**Workaround that worked**

```bash
sudo curl -fsSL https://raw.githubusercontent.com/basecamp/omarchy/refs/heads/quattro/bin/omarchy-done \
  -o /usr/share/omarchy/bin/omarchy-done && sudo chmod +x /usr/share/omarchy/bin/omarchy-done
bash ~/upgrade-to-quattro.sh --dev
```

The re-run completed all 30 steps, reached the reboot prompt, and the system came up clean
(`hyprctl configerrors` empty, Quickshell running, NetworkManager fine). It also moved
`omarchy-dev` from `r1046` to `r1541`, which is presumably why the file exists now — so this
is likely only reproducible when the packaged build lags the branch, i.e. on `edge`.

**Suggestions**

1. Guard the call — `[ -x "$root/bin/omarchy-done" ] && …`, or write the marker file
   directly as a fallback. A "mark setup as done" step shouldn't be able to abort an OS
   migration two-thirds of the way through.
2. Make the network switch atomic: disable `iwd` in the same step that enables
   NetworkManager, so no failure path can leave both enabled.
3. On non-zero exit, print a loud **"upgrade incomplete — do NOT reboot, re-run the script"**.
   Currently `set -e` exits silently and the last visible line looks like normal progress.

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.

No decision has been recorded yet.