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.
Network speed test consistently over-reports upload speed on 2.5GbE / 1 Gbps service
Reported by Redbeard-Coder · filed Oct 5, 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
System details
AMD Ryzen 9 5900X 2.5 GbE wired Ethernet 1 Gbps symmetric Internet service Omarchy 4.x
What's wrong?
The built-in Omarchy Network Speed Test consistently reports upload throughput
substantially higher than independent browser-based speed tests on the same
machine and connection.
Connection:
- 2.5 GbE Ethernet link
- ISP plan: 1 Gbps symmetric
Repeatable results:
Omarchy Network Speed Test:
- Download: ~1,032 Mbps
- Upload: ~1,298 Mbps
Ookla browser test:
- Download: 1,043 Mbps
- Upload: 1,077 Mbps
- Ping: 2 ms
Fast.com browser test:
- Download: ~1.0 Gbps
- Upload: ~1.0 Gbps
- Unloaded latency: 3 ms
- Loaded latency: 7 ms
The Omarchy download result is close to the browser tests, but the upload result
is consistently around 1.3 Gbps.
This is repeatable across multiple Omarchy runs and is not a one-off spike.
Relevant implementation details
===============================
- The panel displays the last throughput sample, not an averaged result.
In:
shell/plugins/panels/speedtest/Panel.qml
each line from omarchy-network-speedtest directly replaces uploadMbps or
downloadMbps:
if (phase === "down") downloadMbps = String(value)
else if (phase === "up") uploadMbps = String(value)
There is no averaging, median, smoothing, or final steady-state calculation.
The last sample received before the phase ends becomes the displayed result.
This means a short burst can become the final reported speed.
- The 5-second phase timer starts before measurements begin.
Panel.qml starts the helper process and immediately starts the 5-second timer:
speedTestProc.running = true
phaseTimer.restart()
However, omarchy-network-speedtest must first:
- fetch Fast.com / Netflix OCA endpoints
- spawn 8 traffic workers
- wait for the first sampling interval
This appears related to existing issue #12854, which documents that the helper
can take roughly 3-4.5 seconds to produce its first sample.
As a result, a nominal 5-second phase may contain only a small number of actual
throughput samples.
- The helper assumes each sampling interval is exactly one second.
In:
bin/omarchy-network-speedtest
throughput is calculated from interface byte counters after:
sleep 1
using:
(after - before) * 8 / 1000000
The actual elapsed time between counter reads is never measured.
The calculation therefore assumes delta_t = exactly 1.000 seconds, even though
scheduler delay and shell/process overhead make the real interval longer.
The correct formula should use actual elapsed monotonic time:
Mbps = ((after - before) 8) / (elapsed_seconds 1000000)
- Upload throughput is measured from the NIC TX byte counter.
The helper reads:
/sys/class/net/$iface/statistics/tx_bytes
This measures all transmitted interface bytes during the interval rather than
application-level payload successfully received by Fast.com.
That can include protocol overhead, retransmissions, and unrelated TX traffic
during the sampling window.
Why this may explain the observed result
========================================
On this connection:
- Ookla: ~1.08 Gbps upload
- Fast.com browser: ~1.0 Gbps upload
- Omarchy: ~1.30 Gbps upload
Because Omarchy uses short interface-level samples and displays the final sample
rather than a sustained average, it appears possible for a transient upload
burst to become the reported result.
Expected
========
The completed Omarchy speed test should report a sustained upload result that is
reasonably comparable to Fast.com / Ookla on the same connection, approximately
1.0-1.1 Gbps in this case.
Actual
======
Omarchy repeatedly reports approximately 1.3 Gbps upload.
Suggested improvements
======================
- Start the measurement duration on the first valid sample rather than at
process launch, as discussed in #12854.
- Collect multiple steady-state samples and calculate a final result rather
than displaying the last instantaneous sample.
- Measure actual monotonic elapsed time between byte-counter reads instead of
assuming exactly one second.
- Consider measuring transferred application payload rather than total NIC TX
bytes.
Related issue:
#12854 - Speed test panel reads 0 on both dials: 5s phase timer starts at
process launch, ahead of the helper's warm-up
View raw text
### System details
AMD Ryzen 9 5900X 2.5 GbE wired Ethernet 1 Gbps symmetric Internet service Omarchy 4.x
### What's wrong?
The built-in Omarchy Network Speed Test consistently reports upload throughput
substantially higher than independent browser-based speed tests on the same
machine and connection.
Connection:
- 2.5 GbE Ethernet link
- ISP plan: 1 Gbps symmetric
Repeatable results:
Omarchy Network Speed Test:
- Download: ~1,032 Mbps
- Upload: ~1,298 Mbps
Ookla browser test:
- Download: 1,043 Mbps
- Upload: 1,077 Mbps
- Ping: 2 ms
Fast.com browser test:
- Download: ~1.0 Gbps
- Upload: ~1.0 Gbps
- Unloaded latency: 3 ms
- Loaded latency: 7 ms
The Omarchy download result is close to the browser tests, but the upload result
is consistently around 1.3 Gbps.
This is repeatable across multiple Omarchy runs and is not a one-off spike.
Relevant implementation details
===============================
1. The panel displays the last throughput sample, not an averaged result.
In:
shell/plugins/panels/speedtest/Panel.qml
each line from omarchy-network-speedtest directly replaces uploadMbps or
downloadMbps:
if (phase === "down") downloadMbps = String(value)
else if (phase === "up") uploadMbps = String(value)
There is no averaging, median, smoothing, or final steady-state calculation.
The last sample received before the phase ends becomes the displayed result.
This means a short burst can become the final reported speed.
2. The 5-second phase timer starts before measurements begin.
Panel.qml starts the helper process and immediately starts the 5-second timer:
speedTestProc.running = true
phaseTimer.restart()
However, omarchy-network-speedtest must first:
- fetch Fast.com / Netflix OCA endpoints
- spawn 8 traffic workers
- wait for the first sampling interval
This appears related to existing issue #12854, which documents that the helper
can take roughly 3-4.5 seconds to produce its first sample.
As a result, a nominal 5-second phase may contain only a small number of actual
throughput samples.
3. The helper assumes each sampling interval is exactly one second.
In:
bin/omarchy-network-speedtest
throughput is calculated from interface byte counters after:
sleep 1
using:
(after - before) * 8 / 1000000
The actual elapsed time between counter reads is never measured.
The calculation therefore assumes delta_t = exactly 1.000 seconds, even though
scheduler delay and shell/process overhead make the real interval longer.
The correct formula should use actual elapsed monotonic time:
Mbps = ((after - before) * 8) / (elapsed_seconds * 1000000)
4. Upload throughput is measured from the NIC TX byte counter.
The helper reads:
/sys/class/net/$iface/statistics/tx_bytes
This measures all transmitted interface bytes during the interval rather than
application-level payload successfully received by Fast.com.
That can include protocol overhead, retransmissions, and unrelated TX traffic
during the sampling window.
Why this may explain the observed result
========================================
On this connection:
- Ookla: ~1.08 Gbps upload
- Fast.com browser: ~1.0 Gbps upload
- Omarchy: ~1.30 Gbps upload
Because Omarchy uses short interface-level samples and displays the final sample
rather than a sustained average, it appears possible for a transient upload
burst to become the reported result.
Expected
========
The completed Omarchy speed test should report a sustained upload result that is
reasonably comparable to Fast.com / Ookla on the same connection, approximately
1.0-1.1 Gbps in this case.
Actual
======
Omarchy repeatedly reports approximately 1.3 Gbps upload.
Suggested improvements
======================
1. Start the measurement duration on the first valid sample rather than at
process launch, as discussed in #12854.
2. Collect multiple steady-state samples and calculate a final result rather
than displaying the last instantaneous sample.
3. Measure actual monotonic elapsed time between byte-counter reads instead of
assuming exactly one second.
4. Consider measuring transferred application payload rather than total NIC TX
bytes.
Related issue:
#12854 - Speed test panel reads 0 on both dials: 5s phase timer starts at
process launch, ahead of the helper's warm-upValidation
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 21:27 UTC