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.
Cloning the clock unpins it: centerAnchor does not follow clones
Reported by igor-gorohovsky · filed Aug 23, 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, Radeon RX 9070, Omarchy 4.0.0-1
What's wrong?
omarchy plugin clone omarchy.clock replaces the bar slot with <user>.clock but leaves bar.centerAnchor set to "omarchy.clock". That id is no longer in the center list, so the bar falls back to centering the whole group. Hovering the clock then reveals the inactive indicators, the center grows, and the clock slides — the center cluster jams against itself.
This is the opposite of what clone already claims to do. The manual says calls to the built-in id get routed to the clone, so nothing that referred to omarchy.clock needs updating. That is already true for omarchy bar move --after omarchy.clock (findRelativeBarLocation / activeCloneFor). The center pin is the one lookup that still does an exact id match.
Steps to reproduce
- Stock bar:
centerAnchoris"omarchy.clock", clock is in the center. omarchy plugin clone omarchy.clock- Confirm
~/.config/omarchy/shell.json: the center slot is now<user>.clock, butcenterAnchoris still"omarchy.clock". - Hover the clock. Inactive indicators appear. The whole center group recenters and the clock moves.
omarchy plugin remove <user>.clock restores the layout id but does not rewrite centerAnchor either. If someone has already patched centerAnchor to the clone id, remove then leaves a stale clone name and the same unpin.
Expected behavior
Clone the clock, leave centerAnchor as "omarchy.clock". The clone stays pinned at screen center. Remove the clone, the built-in is pinned again. No extra shell.json edit.
Suggested fix
Do not rewrite centerAnchor on clone enable/remove. Resolve it at runtime the same way findRelativeBarLocation already follows clones:
- Put
clonedFromon bar-widget registry metadata when the host registers a plugin widget. - When looking up the pin, exact id wins; otherwise use the unique center widget whose
clonedFromis that id. - Bind the lookup to registry revision so a clone that appears after first layout still pins.
Exact match first so naming the clone (or keeping both) still pins what was named.
View raw text
### System details AMD Ryzen 9 5900X, Radeon RX 9070, Omarchy 4.0.0-1 ### What's wrong? `omarchy plugin clone omarchy.clock` replaces the bar slot with `<user>.clock` but leaves `bar.centerAnchor` set to `"omarchy.clock"`. That id is no longer in the center list, so the bar falls back to centering the whole group. Hovering the clock then reveals the inactive indicators, the center grows, and the clock slides — the center cluster jams against itself. This is the opposite of what clone already claims to do. The manual says calls to the built-in id get routed to the clone, so nothing that referred to `omarchy.clock` needs updating. That is already true for `omarchy bar move --after omarchy.clock` (`findRelativeBarLocation` / `activeCloneFor`). The center pin is the one lookup that still does an exact id match. #### Steps to reproduce 1. Stock bar: `centerAnchor` is `"omarchy.clock"`, clock is in the center. 2. `omarchy plugin clone omarchy.clock` 3. Confirm `~/.config/omarchy/shell.json`: the center slot is now `<user>.clock`, but `centerAnchor` is still `"omarchy.clock"`. 4. Hover the clock. Inactive indicators appear. The whole center group recenters and the clock moves. `omarchy plugin remove <user>.clock` restores the layout id but does not rewrite `centerAnchor` either. If someone has already patched `centerAnchor` to the clone id, remove then leaves a stale clone name and the same unpin. #### Expected behavior Clone the clock, leave `centerAnchor` as `"omarchy.clock"`. The clone stays pinned at screen center. Remove the clone, the built-in is pinned again. No extra `shell.json` edit. #### Suggested fix Do not rewrite `centerAnchor` on clone enable/remove. Resolve it at runtime the same way `findRelativeBarLocation` already follows clones: 1. Put `clonedFrom` on bar-widget registry metadata when the host registers a plugin widget. 2. When looking up the pin, exact id wins; otherwise use the unique center widget whose `clonedFrom` is that id. 3. Bind the lookup to registry revision so a clone that appears after first layout still pins. Exact match first so naming the clone (or keeping both) still pins what was named.
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 08:28 UTC