Proof Portal
Omarchy
ProbeLabs73 findings · 87 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.
Changes & defects
The chronological log of the proof layer — semantic changes (intended units of work) interleaved with the defects found and fixed, newest first.
- yesterdayRequirementsupdated
10 requirements updated
omarchy-hyprland-session-locked shall exit 0 when any monitor lists LOCK in solitaryBlockedBy.SW-REQ-260912-EH0KWhen the target user has no enrolled fingerprint or /usr/bin/fprintd-list is not executable, omarchy-apply-lock shall remove /etc/pam.d/omarchy-lock-fingerprint.SW-REQ-260912-Y0WTUnparseable input (after stripping), non-object JSON, and non-object entries yield an empty or skipped item set; no exception escapes the parser.SW-REQ-260922-3T3Fopen(payload) dispatches on mode: select/input open the dmenu flow, anything else opens the resolved route.SW-REQ-260922-50REA code:N binding shows the keysym resolved from the compiled keymap, or the built-in fallback table when xkbcli cannot resolve it; GRAVE displays as ~.SW-REQ-260922-9DMSThe parser strips full-line // comments and trailing commas before JSON parsing, so the authored JSONC parses to its declared entries.SW-REQ-260922-E4J2 - 2 days agoKnown issueLowOpenKI-MENU-OPEN-QUADRATICOpening a select menu walks its rows quadratically (omacom/omarchy#10601)
Opening a long select menu does work that grows with the square of its length, because the menu measures the whole list again after each row is added.
ProbeLabs1 requirement - 2 days agoRequirementsupdated
26 requirements updated
A route matching no id and no alias resolves to the literal input.SW-REQ-260922-74BZWhen the done file exists but the selection file is empty (cancel), the script prints nothing and exits 1.SW-REQ-260922-9ABDThe listing matches the requested formats case-insensitively, prunes dotfiles and dot-directories, and sorts rows by modification time descending.SW-REQ-260922-HR29A file chooser exit status above 1 sends a critical 'Could not share' notification and exits 1; an empty pick exits 0 silently.SW-REQ-260922-JREHenable offers disabled plugins; disable offers enabled canDisable plugins; clone offers first-party plugins no installed clone points back at; remove offers non-first-party plugins.SW-REQ-260922-KRBHWhen the fast signature differs, the script rebuilds rows from a full per-file scan and rewrites the rows cache plus signatures.SW-REQ-260922-MH9B - 3 days agoKnown issues21445
61 known issues
Mediumomarchy-system-lock exits 0 when lock engagement fails, leaving the dismissed Lock row silentReviewedKI-260930-2FBEHighExported bash functions execute as root inside apply-lock despite the trusted-PATH replacementOpenKI-APPLY-LOCK-EXPORTED-FUNCTIONS-ROOTMediumFingerprint gate fail-open: substring grep treats not-enrolled or failed fprintd-list probes as enrolledOpenKI-APPLY-LOCK-FPRINT-GATE-FAIL-OPENMediumFailed PKEXEC_UID/user mapping silently degrades target_user to root, configuring PAM for the wrong accountOpenKI-APPLY-LOCK-TARGET-USER-DEGRADES-ROOTLowFailed/empty readlink result stored as backgroundPath, wiping a good lock-screen wallpaperReviewedKI-LOCK-EMPTY-READLINK-WIPES-WALLPAPERMediumLock-service fingerprint probe fail-open: substring grep treats zero-enrollment fprintd-list output as configuredOpenKI-LOCK-FPRINT-PROBE-FAIL-OPEN - 4 days agoRequirementsadded
3 requirements added
The merged item tree is addressable by id.SW-REQ-260929-B8N9After the first filter keystroke or submenu move, the card top edge and the maximum rows height freeze at their current values.SW-REQ-260929-DXFJRow selection follows the pointer only after it genuinely moves past the gate threshold.SW-REQ-260929-T378 - 5 days ago
- 5 days agoRequirementsupdated
1 requirement updated
- 5 days agoRequirementsupdated
31 requirements updated
Users reach system actions, settings, and applications through the Omarchy menu.STK-REQ-260922-XTNRBinds Hyprland reports as dispatcher __lua are shown with resolved keys from the source-derived cache and remain dispatchable.SW-REQ-260922-0W96The rewrite touches only the plain $(reader) form, mapping it to the captured slot.SW-REQ-260922-2JZTWhen no row is selectable, the menu shows no cursor at all rather than parking one on a row Enter cannot run.SW-REQ-260922-3JG5finishRequest with no active request or no done file just closes the menu.SW-REQ-260922-3VTNThe menu discards a guard batch that exits nonzero or by signal, keeping the last complete result set in effect.SW-REQ-260922-4079 - 5 days agoRequirementsadded
1 requirement added
- last weekRequirementsupdated
8 requirements updated
omarchy-system-sleep-lock shall derive the wait budget from the logind InhibitDelayMaxUSec property.SW-REQ-260912-FAWVomarchy-update-lock run shall open the update lock file on a dedicated file descriptor.SW-REQ-260912-FVHSWhen the budget expires before the session reports secure, omarchy-system-sleep-lock shall print an unsecured-suspend diagnostic on stderr.SW-REQ-260912-H2YFWhen the user locks the session and the ttfx screensaver is running, omarchy-system-lock shall send SIGTERM to ttfx.SW-REQ-260912-MXQGWhen the stranded-lock probe exits 0, the service holds no lock, and password PAM exists, the lock service shall take the session lock once.SW-REQ-260912-WJYMThe system shall report the compositor session-lock state as an exit code.SYS-REQ-260912-FRG0 - last weekRequirementsadded
59 requirements added
Users reach system actions, settings, and applications through the Omarchy menu.STK-REQ-260922-XTNRBinds Hyprland reports as dispatcher __lua are shown with resolved keys from the source-derived cache and remain dispatchable.SW-REQ-260922-0W96The rewrite touches only the plain $(reader) form, mapping it to the captured slot.SW-REQ-260922-2JZTWhen no row is selectable, the menu shows no cursor at all rather than parking one on a row Enter cannot run.SW-REQ-260922-3JG5Unparseable input (after stripping), non-object JSON, and non-object entries yield an empty or skipped item set; no exception escapes the parser.SW-REQ-260922-3T3FfinishRequest with no active request or no done file just closes the menu.SW-REQ-260922-3VTN - 3 weeks agoRequirementsadded
21 requirements added
The user shall lock the session on demand.STK-REQ-260912-XJ5Domarchy-update-lock held shall exit 0 only when OMARCHY_UPDATE_LOCK_FD names an open descriptor.SW-REQ-260912-0Y70When fingerprint authentication is available, the lock view shall show the fingerprint indicator next to the password field.SW-REQ-260912-41VVomarchy-hyprland-session-locked shall exit 0 when any monitor lists LOCK in solitaryBlockedBy.SW-REQ-260912-EH0KWhen omarchy-apply-lock runs with EUID 0, it shall replace the inherited PATH with /usr/share/omarchy/bin:/usr/local/bin:/usr/bin:/bin before it runs any optional command.SW-REQ-260912-EKJPomarchy-system-sleep-lock shall derive the wait budget from the logind InhibitDelayMaxUSec property.SW-REQ-260912-FAWV - UndatedKnown issues47
11 known issues
Mediumomarchy-apply-lock rewrites the lock PAM stacks in place; an interrupted run leaves a torn stack on the live pathReviewedKI-APPLY-LOCK-PAM-NONATOMIC-WRITELowomarchy-hyprland-session-locked has no deadline on hyprctl -j monitors; a stalled compositor IPC hangs the probeReviewedKI-LOCK-PROBE-HYPRCTL-NO-TIMEOUTLowMenu guard batch runs as one bash child with no deadline; a blocking guard freezes guard answers for the sessionReviewedKI-MENU-GUARD-BATCH-NO-DEADLINELowparseMenuJsonc reads a top-level JSON array as entries with ids 0, 1, … (omacom/omarchy#13492)OpenKI-MENU-JSONC-ARRAY-ROOTMediumstripJsonc comma regex rewrites strings that carry a comma before } or ] (omacom/omarchy#13250)OpenKI-MENU-JSONC-COMMA-IN-STRINGLowA whole-line comment in a CR-only menu file swallows the rest of the fileOpenKI-MENU-JSONC-CR-LINE-ENDINGS
End of timeline