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-2086GitHub issuePublicDecided· Out of scope

Factory reset drops other systems' boot entries from a shared ESP

Reported by xdanger · filed Sep 28, 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

Factory reset drops other systems' boot entries from a shared ESPrevision 1 · captured 2026-09-28 22:10 UTC via poll

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.

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