Proof Portal

Project overview

Omarchy

ProbeLabsviewing a historical run

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.

Viewing historical run 3b673d6Oct 2, 2026, 02:05 AMpr/13012Back to current
All requirements
RequirementSW-REQ-260922-RGCVSoftwareReview

The prelude's omarchy-pkg-present/missing shadows agree with pacman -Q everywhere.

This requirement changed after its last recorded review, so approval is stale. Automated checks pass and 2/2 obligations are satisfied.
PriorityshallTypeguaranteeCategoryfunctionalComponentmenuAssuranceCFindingsnone open

Specification

The requirement exactly as authored — its complete prose text and, where present, the formal FRETish sentence it compiles to.

Description

The prelude's omarchy-pkg-present/missing shadows agree with pacman -Q everywhere. This covers provides resolution, version constraints deferred to pacman, and the no-argument case (present true of nothing, missing not).

FRETish formula
when pkg_presence_asked the guard_pipeline shall eventually satisfy shadow_matches_pacman
View full formal model

Rationale & tags

Why this requirement exists, and how it is categorised.

MenuModel.js guardHelpers lines 422-435; pacman -Qi continuation-line parsing at lines 418-421.

Verification & provenance

How this requirement was checked: the review trail, edit history, and the machine-analysis status terms (each ⓘ explains what it means).

Assurance levelC
Formalizationvalid
Realizabilityrealizable
Vacuitychecked_ok
Strategyfretish

Review

Status
in_review
Reviewer
Kimi Zero Warnings · AI agent
Reviewed
Sep 27, 2026, 21:25 UTC

History

Created
Sep 22, 2026, 13:34 UTC · Kimi Dogfood · AI agent
Modified
Sep 30, 2026, 07:39 UTC · Leonid Bugaev

Hazard review

Reviewed Oct 1, 2026, 21:26 UTCby agent:claude-baseline-passcatalog v1.11.0
  • scenarioreviewedboundaryedge_caseerror_handlinginput_domain

    Worst case: pacman -Qq fails (broken db) and stderr is suppressed, so the mapfile seeds empty and every plain package name reads missing - Install rows flip to installable and already-installed marks vanish; consequence is wrong UI state until the next open, with no destructive action firing automatically (installs are user-clicked) and the guarded verb re-evaluating each refresh. boundary: the no-argument case is pinned by contract - present of nothing is true (vacuous all-loop), missing of nothing is false - and the tested half matches the implementation exactly. edge_case: provides entries are extracted by the awk field split with version operations stripped, multi-provide lists split on spaces, and the literal None skipped; version-constraint arguments (containing <,>,=) bypass the snapshot and defer to a live pacman -Q, so a mid-session install makes constrained args fresh while plain names stay snapshot-stale - bounded staleness inherent to the one-shot mapfile design. error_handling is the declared class: the all-missing degrade above is the failure mode, silent but recoverable and UI-level. Catalog 1.11.0 re-review: input_domain applied, it reads pacman -Q answers through the prelude shadows; the producer emits machine-generated text and only the exit status decides. concurrency_scale not applicable, a pure function of its arguments, recomputed on each load or keystroke: no state across calls, no process, timer or lock.

  • propertyrevieweddeterminismtotality

    determinism: the shadow map is a pure function of the pacman database state at read time - same db, same answers, sorted input order irrelevant to the associative array. totality: every (argument list, argument form) combination resolves to one boolean - snapshot hit, live constraint check, or plain miss - with no form falling through undefined, and the no-arg extremes pinned.

  • structuralnot applicable

    Generated bash with quoted expansions, literal associative-array keys, and a character-class test routing constraint forms to pacman; no eval of package names, no arithmetic, no encoding transform - names with glob metacharacters are impossible in arch package names.

  • domainnot applicable

    Read-only pacman queries against the local package database; -Q takes no database lock and performs no network access, and the shadow adds no authority - it only answers what pacman would answer, faster.

Change history

Every recorded revision of this requirement's source file — newest first, each with its commit message and the diff for that change.

Review history

Human and AI-agent approvals of this requirement — the 'why was this approved' lineage, each with the reviewer's justification and the code it cites.

  1. Kimi Zero Warnings · AI agentApprovedSpec conformanceSep 27, 2026 · 5 days agoREVIEW-61

    Read guardHelpers. The prelude builds __omarchy_pkgs from pacman -Qq plus parsed Provides entries, and __omarchy_pkg_has falls back to pacman -Q for version-constrained names, so omarchy-pkg-present/missing agree with pacman -Q including provides resolution and the no-argument case. pkg_presence_asked models calls to the shadows; shadow_matches_pacman is the cache-plus-fallback construction. Formula conforms to the code.

    Cited code (1)

Obligations

What this requirement must witness to be considered satisfied — the required evidence, and the tests that discharge each one.

1 obligation · 1 discharged

Browse the catalogue
Discharged

Behavior when operations fail or dependencies are unavailable.

Discharging evidence2/2 required witnessed
  • negativerequiredpresent
    Covered by 1 test
  • nominalrequiredpresent
    Covered by 1 test

Formula evidence

The formal formula behind this requirement, the variables it is written over, and the tests that exercise it (each term is explained inline).

FRETish formula

when pkg_presence_asked the guard_pipeline shall eventually satisfy shadow_matches_pacman

Witnesses· 3 scenarios total

  • prelude
    exercises 3 condition scenarios

MC/DC truth table· 3 rows

Each row assigns the formula's conditions (T/F) and shows the Result— the formula's value for that input row, not a test pass/fail. A row proves a condition when flipping only that condition flips the outcome. The test that covers each row is linked.

Covereda test exercises this rowExempteda reviewed mcdc:ignoreNo-actionfalse-result row satisfied by designUncoveredneeds a covering test
#pkg_presence_askedshadow_matches_pacmanResultProvesCovering test
1FFTpkg_presence_asked
2TFFpkg_presence_asked
3TTTshadow_matches_pacman

Its place

How this requirement connects — what proves it, what it affects, and what it rests on. Authored links only here; automatically derived links come from the audit index.

Loading graph…

Trace evidence

The concrete artifacts linked to this requirement — implementing code, verifying tests, documents, and the findings raised against it.

No findings affect this requirement

Nothing was flagged against this requirement in the pinned run.

Impact

Blast radius — authored trace links only (automatically derived links come from the audit index and aren't shown here).

If you change this

Requirements
0
Files
1
Tests
1
At-risk contracts
0

Files to re-check (1)

  • MenuModel.jsshell/plugins/menu/MenuModel.js

Tests to re-run (1)

  • menu-guards-test.shtest/shell.d/menu-guards-test.sh

What this rests on

Discussions

Discuss this with the proof team. Nothing changes in your audit automatically — you open a request and a staff member records any outcome inside the thread.

Sign in to discuss this with the proof team.Sign in