Proof Portal
Omarchy
ProbeLabs65 findings · 95 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.
Bluetooth panel: discoveryRetry timer spams StartDiscovery at 1 Hz unbounded, wedging the adapter
Reported by 010011010100000101010011 · filed Sep 27, 2026 · open at source
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
Summary
The omarchy.bluetooth bar widget's discoveryRetry timer re-issues StartDiscovery every 1 second indefinitely whenever the adapter rejects it (e.g. "Operation already in progress", adapter mid power-up, or a wedged controller). While the panel was open on this machine it spammed the BT controller ~1 Hz for minutes, and the A2DP output for the AirPods Pro was lost until a full power cycle (the controller's LE scan setup kept failing with EINVAL/-16).
What happened
Opening (or leaving open) the Bluetooth panel while StartDiscovery was rejected produced an unbounded 1 Hz flood of retries:
Sep 26 21:06:27 flowstate omarchy-shell[1910]: WARN quickshell.bluetooth.adapter:
Failed to start discovery on adapterBluetoothAdapter(0x7cc704998bc0, path="/org/bluez/hci0"):
"Operation already in progress"(repeating once per second, 21:06:27 → 21:06:57+)
Simultaneously the kernel showed the controller rejecting LE scan setup:
Sep 26 21:06:27 flowstate kernel: Bluetooth: hci0: Opcode 0x2041 failed: -16
Sep 26 21:06:27 flowstate kernel: Bluetooth: hci0: start background scanning failed: -16Downstream: the AirPods control link could not hold (librepods: "AirPods control link lost: socket disconnected"; exit counters reconnect_attempts_total=28 reconnect_failures_total=22), and no usable A2DP sink remained until a hard reboot re-initialized the controller.
Expected behavior
The retry loop should back off (and ultimately stop) when StartDiscovery keeps being rejected, instead of retrying unconditionally every second.
Steps to reproduce
- Get the BT adapter into a state that rejects
StartDiscovery(mid power-up, another client holding discovery, or a wedged controller). - Open the Bluetooth bar widget and leave it open.
- Watch
omarchy-shelljournal:Failed to start discovery ... "Operation already in progress"every ~1 s.
Suggested fix
In shell/plugins/panels/bluetooth/Panel.qml, the discoveryRetry Timer (~line 507): track consecutive failures and back off the interval (e.g. exponential up to 10–15 s), and cap total attempts. The code already acknowledges the "nudging back on" intent — it just lacks a rate bound when the adapter never confirms.
Workaround: clone omarchy.bluetooth into ~/.config/omarchy/plugins/ and patch the same timer (what I did locally).
System
- Omarchy Package: omarchy 4.0.4-1
- quickshell 0.3.1-1
- Kernel: 7.2.5-3-omarchy x86_64
- Hyprland 0.56.2, BlueZ 5.87-2, PipeWire 1.6.8, WirePlumber 0.5.17-1
- Controller: AzureWave (mt7925e), ASUS laptop; AirPods Pro (A2698) as A2DP sink
- omarchy debug log (24h): https://logs.omarchy.org/PM1tvs
View raw text
## Summary The `omarchy.bluetooth` bar widget's `discoveryRetry` timer re-issues `StartDiscovery` every 1 second indefinitely whenever the adapter rejects it (e.g. "Operation already in progress", adapter mid power-up, or a wedged controller). While the panel was open on this machine it spammed the BT controller ~1 Hz for minutes, and the A2DP output for the AirPods Pro was lost until a full power cycle (the controller's LE scan setup kept failing with `EINVAL/-16`). ## What happened Opening (or leaving open) the Bluetooth panel while `StartDiscovery` was rejected produced an unbounded 1 Hz flood of retries: ``` Sep 26 21:06:27 flowstate omarchy-shell[1910]: WARN quickshell.bluetooth.adapter: Failed to start discovery on adapterBluetoothAdapter(0x7cc704998bc0, path="/org/bluez/hci0"): "Operation already in progress" ``` (repeating once per second, 21:06:27 → 21:06:57+) Simultaneously the kernel showed the controller rejecting LE scan setup: ``` Sep 26 21:06:27 flowstate kernel: Bluetooth: hci0: Opcode 0x2041 failed: -16 Sep 26 21:06:27 flowstate kernel: Bluetooth: hci0: start background scanning failed: -16 ``` Downstream: the AirPods control link could not hold (`librepods`: "AirPods control link lost: socket disconnected"; exit counters `reconnect_attempts_total=28 reconnect_failures_total=22`), and no usable A2DP sink remained until a hard reboot re-initialized the controller. ## Expected behavior The retry loop should back off (and ultimately stop) when `StartDiscovery` keeps being rejected, instead of retrying unconditionally every second. ## Steps to reproduce 1. Get the BT adapter into a state that rejects `StartDiscovery` (mid power-up, another client holding discovery, or a wedged controller). 2. Open the Bluetooth bar widget and leave it open. 3. Watch `omarchy-shell` journal: `Failed to start discovery ... "Operation already in progress"` every ~1 s. ## Suggested fix In `shell/plugins/panels/bluetooth/Panel.qml`, the `discoveryRetry` Timer (~line 507): track consecutive failures and back off the `interval` (e.g. exponential up to 10–15 s), and cap total attempts. The code already acknowledges the "nudging back on" intent — it just lacks a rate bound when the adapter never confirms. Workaround: clone `omarchy.bluetooth` into `~/.config/omarchy/plugins/` and patch the same timer (what I did locally). ## System - Omarchy Package: omarchy 4.0.4-1 - quickshell 0.3.1-1 - Kernel: 7.2.5-3-omarchy x86_64 - Hyprland 0.56.2, BlueZ 5.87-2, PipeWire 1.6.8, WirePlumber 0.5.17-1 - Controller: AzureWave (mt7925e), ASUS laptop; AirPods Pro (A2698) as A2DP sink - omarchy debug log (24h): https://logs.omarchy.org/PM1tvs
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 19:45 UTC