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.
Factory reset drops other systems' boot entries from a shared ESP
Reported by xdanger · filed Sep 28, 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
System details
QEMU/KVM VM (OVMF, 16 vCPUs, 8 GB), fresh install from an edge ISO built from omarchy-iso 86c0778 and omarchy b18ab495.
What's wrong?
On a machine whose ESP is shared with other operating systems, omarchy-system-factory-reset drops the other systems' Limine entries and deletes another Linux installation's machine-id directory while it stages the reset. Windows' boot files survive, but Limine no longer lists Windows or the other Linux, so after a reset the Limine menu can only boot Omarchy.
The cause is reset_limine_config in bin/omarchy-system-factory-reset:
- It copies the shipped template over the ESP's
limine.conf. That removes every entry that isn't the new Omarchy one, including/Windowsand other Linux installations, not just the stale Omarchy entry. - It collects every
machine-id=in the oldlimine.confand deletes the matching ESP directory for each one except the new ID. The comment says other installations' directories are safe, but a second Linux install managed by limine-entry-tool is listed inlimine.conftoo, so its directory gets deleted.
To reproduce: omarchy-iso's factory-reset integration scenario covers this case: ./test/integration <iso> factory-reset. It adds a /Windows entry and a second Linux entry to the ESP, with a foreign machine-id, boot directory, and UKI, and then runs the reset. The staging checks:
not ok - windows entry survives staging
ok - windows boot payload survives staging
not ok - foreign linux entry survives staging
not ok - foreign boot directory survives staging
not ok - foreign UKI survives staging
ok - old omarchy entry is removed by staging
ok - old omarchy boot directory is removed by staging
ok - a fresh omarchy entry exists after stagingI read the staged ESP directly:
EFI/Microsoft/Boot/bootmgfw.efiandEFI/Linux/foreign_linux-omarchy.efiare still there.limine.confcontains only the new Omarchy entry and the EFI fallback.- The foreign
/<machine-id>/directory is gone.
The `foreign UKI` check is itself stale. It looks for EFI/Linux/foreign_linux.efi, but since the ISO switched to linux-omarchy, the fixture creates foreign_linux-omarchy.efi. That UKI survives, so this check fails on the wrong path. The other three failures are real.
A possible fix: keep the existing limine.conf and remove only the OS entries and directory that belong to the machine-id being replaced, instead of starting over from the template.
Also noticed, not investigated: after staging, the new entry's cmdline has an empty resume= (it was resume=/dev/vda2 before the reset). The UKI rebuild in the chroot also logged ==> ERROR: failed to detect root filesystem from mkinitcpio's autodetect hook. I haven't checked whether resuming from hibernation still works after a reset.
View raw text
### System details QEMU/KVM VM (OVMF, 16 vCPUs, 8 GB), fresh install from an edge ISO built from omarchy-iso 86c0778 and omarchy b18ab495. ### What's wrong? On a machine whose ESP is shared with other operating systems, `omarchy-system-factory-reset` drops the other systems' Limine entries and deletes another Linux installation's machine-id directory while it stages the reset. Windows' boot files survive, but Limine no longer lists Windows or the other Linux, so after a reset the Limine menu can only boot Omarchy. The cause is `reset_limine_config` in `bin/omarchy-system-factory-reset`: - It copies the shipped template over the ESP's `limine.conf`. That removes every entry that isn't the new Omarchy one, including `/Windows` and other Linux installations, not just the stale Omarchy entry. - It collects every `machine-id=` in the old `limine.conf` and deletes the matching ESP directory for each one except the new ID. The comment says other installations' directories are safe, but a second Linux install managed by limine-entry-tool is listed in `limine.conf` too, so its directory gets deleted. **To reproduce:** omarchy-iso's `factory-reset` integration scenario covers this case: `./test/integration <iso> factory-reset`. It adds a `/Windows` entry and a second Linux entry to the ESP, with a foreign machine-id, boot directory, and UKI, and then runs the reset. The staging checks: ``` not ok - windows entry survives staging ok - windows boot payload survives staging not ok - foreign linux entry survives staging not ok - foreign boot directory survives staging not ok - foreign UKI survives staging ok - old omarchy entry is removed by staging ok - old omarchy boot directory is removed by staging ok - a fresh omarchy entry exists after staging ``` I read the staged ESP directly: - `EFI/Microsoft/Boot/bootmgfw.efi` and `EFI/Linux/foreign_linux-omarchy.efi` are still there. - `limine.conf` contains only the new Omarchy entry and the EFI fallback. - The foreign `/<machine-id>/` directory is gone. **The `foreign UKI` check is itself stale.** It looks for `EFI/Linux/foreign_linux.efi`, but since the ISO switched to `linux-omarchy`, the fixture creates `foreign_linux-omarchy.efi`. That UKI survives, so this check fails on the wrong path. The other three failures are real. **A possible fix:** keep the existing `limine.conf` and remove only the OS entries and directory that belong to the machine-id being replaced, instead of starting over from the template. **Also noticed, not investigated:** after staging, the new entry's cmdline has an empty `resume=` (it was `resume=/dev/vda2` before the reset). The UKI rebuild in the chroot also logged `==> ERROR: failed to detect root filesystem` from mkinitcpio's `autodetect` hook. I haven't checked whether resuming from hibernation still works after a reset.
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 20:05 UTC