atagen

monolith

public
Star0
Watch0
a772647a949fb47d1ba814b15866d2551ed162cc
1
ssh://brewery@pls.lobotomise.me:33/atagen/monolith.git

Blame: design/test-checklist.md

82a6f2fca59fatagen2026-10-16 23:18 UTC1
# Test checklist for M5 to M7
82a6f2fca59fatagen2026-10-16 23:18 UTC2
82a6f2fca59fatagen2026-10-16 23:18 UTC3
Everything below landed while you were away and was only smoke-tested nested. Bare metal, multi-monitor and real apps are still unverified.
82a6f2fca59fatagen2026-10-16 23:18 UTC4
82a6f2fca59fatagen2026-10-16 23:18 UTC5
Build and run from the repo root in nushell.
82a6f2fca59fatagen2026-10-16 23:18 UTC6
82a6f2fca59fatagen2026-10-16 23:18 UTC7
```nu
82a6f2fca59fatagen2026-10-16 23:18 UTC8
nix develop -c cargo build --release -p monolith
82a6f2fca59fatagen2026-10-16 23:18 UTC9
nix develop -c sh -c 'RUST_LOG=monolith=debug target/release/monolith run --backend drm 2> monolith.log'
82a6f2fca59fatagen2026-10-16 23:18 UTC10
```
82a6f2fca59fatagen2026-10-16 23:18 UTC11
82a6f2fca59fatagen2026-10-16 23:18 UTC12
## M5
82a6f2fca59fatagen2026-10-16 23:18 UTC13
82a6f2fca59fatagen2026-10-16 23:18 UTC14
- [ ] **VRR.** The log line `output connected` should say `vrr_capable=true` for DP-2. Fullscreen vkcube and look for `adaptive sync vrr=true`, and check the monitor's OSD shows a varying refresh rate. Leaving fullscreen should log `vrr=false`. The default is `[output] vrr = "fullscreen"`, and `"on"` and `"off"` also work.
82a6f2fca59fatagen2026-10-16 23:18 UTC15
- [ ] **VRR cursor cap.** With a fullscreen game below 165 fps, moving the mouse should not push the refresh rate up. Cursor-only frames are capped at 60 Hz.
82a6f2fca59fatagen2026-10-16 23:18 UTC16
- [ ] Hotplug, a second monitor and the Intel pass, still open from before.
82a6f2fca59fatagen2026-10-16 23:18 UTC17
82a6f2fca59fatagen2026-10-16 23:18 UTC18
## M6
82a6f2fca59fatagen2026-10-16 23:18 UTC19
82a6f2fca59fatagen2026-10-16 23:18 UTC20
- [ ] **layer-shell.** `waybar` reserves its strip and tiles stay clear of it. A fullscreen window covers it. Its workspaces module should list the tags through ext-workspace.
82a6f2fca59fatagen2026-10-16 23:18 UTC21
- [ ] **Launchers.** `fuzzel` takes the keyboard while open and gives it back on close. The launched app should land on the tag you were on when you launched it.
82a6f2fca59fatagen2026-10-16 23:18 UTC22
- [ ] **Session lock.** `swaylock` hides everything, takes input and unlocks with your password. VT switching still works while locked. Killing swaylock leaves the session locked, which is what the protocol wants. Unlock it by starting `swaylock` again from a VT.
82a6f2fca59fatagen2026-10-16 23:18 UTC23
- [ ] **Idle.** `swayidle -w timeout 10 'notify-send idle'` fires after 10 s without input. A playing `mpv` should hold it off while visible and stop holding it off once its tag is hidden.
82a6f2fca59fatagen2026-10-16 23:18 UTC24
- [ ] **Clipboard.** `wl-copy` and `wl-paste` work both ways with foot or beer. Middle-click paste uses the primary selection.
82a6f2fca59fatagen2026-10-16 23:18 UTC25
- [ ] **Screenshots.** `grim` and `grim -g (slurp)`.
82a6f2fca59fatagen2026-10-16 23:18 UTC26
- [ ] **Portals.** Needs `xdg-desktop-portal-wlr` installed and monolith's package in your profile so `share/xdg-desktop-portal/monolith-portals.conf` is found. Screen sharing a whole output from a browser should work. Window sharing does not exist yet.
82a6f2fca59fatagen2026-10-16 23:18 UTC27
- [ ] **Xwayland.** Run an X app, like `xeyes`, Steam or a Proton game. The log shows `starting Xwayland` on its first connection. Check keyboard input, fullscreen and menu placement. Dialogs should float. After the last X client closes, Xwayland exits and should start again for the next one.
82a6f2fca59fatagen2026-10-16 23:18 UTC28
- [ ] **Activation.** Launch something slow from fuzzel on tag 2, switch to tag 3 before it appears. It should land on tag 2 and mark it urgent.
82a6f2fca59fatagen2026-10-16 23:18 UTC29
82a6f2fca59fatagen2026-10-16 23:18 UTC30
## M7
82a6f2fca59fatagen2026-10-16 23:18 UTC31
82a6f2fca59fatagen2026-10-16 23:18 UTC32
- [ ] **Submit stall.** It used to drop one frame every 6.2 s at 165 Hz. With vkcube running, the `frame rate` debug lines should read 165 of 165 indefinitely, with no `frame missed its vblank` in steady state.
82a6f2fca59fatagen2026-10-16 23:18 UTC33
- [ ] **vkcube black start.** Is the half second of black at launch gone?
82a6f2fca59fatagen2026-10-16 23:18 UTC34
- [ ] **Fullscreen switches.** Toggle fullscreen on vkcube a few times and look for `slow frame` lines. First-time imports now run on a worker thread.
82a6f2fca59fatagen2026-10-16 23:18 UTC35
- [ ] **Realtime, optional.** SCHED_RR and the realtime Vulkan queue need CAP_SYS_NICE. To try them, wrap the binary with `security.wrappers` and `capabilities = "cap_sys_nice+ep"`, then look for `compositor thread runs SCHED_RR` and `queue global priority priority=Some(REALTIME)`. File capabilities make the loader ignore variables like `VK_DRIVER_FILES`.
82a6f2fca59fatagen2026-10-16 23:18 UTC36
82a6f2fca59fatagen2026-10-16 23:18 UTC37
## Known
82a6f2fca59fatagen2026-10-16 23:18 UTC38
82a6f2fca59fatagen2026-10-16 23:18 UTC39
- Nested monolith stops redrawing when the host compositor stops sending it frame callbacks, for example while its window is hidden. Clients inside then freeze until it is shown again.
82a6f2fca59fatagen2026-10-16 23:18 UTC40
- See `parked.md` for what is left over.