Proof Portal
Project overview
Omarchy
ProbeLabs65 findings · 95 requirementsA 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
New (1)
Findings introduced by the compared side — its own slice of issues.
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 issueKI-260930-2FBEUnicode or control whitespace between JSONC tokens empties the whole menu fileKnown issueKI-MENU-JSONC-UNICODE-WHITESPACEparse_keycodes rewrites code:N/mouse:N tokens anywhere in a record, corrupting descriptions and commandsKnown issueKI-MENU-KEYBINDINGS-CODE-REWRITE-OVERREACHComma in a binding description shifts every later CSV field: truncated label, wrong dispatcher, failed dispatchKnown issueKI-MENU-KEYBINDINGS-CSV-DESC-COMMALua function binds (Select all, Universal copy/paste/cut, Zoom in, Reset zoom) render in the menu but dispatch nothingKnown issueKI-MENU-KEYBINDINGS-FUNC-BIND-NO-DISPATCHLua bind scan aborts on the first throwing require; every later Lua bind silently vanishes from the menu cacheKnown issueKI-MENU-KEYBINDINGS-SCAN-DOFILE-ABORTWarm keybindings cache serves a stale Lua command after the user edits only the command a __lua bind runsKnown issueKI-MENU-KEYBINDINGS-STALE-LUA-CACHESuccessful hyprctl dispatch with a stderr warning is treated as a refusal and the exec command runs twiceKnown issueKI-MENU-KEYBINDINGS-STDERR-FAILS-DISPATCHA menu summon leaves a pending uninstall question on top of the new promptKnown issueKI-MENU-OPEN-LEAVES-CONFIRMomarchy-menu-select hangs forever when the summoned menu dies before writing done_fileKnown issueKI-MENU-SELECT-POLL-DEADLOCKomarchy-menu-select blocks forever inside the omarchy-shell summon call when the IPC never returnsKnown issueKI-MENU-SELECT-SUMMON-UNBOUNDEDNon-positive sleep-lock budget for logind windows <= 1s: suspend proceeds with no lock attemptKnown issueKI-SLEEP-LOCK-BUDGET-NONPOSITIVEFailed/empty readlink result stored as backgroundPath, wiping a good lock-screen wallpaperKnown issueKI-LOCK-EMPTY-READLINK-WIPES-WALLPAPERomarchy-hyprland-session-locked has no deadline on hyprctl -j monitors; a stalled compositor IPC hangs the probeKnown issueKI-LOCK-PROBE-HYPRCTL-NO-TIMEOUTScreen add/remove while locked clears the blank intent and never re-arms the idle blank timerKnown issueKI-LOCK-SCREENS-CHANGE-BLANK-LOSTIn-place video wallpaper overwrite during a running poster job keeps the stale poster frameKnown issueKI-LOCK-STALE-POSTER-INPLACE-OVERWRITEActivating an app row while appLibrary is null closes the menu and skips the launchKnown issueKI-MENU-APP-ACTIVATE-NULL-LIBRARYApps submenu sorts with code-unit < on lowercased labels while search sorts with localeCompareKnown issueKI-MENU-APPS-SORT-LOCALEchildCount counts when-hidden children and duplicate itemOrder entries, so the submenu badge disagrees with what rendersKnown issueKI-MENU-CARET-COUNT-HIDDEN-CHILDRENContracted exit codes lost when the usage/diagnostic write fails: unknown verb exits 1, help exits 1Known issueKI-MENU-CLI-EXIT-CODE-WRITE-RACESFailed jq payload build still execs the menu IPC with an empty payload and exits 0Known issueKI-MENU-CLI-JQ-FAIL-LOOKS-SUCCESSA whitespace-only filter is not a search for rebuildDisplay but is truthy for the detail gatesKnown issueKI-MENU-DETAIL-WHITESPACE-QUERYNon-numeric dmenu width/maxHeight become NaN and collapse the card layoutKnown issueKI-MENU-DMENU-NAN-GEOMETRYFailed menu FileView reloads are asymmetric: user handler wipes last good items, default keeps stale setKnown issueKI-MENU-FILEVIEW-FAILURE-ASYMMETRYfoldedListHeight returns a height above the available cap; availableRowsHeight never clamps at zeroKnown issueKI-MENU-FOLD-HEIGHT-EXCEEDS-AVAILABLEgoBack refuses to retrace while activeMenu is root, stranding navStack after a drill that landed on rootKnown issueKI-MENU-GOBACK-ROOT-STRANDMenu guard batch runs as one bash child with no deadline; a blocking guard freezes guard answers for the sessionKnown issueKI-MENU-GUARD-BATCH-NO-DEADLINEGuard batches carry no generation token: a batch computed for the previous items publishes onto the new setKnown issueKI-MENU-GUARD-BATCH-STALE-APPLYEscape in input mode clears the entered text instead of cancelling the requestKnown issueKI-MENU-INPUT-ESCAPE-CLEARS-FILTERisDescendantOf reports every non-root id as a descendant of root, including ids absent from the menuKnown issueKI-MENU-ISDESCENDANT-ROOT-ALWAYSA flat menu containing an entry id 'items' is parsed as a wrapper and every sibling entry is silently discardedKnown issueKI-MENU-ITEMS-KEY-AMBIGUITYparseMenuJsonc reads a top-level JSON array as entries with ids 0, 1, … (omacom/omarchy#13492)Known issueKI-MENU-JSONC-ARRAY-ROOTA whole-line comment in a CR-only menu file swallows the rest of the fileKnown issueKI-MENU-JSONC-CR-LINE-ENDINGSstripJsonc removes only whole-line // comments; an inline comment tail empties the whole file (omacom/omarchy#13493)Known issueKI-MENU-JSONC-INLINE-COMMENTstripJsonc has no block-comment pass: a /* */ comment empties the whole fileKnown issueKI-MENU-JSONC-STRIP-GAPSKeybindings menu build has no deadline on hyprctl binds or xkbcli compile-keymap; a stalled callee blocks the menuKnown issueKI-MENU-KEYBINDINGS-NO-TIMEOUTRefused key-up after an accepted key-down leaves a synthetic key stuck down and skips the sendshortcut fallbackKnown issueKI-MENU-KEYBINDINGS-SENDKEY-UP-FAIL-STUCKopenRoute follows a link one hop and never re-inspects the target kind: link-to-action opens as a menuKnown issueKI-MENU-LINK-SINGLE-HOPnormalize-before-merge wipes unspecified defaults: a label-only user entry erases action/aliases/guardsKnown issueKI-MENU-MERGE-OVERRIDE-WIPES-DEFAULTSmergeMenuSources stores prototype-named ids but drops them from itemOrder - the row is written and never renderedKnown issueKI-MENU-MERGE-PROTOTYPE-IDSmergeAppRows/swapProviderRows keep stale .order values and mutate caller-owned rows in placeKnown issueKI-MENU-MERGE-STALE-ORDER-ALIASED-ROWSnormalizeItem edge cases: null parent kept, boolean guards preserved, action:0 mis-kinded, numeric labelsKnown issueKI-MENU-NORMALIZE-EDGE-CASESopen() throws on a JSON null payload: parse succeeds, the catch does not run, the property read throwsKnown issueKI-MENU-OPEN-NULL-PAYLOADOpening a select menu walks its rows quadratically (omacom/omarchy#10601)Known issueKI-MENU-OPEN-QUADRATICpathFor coerces a null parent to the id 'null'/'0' row while parentPathFor returns emptyKnown issueKI-MENU-PATH-HELPERS-COERCIONpendingInitialMenu is stored and never read: a route summoned before the JSONC loads opens root and stays thereKnown issueKI-MENU-PENDING-INITIAL-MENU-DEADFailed/killed providers commit their partial stdout and stay marked loaded; apps provider loads with no AppLibraryKnown issueKI-MENU-PROVIDER-PARTIAL-COMMITProvider rows colliding with a static id are silently dropped: takenIds only records batch-minted idsKnown issueKI-MENU-PROVIDER-SLUG-COLLISION-DROPPEDRemove > Theme shows on a stock install, where the remover has no theme to offer and the row only closes the menuKnown issueKI-MENU-REMOVE-THEME-NO-THEMESresolveRoute folds the input before the exact-id lookup and returns the normalized string as fallthroughKnown issueKI-MENU-RESOLVE-ROUTE-FOLDINGrevealCursor loses the directional peek: an uninstantiated delegate skips it and the underhang write undoes itKnown issueKI-MENU-REVEAL-CURSOR-PEEKsearchScore throws on a label-less merged row and returns a NaN rank that displayRow coerces to the best tierKnown issueKI-MENU-SEARCH-SCORE-CRASH-NANsearchScore ranking: root exact labels rank below nested twins; cross-field multi-term matches score as unmatchedKnown issueKI-MENU-SEARCH-SCORE-RANKINGSearch text misses: whole-word description matching drops punctuation-glued words and hyphenated alias formsKnown issueKI-MENU-SEARCH-TEXT-NORMALIZATION-MISSESGeometry flags silently coerce non-numeric and flag-like values: --width abc summons width 0Known issueKI-MENU-SELECT-GEOMETRY-INT-COERCIONPayload fontFamily is sticky: a later open that omits it keeps the previous caller's fontKnown issueKI-MENU-STICKY-FONTFAMILYsummonAction rewrites an explicitly empty quoted payload to {} - the in-process summon diverges from the bash bytesKnown issueKI-MENU-SUMMON-ACTION-EMPTY-PAYLOADHeader invariant 'every call bounded by the budget remainder' unenforced on three external callsKnown issueKI-SLEEP-LOCK-DEADLINE-INVARIANT-GAPS
Comparing findings for Omarchy. Requirement coverage is intentionally not shown here — see Requirements for coverage.