Wallpaper decode cache: board timing
Observed 2026-09-24 about 23:15 UTC. Evidence class: installed system on
the reserved board, with shell-user k230-theme commands timed over the
serial console. No camera was used and nothing was touched by a finger.
- System:
/nix/store/8apcw30v99la98j0pdzqpyz3p7ixhqx3-nixos-system-nixos-26.11.20260919.20b1ddd(masteraab56856). - Install: guarded
switch-to-configuration test. The rollback timer was stopped after a healthy native frame.
| Round | Theme | Generation has background.cache | preview | activate | Result |
|---|---|---|---|---|---|
| 1 | catppuccin-latte | yes (written at prepare) | 3396 ms | 2761 ms | activated |
| 1 | community-proof | yes | 5320 ms | 3426 ms | activated |
| 1 | catppuccin | yes | 5032 ms | 2785 ms | activated |
| 2 | catppuccin-latte | yes | 2496 ms | 2958 ms | activated |
| 2 | community-proof | yes | 3426 ms | 3460 ms | activated |
| 2 | catppuccin | yes | 2568 ms | 3181 ms | activated |
There were zero appearance-*-failed or appearance-*-rejected lines in the
shell journal. Before the cache, the same three activations took 3.7–5.0 s
(../commit-fix-board/README.md). Round 1 previews include writing the cache
(about 2–3 s extra); round 2 reuses the generation.
Where the remaining time goes. A bare k230-theme --help takes 1259 ms
and list takes 1282 ms, against 71 ms for runuser alone. So each command
pays about 1.2 s of Python interpreter start-up and imports on the K230
before doing any work. With PYTHONPROFILEIMPORTTIME, theme_activate
accounts for 357 ms cumulative, with dataclasses and inspect about 137 ms
and 107 ms. The activation also restarts wvkbd for keyboard colours.
Startup on this build still logged wallpaper-commit at 4066 ms, because the
active generation was prepared before the cache existed.
Follow-ups:
- A persistent catalog helper, or trimmed imports, to remove most of the per-command start-up.
- Warming the cache for existing generations.
Real-finger chooser timing remains unmeasured.