Proof Portal

Project overview

Omarchy

ProbeLabs65 findings · 95 requirements

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.

Inbox
ReportR-621GitHub issuePublicDecided· Out of scope

Add silent failure detection for apps that exit shortly after start

Reported by andyholst · filed Sep 13, 2026 · open at source

Decided: Out of scope — decided by agents · verified 3 days ago.

At a glance

1 · What is claimed?
Only the report text below — no validator has restated it as checkable claims yet.
2 · What does it affect?
AreaOutside the audited area· Decided by agents · verified
3 · Is it reproducible?
No validation has been run yet.
4 · What remains unclear?
  • Not validated yet: no claims, no reproducer.
5 · What happens next?
Decided by agents and verified by a second, independent agent — see the decision.

Original report

Add silent failure detection for apps that exit shortly after startrevision 1 · captured 2026-09-28 21:23 UTC via poll

The Gap

Apps that exit silently (lifetime < 2s, exit code ≠ 0) are not caught by:
- omarchy-crash-watch — requires core dump
- Pre/post upgrade diff — service was never running long enough to snapshot

The Heuristic

Process starts → lives < threshold (2-5s) → exits with code ≠ 0
= "Silent failure" — app tried to start but failed

What It Catches

  • App fails to start (missing library, bad config, incompatible version)
  • App crashes during initialization (before main loop)
  • App exits due to dependency failure after upgrade

Implementation

Scope

