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.
windows-vm: 4.0.1 migration rejects usernames the old installer allowed, stranding existing VMs with a misleading "not configured"
Reported by s0nspark · filed Aug 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
System details
AMD Ryzen AI Max+ 395 (Radeon 8060S), Omarchy 4.0.1, kernel 6.18.46-1-lts, dockurr/windows
What's wrong?
4.0.1 moved the Windows VM compose from ~/.config/windows/docker-compose.yml to root-owned /var/lib/omarchy/windows/docker-compose.yml and validates every field on the root side before writing. USERNAME is validated with:
valid_username() { [[ $1 =~ ^[A-Za-z0-9_-]{1,20}$ ]]; } # bin/omarchy-windows-vm:89The pre-4.0.1 installer applied no validation to that field — empty fell back to docker, anything else was written verbatim:
USERNAME=$(gum input --placeholder="Username (Press enter to use default: docker)" ...)
if [[ -z $USERNAME ]]; then
USERNAME="docker"
fiSo a VM installed with an email-style Windows account ([email protected] — what the Microsoft account sign-in prompt asks for) has a legacy compose the new code cannot migrate. write_compose exits 2 at line 140, migrate_legacy_compose returns 1 at line 358, and the VM is unreachable — while the container image and ~/.windows/data.img are completely intact.
The failure is near-undiagnosable from the CLI:
launchprintsWindows VM not configured. Please run: omarchy-windows-vm install(line 621) — pointing the user at reinstalling a VM that already exists and works.status,stop, andremovecallmigrate_legacy_compose 2>/dev/null || true(lines 600, 708, 724), so the one line that names the real cause (invalid username: …) is discarded outright. Those subcommands simply behave as though no VM was ever configured.
Following the suggested remedy makes it worse: install provisions a fresh VM, and it succeeds where migration failed, because the installer silently substitutes docker for an invalid username (lines 503-506). Migration rejecting what install quietly repairs is the actual defect.
Still present on master as of today.
Steps to reproduce
- On Omarchy < 4.0.1,
omarchy-windows-vm installand enter[email protected]as the Windows username. - Upgrade to 4.0.1.
omarchy-windows-vm status→ reports not configured, no explanation.omarchy-windows-vm launch→Windows VM not configured. Please run: omarchy-windows-vm install, despite a valid legacy compose and an intact~/.windows/data.img.
Suggested fix
Have migrate_legacy_compose sanitize rather than reject. USERNAME is inert after install — dockurr/windows reads it only to build the unattend file during Windows setup — so falling back to docker on migration is safe and matches what install already does for the same input.
Failing that: name the offending field and value in the failure message, and stop discarding stderr in the status/stop/remove paths so the cause is at least visible.
View raw text
### System details
AMD Ryzen AI Max+ 395 (Radeon 8060S), Omarchy 4.0.1, kernel 6.18.46-1-lts, `dockurr/windows`
### What's wrong?
4.0.1 moved the Windows VM compose from `~/.config/windows/docker-compose.yml` to root-owned `/var/lib/omarchy/windows/docker-compose.yml` and validates every field on the root side before writing. `USERNAME` is validated with:
```bash
valid_username() { [[ $1 =~ ^[A-Za-z0-9_-]{1,20}$ ]]; } # bin/omarchy-windows-vm:89
```
The pre-4.0.1 installer applied **no** validation to that field — empty fell back to `docker`, anything else was written verbatim:
```bash
USERNAME=$(gum input --placeholder="Username (Press enter to use default: docker)" ...)
if [[ -z $USERNAME ]]; then
USERNAME="docker"
fi
```
So a VM installed with an email-style Windows account (`[email protected]` — what the Microsoft account sign-in prompt asks for) has a legacy compose the new code cannot migrate. `write_compose` exits 2 at line 140, `migrate_legacy_compose` returns 1 at line 358, and the VM is unreachable — while the container image and `~/.windows/data.img` are completely intact.
**The failure is near-undiagnosable from the CLI:**
- `launch` prints `Windows VM not configured. Please run: omarchy-windows-vm install` (line 621) — pointing the user at reinstalling a VM that already exists and works.
- `status`, `stop`, and `remove` call `migrate_legacy_compose 2>/dev/null || true` (lines 600, 708, 724), so the one line that names the real cause (`invalid username: …`) is discarded outright. Those subcommands simply behave as though no VM was ever configured.
Following the suggested remedy makes it worse: `install` provisions a fresh VM, and it *succeeds* where migration failed, because the installer silently substitutes `docker` for an invalid username (lines 503-506). Migration rejecting what `install` quietly repairs is the actual defect.
Still present on master as of today.
### Steps to reproduce
1. On Omarchy < 4.0.1, `omarchy-windows-vm install` and enter `[email protected]` as the Windows username.
2. Upgrade to 4.0.1.
3. `omarchy-windows-vm status` → reports not configured, no explanation.
4. `omarchy-windows-vm launch` → `Windows VM not configured. Please run: omarchy-windows-vm install`, despite a valid legacy compose and an intact `~/.windows/data.img`.
### Suggested fix
Have `migrate_legacy_compose` sanitize rather than reject. `USERNAME` is inert after install — `dockurr/windows` reads it only to build the unattend file during Windows setup — so falling back to `docker` on migration is safe and matches what `install` already does for the same input.
Failing that: name the offending field and value in the failure message, and stop discarding stderr in the `status`/`stop`/`remove` paths so the cause is at least visible.
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 09:35 UTC