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 59d5325Oct 2, 2026, 08:10 PMpr/10631Back to current
All requirements
RequirementSW-REQ-260922-74BZSoftwareReview

A route matching no id and no alias resolves to the literal input.

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

Specification

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

Description

A route matching no id and no alias resolves to the literal input. A misspelling still attempts to open that id without a rewrite.

FRETish formula
when route_input & !exact_id_match & !alias_match the menu_router shall eventually satisfy route_is_literal_input
View full formal model

Rationale & tags

Why this requirement exists, and how it is categorised.

MenuModel.js resolveRoute line 190; menu-test.sh pins 'no-such-route'.

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, 20:37 UTC · Leonid Bugaev

Hazard review

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

    Worst case: a misspelled or hostile route string is carried through as a literal id into menu state - openExistingMenu re-checks item() and falls back to root, so the worst reachable outcome is a wrong-but-benign menu open, and a string like __proto__ or constructor is truthy through the plain map read in item(), which can select a phantom activeMenu and render an empty menu. boundary: exact-id beat, alias beat, and literal fallthrough are the three-way partition; the reserved go/menu inputs hard-routed to root are the reserved-word edge of it. edge_case: case/underscore normalization happens before the exact-id compare, so an uppercase-configured id can miss its own exact match and open as a literal - the normalization-vs-identity edge, graded low (same-user route strings from a local CLI; no privilege, no write, self-healing fallback to root). Catalog 1.11.0 re-review: input_domain not applicable, it reads no external text input. 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.

  • propertyrevieweddeterminism

    The same input resolves identically on every call: normalization is a pure string transform, the alias scan walks the fixed itemOrder and returns the first matching entry, and the miss arm returns the normalized literal unchanged - no ambient state, clock, or randomness participates, so a misspelling can never resolve one way twice and another way later.

  • structuralnot applicable

    toLowerCase/replace string normalization and plain map reads; no memory, encoding round-trip, or numeric surface. The map-protocol-string truthiness quirk of JS objects is recorded under scenario as the concrete edge it produces.

  • domainnot applicable

    In-process route string resolution over already-loaded menu items; no file, IPC transport, network, crypto, or privilege surface - the IPC receipt of the route string is owned by the lifecycle requirement (50RE).

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-39

    Read resolveRoute. After normalization (lowercase, underscores to dashes) the code checks exact id, then scans aliases of non-app entries, then falls through to 'return raw' — the literal input, no rewrite. The FRETish condition route_input & !exact_id_match & !alias_match models precisely this fall-through; the sibling reqs PRNV/CYB9 cover the other two arms of the same branch structure. Formula conforms to the code.

    Cited code (1)

Open known issues

Findings currently open against this requirement — issues its verification surfaced that are not resolved yet. Each links to the full finding.

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 at limits, thresholds, and edge-of-range values.

Discharging evidence1/1 required witnessed
  • 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 route_input & !exact_id_match & !alias_match the menu_router shall eventually satisfy route_is_literal_input

Witnesses· 4 scenarios total

  • menu-test.sh:1
    exercises 4 condition scenarios

MC/DC truth table· 5 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
#alias_matchexact_id_matchroute_inputroute_is_literal_inputResultProvesCovering test
1FFFFTroute_input
2FFTFFalias_match—
3FFTTTroute_is_literal_input
4FTTFTexact_id_match
5TFTFTalias_match

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.

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
2
Tests
2
At-risk contracts
0

Files to re-check (2)

  • Menu.qmlshell/plugins/menu/Menu.qml
  • MenuModel.jsshell/plugins/menu/MenuModel.js

Tests to re-run (2)

  • menumodel-replay.test.mjstest/node/menumodel-replay.test.mjs
  • menu-test.shtest/shell.d/menu-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