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

Update icon appears on only one monitor: concurrent omarchy-update-available runs race inside checkupdates

Reported by kevinbsr · filed Sep 16, 2026Closed upstream on 2026-10-12 by the bot omarchybot, as a duplicate of #11077 (R-748). GitHub close reason: duplicate.

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

Update icon appears on only one monitor: concurrent omarchy-update-available runs race inside checkupdatesrevision 1 · captured 2026-09-28 21:23 UTC via poll

What happens

With more than one bar (one per monitor), the pending-update icon shows up on some monitors and not others, and stays that way for up to six hours.

Why

SystemUpdate.qml is instantiated once per bar, and each instance runs omarchy-update-available from its own Timer with triggeredOnStart: true, so every monitor starts one at the same instant. omarchy-update-available calls checkupdates, which shares one temporary database per user (${TMPDIR}/checkup-db-${UID}/) guarded by db.lck. When two runs overlap, the loser prints ==> ERROR: Cannot fetch updates and exits 1. The widget maps that exit code straight to updateAvailable = false, so that monitor's bar hides the icon until the next six-hour check.

Reproduce

$ (omarchy-update-available; echo "A=$?") & (omarchy-update-available; echo "B=$?") & wait
omarchy-dev 4.0.0.r2138.gf2b419d-1 -> 4.0.0.r2147.g2fbac0c-1
B=0
Omarchy is up to date
A=1

Run alone, it always reports the update. Two monitors, two bars, same result in the UI: the icon appears on one bar only.

Environment

omarchy-dev 4.0.0.r2138.gf2b419d-1, quickshell 0.3.1-1, three monitors (two with a bar).

Possible fixes

  • Serialize the script with flock and cache the result briefly, so all bars see the same answer (what I am running locally).
  • Or have a single instance own the check and broadcast the result, since broadcast already exists for refresh/clear.
  • Either way, checkupdates failing should probably not be indistinguishable from "no updates".

Happy to send a PR for whichever you prefer.

View raw text
## What happens

With more than one bar (one per monitor), the pending-update icon shows up on some monitors and not others, and stays that way for up to six hours.

## Why

`SystemUpdate.qml` is instantiated once per bar, and each instance runs `omarchy-update-available` from its own `Timer` with `triggeredOnStart: true`, so every monitor starts one at the same instant. `omarchy-update-available` calls `checkupdates`, which shares one temporary database per user (`${TMPDIR}/checkup-db-${UID}/`) guarded by `db.lck`. When two runs overlap, the loser prints `==> ERROR: Cannot fetch updates` and exits 1. The widget maps that exit code straight to `updateAvailable = false`, so that monitor's bar hides the icon until the next six-hour check.

## Reproduce

```
$ (omarchy-update-available; echo "A=$?") & (omarchy-update-available; echo "B=$?") & wait
omarchy-dev 4.0.0.r2138.gf2b419d-1 -> 4.0.0.r2147.g2fbac0c-1
B=0
Omarchy is up to date
A=1
```

Run alone, it always reports the update. Two monitors, two bars, same result in the UI: the icon appears on one bar only.

## Environment

omarchy-dev 4.0.0.r2138.gf2b419d-1, quickshell 0.3.1-1, three monitors (two with a bar).

## Possible fixes

- Serialize the script with `flock` and cache the result briefly, so all bars see the same answer (what I am running locally).
- Or have a single instance own the check and broadcast the result, since `broadcast` already exists for `refresh`/`clear`.
- Either way, `checkupdates` failing should probably not be indistinguishable from "no updates".

Happy to send a PR for whichever you prefer.

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 14:36 UTC