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-1769GitHub issuePublicFixed

ripgrep is an unchecked test dependency, and without it nine guards report ok instead of failing

Reported by omarchybot · filed Aug 16, 2026 · open at source

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

ripgrep is an unchecked test dependency, and without it nine guards report ok instead of failingrevision 1 · captured 2026-09-28 21:29 UTC via poll

System details: Omarchy quattro @ 7488eade (post-4.0.0), QEMU/KVM VM. Found by an automated QA pass; reproduced on a disposable worker VM.

rg is an unchecked hard dependency of the test suite, and without it nine guards report ok instead of failing.

base-test.sh provides require_command, and 30+ files use it for jq, python3 and node. Nothing in test/ ever calls require_command rg:

$ grep -rn 'require_command rg' test/
(no matches)

Twelve files use rg anyway, and every one of these guards is written in negative form, where a failing rg reads as "clean":

if rg -q 'barMoveSettling|barMoveSettleTimer' "$ROOT/shell/plugins/bar/Bar.qml"; then
  fail "bar move outline must clear when the pointer is released"
fi
pass "bar move outline has no post-release settling state"

A command that fails inside if is exempt from set -e, so a missing rg (exit 127) takes the "no match" branch and prints ok. The same holds if a grepped file is ever renamed — rg exits 2 and the guard evaporates silently rather than failing.

bin-style-test.sh:7-15 is the worst shape, because it swallows the error explicitly and both its assertions can only ever pass:

raw_command_checks=$(rg -l 'command -v' "$ROOT/bin" | rg -v '/omarchy-...' || true)
[[ -z $raw_command_checks ]] || fail "bin commands use command helpers"
pass "bin commands use command helpers"

Replacing rg with a stub that behaves like "command not found":

$ printf '#!/bin/bash\necho "rg: command not found" >&2\nexit 127\n' > "$mask/rg"
$ for t in bin-style idle nightlight windows-vm battery-status panel-command-path bar; do
    PATH="$mask:$PATH" bash test/shell.d/$t-test.sh; done

bin-style-test.sh          exit=0   rg: command not found | ok - bin commands use command helpers
                                    rg: command not found | ok - bin commands use the notification helper
idle-test.sh               exit=0   ok - Stay Awake toggle persists state without reentrant shell IPC
nightlight-test.sh         exit=0   ok - nightlight toggle leaves indicator refresh to the nightlight service
battery-status-test.sh     exit=0   rg: command not found | ok - battery status owns capacity and remaining calculations
panel-command-path-test.sh exit=0   rg: command not found | ok - panels avoid bar path resolution for omarchy helpers
bar-test.sh                exit=0   ok - bar move outline has no post-release settling state
windows-vm-test.sh         exit=1   rg: command not found | not ok - Windows VM uses manual startup by default

Six of seven go green. panel-command-path-test.sh has only that one assertion, so the whole file becomes a no-op.

windows-vm-test.sh is the only one written in positive form and the only one that fails loudly — which is the fix for the rest, alongside a require_command rg in base-test.sh and in test/cli (which has no require_command at all, and two rg guards at :422 and :445).

Affected: bin-style-test.sh, panel-command-path-test.sh, idle-test.sh:50, nightlight-test.sh:89, battery-status-test.sh:47, bar-test.sh:17, indicator-contract-test.sh:73, test/cli:422,445.


Correction, after an independent review of this report:

Narrower than filed. A missing rg silently invalidates nine ordinary negative assertions plus one compositor-gated assertion across eight files -- but four other rg-using files fail loudly, so the complete shell suite does not pass green without ripgrep. Ripgrep is also in Omarchy's core package set, so the exposure is a nonstandard dev host, a deliberately masked PATH, or a broken install, rather than a routine machine.

View raw text
**System details:** Omarchy `quattro` @ 7488eade (post-4.0.0), QEMU/KVM VM. Found by an automated QA pass; reproduced on a disposable worker VM.

`rg` is an unchecked hard dependency of the test suite, and without it nine guards report `ok` instead of failing.

`base-test.sh` provides `require_command`, and 30+ files use it for `jq`, `python3` and `node`. Nothing in `test/` ever calls `require_command rg`:

```
$ grep -rn 'require_command rg' test/
(no matches)
```

Twelve files use `rg` anyway, and every one of these guards is written in negative form, where a failing `rg` reads as "clean":

```bash
if rg -q 'barMoveSettling|barMoveSettleTimer' "$ROOT/shell/plugins/bar/Bar.qml"; then
  fail "bar move outline must clear when the pointer is released"
fi
pass "bar move outline has no post-release settling state"
```

A command that fails inside `if` is exempt from `set -e`, so a missing `rg` (exit 127) takes the "no match" branch and prints `ok`. The same holds if a grepped file is ever renamed — `rg` exits 2 and the guard evaporates silently rather than failing.

`bin-style-test.sh:7-15` is the worst shape, because it swallows the error explicitly and both its assertions can only ever pass:

```bash
raw_command_checks=$(rg -l 'command -v' "$ROOT/bin" | rg -v '/omarchy-...' || true)
[[ -z $raw_command_checks ]] || fail "bin commands use command helpers"
pass "bin commands use command helpers"
```

Replacing `rg` with a stub that behaves like "command not found":

```
$ printf '#!/bin/bash\necho "rg: command not found" >&2\nexit 127\n' > "$mask/rg"
$ for t in bin-style idle nightlight windows-vm battery-status panel-command-path bar; do
    PATH="$mask:$PATH" bash test/shell.d/$t-test.sh; done

bin-style-test.sh          exit=0   rg: command not found | ok - bin commands use command helpers
                                    rg: command not found | ok - bin commands use the notification helper
idle-test.sh               exit=0   ok - Stay Awake toggle persists state without reentrant shell IPC
nightlight-test.sh         exit=0   ok - nightlight toggle leaves indicator refresh to the nightlight service
battery-status-test.sh     exit=0   rg: command not found | ok - battery status owns capacity and remaining calculations
panel-command-path-test.sh exit=0   rg: command not found | ok - panels avoid bar path resolution for omarchy helpers
bar-test.sh                exit=0   ok - bar move outline has no post-release settling state
windows-vm-test.sh         exit=1   rg: command not found | not ok - Windows VM uses manual startup by default
```

Six of seven go green. `panel-command-path-test.sh` has only that one assertion, so the whole file becomes a no-op.

`windows-vm-test.sh` is the only one written in positive form and the only one that fails loudly — which is the fix for the rest, alongside a `require_command rg` in `base-test.sh` and in `test/cli` (which has no `require_command` at all, and two `rg` guards at `:422` and `:445`).

Affected: `bin-style-test.sh`, `panel-command-path-test.sh`, `idle-test.sh:50`, `nightlight-test.sh:89`, `battery-status-test.sh:47`, `bar-test.sh:17`, `indicator-contract-test.sh:73`, `test/cli:422,445`.

---

**Correction, after an independent review of this report:**

Narrower than filed. A missing `rg` silently invalidates nine ordinary negative assertions plus one compositor-gated assertion across eight files -- but four other `rg`-using files fail loudly, so the complete shell suite does not pass green without ripgrep. Ripgrep is also in Omarchy's core package set, so the exposure is a nonstandard dev host, a deliberately masked `PATH`, or a broken install, rather than a routine machine.

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

  • Fixed bypr/7405· confirmed

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.