Monitor binaries from packages installed by:
- Omarchy install scripts (install/hardware/*.sh, install/config/*.sh)
- Pacman (pacman -Qqe)
- AUR/yay (pacman -Qqm)

Watcher

Background systemd service (omarchy-silent-watch.service):
- Hooks into systemd journal for process exits
- For each exit: check lifetime (start → exit) and exit code
- If lifetime < threshold AND exit code ≠ 0 → flag as silent failure

False Positive Filtering

Known single-shot tools to ignore:
- --version, --help, --check invocations
- Package hooks (pacman, mkinitcpio)
- One-shot migration scripts

Suppression list: /usr/share/omarchy/silent-watch-suppressions.txt

Notification

⚠️ These apps failed to start after upgrade:
   - coolercontrold (exited with code 1 after 0.3s)
   - nvidia-powerd (exited with code 127 after 0.1s)

Click to diagnose and file bug report

Bug Report Generation

Reuse existing reporting logic from `diagnose-crash/reporting.md`.

Determine Where to File

Is the broken component in Omarchy's sphere?
  ├── YES — omarchy-* command, Quickshell, Hyprland config, theme, migration
  │   └── File to: github.com/omacom/omarchy/issues
  │
  ├── NO — but Omarchy installs/configures it (coolercontrold, nvidia-utils, etc.)
  │   └── File upstream bug (bugs.archlinux.org / third-party tracker)
  │   └── CREATE Omarchy tracking issue (label: upstream, tracking)
  │
  └── NO — unrelated to Omarchy
      └── File upstream bug only

Search Before Filing

Search Omarchy issues:

gh search issues --repo omacom/omarchy "<app> silent"
gh issue list --repo omacom/omarchy --state all --search "<app>"

Search Arch bugs:
- Search bugs.archlinux.org for package name + error
- If match found, comment with new evidence
- If not, file new against correct package/project

What the Bug Report Includes

FieldSource
System detailsomarchy debug
What's wrongSilent failure log (exit code, lifetime, stderr)
Steps to reproduceRun app after upgrade
Expected behaviorApp stays running

Labels: bug, silent-failure, auto-detected

Title format: [auto] <app> exits with code <N> after <time>s since <version>

User Consent

Agent shows exact title and body. Waits for explicit yes.

Signing

Filed by <model> via <agent harness>.

Devil's Advocate

Shared (Both Issues)

These apply to any automated bug reporting:

1. Fallback When gh Not Authenticated: If gh auth status fails, agent cannot file to GitHub. Fallback: hand user the finished text.

2. Arch Bug Tracker Specifics: bugs.archlinux.org requires Category, Severity, Reproducible, valid email, correct package/project. Agent must map service → Arch package → project/category.

3. AUR Packages Different Tracker: AUR packages have bugs at aur.archlinux.org, not bugs.archlinux.org. Detect via pacman -Qm.

4. Flatpak/Snap Packages: Third-party apps via Flatpak/Snap have different trackers. Agent must detect source and route.

5. Intermittent Failures: Both tools may catch something once. Report must note: reproducible or one-time.

6. No Internet Access: If upstream trackers unreachable: save report locally to /tmp/omarchy-report-<timestamp>.md, prompt user to file when online.

7. Non-Technical Users: Notification must be simple: one click to file, not multiple choices. Agent does the work.

8. Suppression List Maintenance: Who maintains suppression lists? Omarchy maintainers? Auto-generated from package metadata?

Silent-Watch Specific

S1. User Manually Killed: If user manually kills a process, watcher flags it. Distinguish: user action or upgrade-caused?

S2. Process Started by User vs System: User runs coolercontrold --check and exits fast — watcher flags it. Distinguish: user-initiated vs system startup?

S3. Threshold Tuning: 2s? 5s? Too short = noise, too long = misses real failures. Needs tuning after deployment.

S4. Multiple Silent Failures: Watcher catches 5 apps failed. One report with all issues, or one per issue?

Benefits

  1. Silent failures caught — apps that exit fast are detected
  2. Immediate detection — problems surface on app start
  3. Right destination — Omarchy bugs to Omarchy, Arch bugs to Arch
  4. Duplicate avoidance — search before filing upstream
  5. Complete reports — exit code + lifetime + stderr included

Open Questions

  1. Threshold? 2s? 5s? Needs tuning
  2. Performance? Background watcher must be lightweight
  3. Scope? All installed binaries or only Omarchy-managed?
  4. Arch bug tracker mapping? How to auto-map service → Arch package → project/category
  5. AUR detection? How to detect AUR vs official repo
  6. Suppression list maintenance? Who maintains it
  7. Threshold tuning? Needs deployment tuning
  8. User vs system process? How to distinguish

Related

Issue #11587 — Pre/post upgrade diff (complements this issue)

View raw text
## The Gap

Apps that exit silently (lifetime < 2s, exit code ≠ 0) are not caught by:
- `omarchy-crash-watch` — requires core dump
- Pre/post upgrade diff — service was never running long enough to snapshot

## The Heuristic

```
Process starts → lives < threshold (2-5s) → exits with code ≠ 0
= "Silent failure" — app tried to start but failed
```

## What It Catches

- App fails to start (missing library, bad config, incompatible version)
- App crashes during initialization (before main loop)
- App exits due to dependency failure after upgrade

## Implementation

### Scope

Monitor binaries from packages installed by:
- Omarchy install scripts (`install/hardware/*.sh`, `install/config/*.sh`)
- Pacman (`pacman -Qqe`)
- AUR/yay (`pacman -Qqm`)

### Watcher

Background systemd service (`omarchy-silent-watch.service`):
- Hooks into `systemd` journal for process exits
- For each exit: check lifetime (start → exit) and exit code
- If lifetime < threshold AND exit code ≠ 0 → flag as silent failure

### False Positive Filtering

Known single-shot tools to ignore:
- `--version`, `--help`, `--check` invocations
- Package hooks (pacman, mkinitcpio)
- One-shot migration scripts

Suppression list: `/usr/share/omarchy/silent-watch-suppressions.txt`

### Notification

```
⚠️ These apps failed to start after upgrade:
   - coolercontrold (exited with code 1 after 0.3s)
   - nvidia-powerd (exited with code 127 after 0.1s)

Click to diagnose and file bug report
```

## Bug Report Generation

**Reuse existing reporting logic from `diagnose-crash/reporting.md`.**

### Determine Where to File

```
Is the broken component in Omarchy's sphere?
  ├── YES — omarchy-* command, Quickshell, Hyprland config, theme, migration
  │   └── File to: github.com/omacom/omarchy/issues
  │
  ├── NO — but Omarchy installs/configures it (coolercontrold, nvidia-utils, etc.)
  │   └── File upstream bug (bugs.archlinux.org / third-party tracker)
  │   └── CREATE Omarchy tracking issue (label: upstream, tracking)
  │
  └── NO — unrelated to Omarchy
      └── File upstream bug only
```

### Search Before Filing

**Search Omarchy issues:**
```bash
gh search issues --repo omacom/omarchy "<app> silent"
gh issue list --repo omacom/omarchy --state all --search "<app>"
```

**Search Arch bugs:**
- Search bugs.archlinux.org for package name + error
- If match found, comment with new evidence
- If not, file new against correct package/project

### What the Bug Report Includes

| Field | Source |
|-------|--------|
| System details | `omarchy debug` |
| What's wrong | Silent failure log (exit code, lifetime, stderr) |
| Steps to reproduce | Run app after upgrade |
| Expected behavior | App stays running |

**Labels**: `bug`, `silent-failure`, `auto-detected`

**Title format**: `[auto] <app> exits with code <N> after <time>s since <version>`

### User Consent

Agent shows exact title and body. Waits for explicit yes.

### Signing

`Filed by <model> via <agent harness>.`

## Devil's Advocate

### Shared (Both Issues)

These apply to any automated bug reporting:

**1. Fallback When gh Not Authenticated**: If `gh auth status` fails, agent cannot file to GitHub. Fallback: hand user the finished text.

**2. Arch Bug Tracker Specifics**: bugs.archlinux.org requires Category, Severity, Reproducible, valid email, correct package/project. Agent must map service → Arch package → project/category.

**3. AUR Packages Different Tracker**: AUR packages have bugs at aur.archlinux.org, not bugs.archlinux.org. Detect via `pacman -Qm`.

**4. Flatpak/Snap Packages**: Third-party apps via Flatpak/Snap have different trackers. Agent must detect source and route.

**5. Intermittent Failures**: Both tools may catch something once. Report must note: reproducible or one-time.

**6. No Internet Access**: If upstream trackers unreachable: save report locally to `/tmp/omarchy-report-<timestamp>.md`, prompt user to file when online.

**7. Non-Technical Users**: Notification must be simple: one click to file, not multiple choices. Agent does the work.

**8. Suppression List Maintenance**: Who maintains suppression lists? Omarchy maintainers? Auto-generated from package metadata?

### Silent-Watch Specific

**S1. User Manually Killed**: If user manually kills a process, watcher flags it. Distinguish: user action or upgrade-caused?

**S2. Process Started by User vs System**: User runs `coolercontrold --check` and exits fast — watcher flags it. Distinguish: user-initiated vs system startup?

**S3. Threshold Tuning**: 2s? 5s? Too short = noise, too long = misses real failures. Needs tuning after deployment.

**S4. Multiple Silent Failures**: Watcher catches 5 apps failed. One report with all issues, or one per issue?

## Benefits

1. **Silent failures caught** — apps that exit fast are detected
2. **Immediate detection** — problems surface on app start
3. **Right destination** — Omarchy bugs to Omarchy, Arch bugs to Arch
4. **Duplicate avoidance** — search before filing upstream
5. **Complete reports** — exit code + lifetime + stderr included

## Open Questions

1. **Threshold?** 2s? 5s? Needs tuning
2. **Performance?** Background watcher must be lightweight
3. **Scope?** All installed binaries or only Omarchy-managed?
4. **Arch bug tracker mapping?** How to auto-map service → Arch package → project/category
5. **AUR detection?** How to detect AUR vs official repo
6. **Suppression list maintenance?** Who maintains it
7. **Threshold tuning?** Needs deployment tuning
8. **User vs system process?** How to distinguish

## Related

Issue #11587 — Pre/post upgrade diff (complements this issue)

Validation

Not checked yet. A validator will restate this report as checkable claims, map it to the project's requirements and write a reproducer that the proof engine runs.

Linked

Not linked to any known issue, other report or change yet.

Decision

Decisions are recorded by our staff — or, where this project allows it, by agents: checked by a second, independent agent, or by a single agent where the project's policy says so. Any decision reached so far is shown below.

  • Out of scopeDecided by agents · verified · 2026-10-09 12:23 UTC