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.
Hibernation silently breaks when the swapfile moves: runtime resume_offset consistency check
Reported by brightmeows · filed Oct 6, 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
Problem
omarchy-hibernation-setup computes resume_offset correctly at setup time (#13768 further fixes the stale-file path on setup/remove). But between setups, the swapfile's physical location can move (balance, defragmentation) and nothing detects it:
- Hibernate writes the image correctly — swsusp goes through the swap extent map.
- On resume, the initramfs reads the image header from the literal
resume_offsetphysical offset; btrfs is not mounted yet, so the extent map does not apply. A stale offset means theS1SUSPsignature check fails, the kernel gives up, and the machine cold-boots: session lost, nothing surfaced anywhere except the absence of a resume.
Hit exactly this on a current Omarchy install: configured resume_offset=1630758, actual swapfile location 1894950.
Proposal
A tiny oneshot installed by omarchy-hibernation-setup, comparing the running kernel's offset against the live swapfile at every boot and warning loudly on mismatch:
EXPECTED=$(cat /sys/power/resume_offset)
ACTUAL=$(btrfs inspect-internal map-swapfile -r /swap/swapfile)
[[ $EXPECTED == "$ACTUAL" ]] && exit 0
logger -p err -t resume-offset-check "resume_offset stale: kernel=$EXPECTED swapfile=$ACTUAL"
# + notify-send to the desktop session
exit 1Cost is one map-swapfile call per boot. Complementary to #13768: that PR makes setup/remove correct, this makes drift visible. Happy to send a PR in repo style (test/shell.d + AGENTS.md conventions) if there's appetite.
View raw text
## Problem `omarchy-hibernation-setup` computes `resume_offset` correctly at setup time (#13768 further fixes the stale-file path on setup/remove). But between setups, the swapfile's physical location can move (balance, defragmentation) and nothing detects it: - Hibernate *writes* the image correctly — swsusp goes through the swap extent map. - On resume, the initramfs reads the image header from the literal `resume_offset` physical offset; btrfs is not mounted yet, so the extent map does not apply. A stale offset means the `S1SUSP` signature check fails, the kernel gives up, and the machine cold-boots: session lost, nothing surfaced anywhere except the absence of a resume. Hit exactly this on a current Omarchy install: configured `resume_offset=1630758`, actual swapfile location `1894950`. ## Proposal A tiny oneshot installed by `omarchy-hibernation-setup`, comparing the running kernel's offset against the live swapfile at every boot and warning loudly on mismatch: ```bash EXPECTED=$(cat /sys/power/resume_offset) ACTUAL=$(btrfs inspect-internal map-swapfile -r /swap/swapfile) [[ $EXPECTED == "$ACTUAL" ]] && exit 0 logger -p err -t resume-offset-check "resume_offset stale: kernel=$EXPECTED swapfile=$ACTUAL" # + notify-send to the desktop session exit 1 ``` Cost is one `map-swapfile` call per boot. Complementary to #13768: that PR makes setup/remove correct, this makes drift visible. Happy to send a PR in repo style (test/shell.d + AGENTS.md conventions) if there's appetite.
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 21:55 UTC