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

`omarchy plugin remove` prints "Restored <source>." when the source stays disabled

Reported by yeomanse · 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

`omarchy plugin remove` prints "Restored <source>." when the source stays disabledrevision 1 · captured 2026-09-28 21:23 UTC via poll

System details

Intel Core Ultra 7 256V, Intel Arc 130V/140V, Omarchy 4.0.4-1

What's wrong?

Removing an enabled clone always prints Restored <source>., but the source is only re-enabled when enabling the clone is what disabled it. If the source was already disabled when the clone was enabled, remove leaves both disabled and still reports the restore. For a clone of omarchy.lock this leaves no lock screen.

Steps, with a harmless panel:

omarchy plugin clone omarchy.disk-speedtest
omarchy plugin disable $USER.disk-speedtest
omarchy plugin disable omarchy.disk-speedtest
omarchy plugin enable $USER.disk-speedtest
omarchy plugin remove $USER.disk-speedtest --yes
omarchy plugin list --json | jq -c '.[] | select(.id == "omarchy.disk-speedtest") | {id, enabled}'

Output:

Removed <user>.disk-speedtest. Backup at: ...
Restored omarchy.disk-speedtest.
{"id":"omarchy.disk-speedtest","enabled":false}

The state is the same after waiting or omarchy-shell shell rescanPlugins. Without the two disable steps, remove restores the source as expected.

PluginRegistry.qml only records a clone in cloneSourceRestores when its source wasn't already disabled, which looks intentional (the registry fixture checks it). bin/omarchy-plugin-remove prints the message without checking the source's state.

Preferably it would only print Restored <source>. when the source was actually re-enabled.

View raw text
### System details

Intel Core Ultra 7 256V, Intel Arc 130V/140V, Omarchy 4.0.4-1

### What's wrong?

Removing an enabled clone always prints `Restored <source>.`, but the source is only re-enabled when enabling the clone is what disabled it. If the source was already disabled when the clone was enabled, `remove` leaves both disabled and still reports the restore. For a clone of `omarchy.lock` this leaves no lock screen.

Steps, with a harmless panel:

```bash
omarchy plugin clone omarchy.disk-speedtest
omarchy plugin disable $USER.disk-speedtest
omarchy plugin disable omarchy.disk-speedtest
omarchy plugin enable $USER.disk-speedtest
omarchy plugin remove $USER.disk-speedtest --yes
omarchy plugin list --json | jq -c '.[] | select(.id == "omarchy.disk-speedtest") | {id, enabled}'
```

Output:

```
Removed <user>.disk-speedtest. Backup at: ...
Restored omarchy.disk-speedtest.
{"id":"omarchy.disk-speedtest","enabled":false}
```

The state is the same after waiting or `omarchy-shell shell rescanPlugins`. Without the two `disable` steps, `remove` restores the source as expected.

`PluginRegistry.qml` only records a clone in `cloneSourceRestores` when its source wasn't already disabled, which looks intentional (the registry fixture checks it). `bin/omarchy-plugin-remove` prints the message without checking the source's state.

Preferably it would only print `Restored <source>.` when the source was actually re-enabled.

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 19:56 UTC