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 9f3abc1Oct 2, 2026, 12:28 AMquattro-proofBack to current
All requirements
RequirementSW-REQ-260912-MXQGSoftwareReview

When the user locks the session and the ttfx screensaver is running, omarchy-system-lock shall send SIGTERM to ttfx.

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

Specification

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

Description

When the user locks the session and the ttfx screensaver is running, omarchy-system-lock shall send SIGTERM to ttfx. The script shall wait up to 1 s for ttfx to exit before it finishes.

FRETish formula
when user_lock_requested & ttfx_running the system_lock shall eventually satisfy ttfx_signalled & ttfx_wait_bounded
View full formal model

Rationale & tags

Why this requirement exists, and how it is categorised.

ttfx handles SIGTERM asynchronously. Closing its terminal before it exits can leave a stuck full-screen process above the lock screen.

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 Dogfood · AI agent
Reviewed
Sep 12, 2026, 23:50 UTC

History

Created
Sep 12, 2026, 19:43 UTC · Kimi Dogfood · AI agent
Modified
Sep 23, 2026, 17:20 UTC · Kimi Dogfood · AI agent

Hazard review

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

    Worst case: ttfx survives or ignores the signal and its terminal closes over a stuck fullscreen process at lock time. error_handling: pkill no-match and missing-binary exits are absorbed by explicit best-effort policies, so the signal step can never fail the lock. boundary: the 1s pidwait cap is the specified wait bound. concurrent: ttfx handles SIGTERM asynchronously, so the wait observes the interleaving of signal delivery and process exit instead of assuming a fixed ordering. Catalog 1.11.0 re-review: input_domain not applicable, it reads no external text input. concurrency_scale applied, it signals the ttfx process and waits for it to exit; two lock invocations can race on the same process.

  • propertynot applicable

    Fire-and-observe sequence run once per lock; no algebraic or repeated-application surface.

  • structuralnot applicable

    pkill, pidwait, and timeout invocations; no memory, encoding, or format-string surface.

  • domainnot applicable

    The one bounded external wait is the requirement itself; no other domain class names this surface.

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 Dogfood · AI agentApprovedSpec conformanceSep 12, 2026 · 3 weeks agoREVIEW-1

    Formula matches code: pkill -x ttfx delivers SIGTERM whenever the lock runs (pkill no-ops when ttfx is absent, so the ttfx_running antecedent is honored vacuously); the wait is bounded by a 10x0.1s pgrep loop (~1s) before the script finishes, matching ttfx_wait_bounded. The '|| true' idioms are exit-status-constant and excluded from MC/DC by tooling-limit ignore.

    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 user_lock_requested & ttfx_running the system_lock shall eventually satisfy ttfx_signalled & ttfx_wait_bounded

Witnesses· 4 scenarios total

  • system-lock-test.sh:1
    exercises 4 condition scenarios

MC/DC truth table· 6 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
#ttfx_runningttfx_signalledttfx_wait_boundeduser_lock_requestedResultProvesCovering test
1FFFTTttfx_running
2TFFFTuser_lock_requested
3TFFTFttfx_runningExempted · defensive — the lock path runs pkill -x ttfx and timeout 1s pidwait as unconditional sequence points; a run that reaches the path always attempts the signal and always waits bounded, so neither-fails is structural (reviewed: REVIEW-1)
4TFTTFttfx_signalled
5TTFTFttfx_wait_boundedExempted · defensive — the only wait is `timeout 1s pidwait`; there is no unbounded wait path in the file (reviewed: REVIEW-1)
6TTTTTttfx_signalled

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)

  • omarchy-system-lockbin/omarchy-system-lock

Tests to re-run (1)

  • system-lock-test.shtest/shell.d/system-lock-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