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.

Compare findings

The compared side's slice of new, resolved and changed findings versus its base — read live from git.

Base
0c01de03e1adef0bdf5168381d333ebb9c16ef290c01de0
Verified
87/87 realizable89/89 meet policyverification complete: 3
Compared
1e43373287afbd6dca4674ad463d5b5db78123581e43373
Verified
92/92 realizable94/94 meet policyverification complete: 3
+1 new·−0 resolved·1 changed·58 unchanged
Resolved (0)
Findings present at the base but gone on the compared side.

No findings resolved on the compared side.

Changed (1)
Same finding on both sides, with severity and/or status moved (old → new).
▸Still open / unchanged (58)
omarchy-system-lock exits 0 when lock engagement fails, leaving the dismissed Lock row silentKnown issueUnicode or control whitespace between JSONC tokens empties the whole menu fileKnown issueparse_keycodes rewrites code:N/mouse:N tokens anywhere in a record, corrupting descriptions and commandsKnown issueComma in a binding description shifts every later CSV field: truncated label, wrong dispatcher, failed dispatchKnown issueLua function binds (Select all, Universal copy/paste/cut, Zoom in, Reset zoom) render in the menu but dispatch nothingKnown issueLua bind scan aborts on the first throwing require; every later Lua bind silently vanishes from the menu cacheKnown issueWarm keybindings cache serves a stale Lua command after the user edits only the command a __lua bind runsKnown issueSuccessful hyprctl dispatch with a stderr warning is treated as a refusal and the exec command runs twiceKnown issueA menu summon leaves a pending uninstall question on top of the new promptKnown issueomarchy-menu-select hangs forever when the summoned menu dies before writing done_fileKnown issueomarchy-menu-select blocks forever inside the omarchy-shell summon call when the IPC never returnsKnown issueNon-positive sleep-lock budget for logind windows <= 1s: suspend proceeds with no lock attemptKnown issueFailed/empty readlink result stored as backgroundPath, wiping a good lock-screen wallpaperKnown issueomarchy-hyprland-session-locked has no deadline on hyprctl -j monitors; a stalled compositor IPC hangs the probeKnown issueScreen add/remove while locked clears the blank intent and never re-arms the idle blank timerKnown issueIn-place video wallpaper overwrite during a running poster job keeps the stale poster frameKnown issueActivating an app row while appLibrary is null closes the menu and skips the launchKnown issueApps submenu sorts with code-unit < on lowercased labels while search sorts with localeCompareKnown issuechildCount counts when-hidden children and duplicate itemOrder entries, so the submenu badge disagrees with what rendersKnown issueContracted exit codes lost when the usage/diagnostic write fails: unknown verb exits 1, help exits 1Known issueFailed jq payload build still execs the menu IPC with an empty payload and exits 0Known issueA whitespace-only filter is not a search for rebuildDisplay but is truthy for the detail gatesKnown issueNon-numeric dmenu width/maxHeight become NaN and collapse the card layoutKnown issueFailed menu FileView reloads are asymmetric: user handler wipes last good items, default keeps stale setKnown issuefoldedListHeight returns a height above the available cap; availableRowsHeight never clamps at zeroKnown issuegoBack refuses to retrace while activeMenu is root, stranding navStack after a drill that landed on rootKnown issueMenu guard batch runs as one bash child with no deadline; a blocking guard freezes guard answers for the sessionKnown issueGuard batches carry no generation token: a batch computed for the previous items publishes onto the new setKnown issueEscape in input mode clears the entered text instead of cancelling the requestKnown issueisDescendantOf reports every non-root id as a descendant of root, including ids absent from the menuKnown issueA flat menu containing an entry id 'items' is parsed as a wrapper and every sibling entry is silently discardedKnown issueparseMenuJsonc reads a top-level JSON array as entries with ids 0, 1, … (omacom/omarchy#13492)Known issueA whole-line comment in a CR-only menu file swallows the rest of the fileKnown issuestripJsonc removes only whole-line // comments; an inline comment tail empties the whole file (omacom/omarchy#13493)Known issuestripJsonc has no block-comment pass: a /* */ comment empties the whole fileKnown issueKeybindings menu build has no deadline on hyprctl binds or xkbcli compile-keymap; a stalled callee blocks the menuKnown issueRefused key-up after an accepted key-down leaves a synthetic key stuck down and skips the sendshortcut fallbackKnown issueopenRoute follows a link one hop and never re-inspects the target kind: link-to-action opens as a menuKnown issuenormalize-before-merge wipes unspecified defaults: a label-only user entry erases action/aliases/guardsKnown issuemergeMenuSources stores prototype-named ids but drops them from itemOrder - the row is written and never renderedKnown issuemergeAppRows/swapProviderRows keep stale .order values and mutate caller-owned rows in placeKnown issuenormalizeItem edge cases: null parent kept, boolean guards preserved, action:0 mis-kinded, numeric labelsKnown issueopen() throws on a JSON null payload: parse succeeds, the catch does not run, the property read throwsKnown issueOpening a select menu walks its rows quadratically (omacom/omarchy#10601)Known issuepathFor coerces a null parent to the id 'null'/'0' row while parentPathFor returns emptyKnown issuependingInitialMenu is stored and never read: a route summoned before the JSONC loads opens root and stays thereKnown issueFailed/killed providers commit their partial stdout and stay marked loaded; apps provider loads with no AppLibraryKnown issueProvider rows colliding with a static id are silently dropped: takenIds only records batch-minted idsKnown issueRemove > Theme shows on a stock install, where the remover has no theme to offer and the row only closes the menuKnown issueresolveRoute folds the input before the exact-id lookup and returns the normalized string as fallthroughKnown issuerevealCursor loses the directional peek: an uninstantiated delegate skips it and the underhang write undoes itKnown issuesearchScore throws on a label-less merged row and returns a NaN rank that displayRow coerces to the best tierKnown issuesearchScore ranking: root exact labels rank below nested twins; cross-field multi-term matches score as unmatchedKnown issueSearch text misses: whole-word description matching drops punctuation-glued words and hyphenated alias formsKnown issueGeometry flags silently coerce non-numeric and flag-like values: --width abc summons width 0Known issuePayload fontFamily is sticky: a later open that omits it keeps the previous caller's fontKnown issuesummonAction rewrites an explicitly empty quoted payload to {} - the in-process summon diverges from the bash bytesKnown issueHeader invariant 'every call bounded by the budget remainder' unenforced on three external callsKnown issue

Comparing findings for Omarchy. Requirement coverage is intentionally not shown here — see Requirements for coverage.