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

imv Ctrl+R overwrites the original image and can leave it unreadable

Reported by erikrjohansson · filed Oct 9, 2026 · open at source

Decided: Out of scope — decided by agents · verified 2 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

imv Ctrl+R overwrites the original image and can leave it unreadablerevision 1 · captured 2026-10-09 15:14 UTC via poll

System details

AMD Ryzen 7 5800X3D, NVIDIA RTX 3080, Omarchy 4.0.4 (imv 5.0.1, imagemagick 7.1.2.31)

What's wrong?

Omarchy's imv config binds Ctrl+R to rewrite the file on disk (added in #3312):

<Ctrl+r> = exec mogrify -rotate 90 "$imv_current_file"

I pressed it on a portrait photo straight from my camera (7008×4672 JPEG, 7 MB). imv stopped responding, and afterwards the JPEG was a 98,304-byte file that no longer decodes ("Premature end of JPEG file").

What I could pin down:

  • imv blocks while the command runs. imv runs exec binds through system() (command_exec in src/imv.c), which explains it not responding while mogrify is running.
  • Interrupting mogrify reproduces the damage. Killing mogrify partway through its ~0.9 s run on a copy of another photo from the same camera left an undecodable JPEG with the same byte count, 98,304.
  • Whether a backup is left depends on the folder. The photo's folder was read-only (dr-x------), but the JPEG itself was writable (-rw-------). In my writable-folder tests, interrupted runs left the untouched original as a ~ backup. In the read-only-folder test, the JPEG was corrupted and nothing was left.

Reproduction on a disposable copy (timing varies; the kill has to land during the write):

d=$(mktemp -d) && cp some-photo.jpg "$d/p.jpg" && chmod 600 "$d/p.jpg" && chmod 500 "$d"
mogrify -rotate 90 "$d/p.jpg" & pid=$!
sleep 0.5; kill -9 "$pid"; wait "$pid"
ls -l "$d"                 # only p.jpg, a fraction of its original size
magick identify "$d/p.jpg" # Premature end of JPEG file

I couldn't find what interrupted mogrify on my machine (nothing in the journal, no core dump, no OOM). Still, Ctrl+R rewrites the original without any on-screen warning, and the test above shows that an interrupted run can leave an unreadable JPEG with no backup.

(Investigated with help from Claude Code.)

View raw text
### System details

AMD Ryzen 7 5800X3D, NVIDIA RTX 3080, Omarchy 4.0.4 (imv 5.0.1, imagemagick 7.1.2.31)

### What's wrong?

Omarchy's imv config binds Ctrl+R to rewrite the file on disk (added in #3312):

```
<Ctrl+r> = exec mogrify -rotate 90 "$imv_current_file"
```

I pressed it on a portrait photo straight from my camera (7008×4672 JPEG, 7 MB). imv stopped responding, and afterwards the JPEG was a 98,304-byte file that no longer decodes ("Premature end of JPEG file").

What I could pin down:

- **imv blocks while the command runs.** imv runs `exec` binds through `system()` (`command_exec` in `src/imv.c`), which explains it not responding while mogrify is running.
- **Interrupting mogrify reproduces the damage.** Killing mogrify partway through its ~0.9 s run on a copy of another photo from the same camera left an undecodable JPEG with the same byte count, 98,304.
- **Whether a backup is left depends on the folder.** The photo's folder was read-only (`dr-x------`), but the JPEG itself was writable (`-rw-------`). In my writable-folder tests, interrupted runs left the untouched original as a `~` backup. In the read-only-folder test, the JPEG was corrupted and nothing was left.

Reproduction on a disposable copy (timing varies; the kill has to land during the write):

```
d=$(mktemp -d) && cp some-photo.jpg "$d/p.jpg" && chmod 600 "$d/p.jpg" && chmod 500 "$d"
mogrify -rotate 90 "$d/p.jpg" & pid=$!
sleep 0.5; kill -9 "$pid"; wait "$pid"
ls -l "$d"                 # only p.jpg, a fraction of its original size
magick identify "$d/p.jpg" # Premature end of JPEG file
```

I couldn't find what interrupted mogrify on my machine (nothing in the journal, no core dump, no OOM). Still, Ctrl+R rewrites the original without any on-screen warning, and the test above shows that an interrupted run can leave an unreadable JPEG with no backup.

(Investigated with help from 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

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 23:51 UTC