Cached selection and pinned default checkpoint
Observed 2026-09-23. The opt-in launcher trial loads the selected generation
from the private current/active pointer before its first Wayland scene. If
that cached generation is absent or invalid, it keeps the immutable Nix
Catppuccin palette subset; the normal option remains disabled. A fresh home
needs no writable state to display that default. The command can select
catppuccin by name from the same pinned data files. No theme source checkout
is changed or refreshed implicitly.
The default includes exact upstream colors.toml, icons.theme and MIT
license bytes at Omarchy commit 28ceaae70ebac3a0edcc21f2faa77a90dc6d404c.
SOURCE.md records per-file
hashes. Its derived report and installed source are deliberately a
palette/icon-selector subset: upstream media is not redistributed or implied
to work. current/theme, current/theme.name and current/background are
stable relative symlinks through the atomic active pointer after a selection;
background may be dangling when a source has no background. Existing
nonmatching files at those names are refused, not overwritten. A prepared
generation remains usable after its source clone is removed. A broken
active pointer can be replaced by a later valid selection.
python3 tests/test_handheld_theme_default.py
PASS: exact file hashes, derived generation ID, parsed palette and icon
selector, source revision and explicit no-media report.
python3 tests/test_omarchy_theme_activation.py
PASS: 8 host tests including stable public paths after clone removal.
python3 tests/test_omarchy_theme_transaction.py
PASS: 13 host tests including incompatible path refusal, in-cache broken
pointer replacement, and foreign dangling-pointer refusal.
python3 tests/test_shell_appearance_receiver.py
PASS: 5 native host socket tests including fresh-home startup, reopened
selected palette and unavailable cached selection fallback.
python3 tools/omarchy-theme-set catppuccin --builtins nix/handheld-theme-default --tools nix/omarchy-theme-tools/upstream --state-root /tmp/k230-omarchy-default-prep-check --prepare-only
PASS: 56 resolved keys, Yaru-purple selector, no background candidates.
nix build .#handheld-theme-default --max-jobs 1 --cores 4 --no-link --print-out-paths
PASS: /nix/store/qlrciqqmh3s80rc755p9dgm3plw1w1r4-handheld-theme-default-28ceaae7
nix build .#handheld-theme-command --max-jobs 1 --cores 4 --no-link --print-out-paths
PASS: /nix/store/pd1igazqim6rzs515vbnq0ij11yn4nzj-handheld-theme-command-0.1
nix build .#touch-launcher --max-jobs 1 --cores 4 --no-link --print-out-paths
PASS: /nix/store/5dzy6jj37xm7a1v40j9fdrmc7q4ih7dp-k230-touch-launcher
nix eval --json .#nixosConfigurations.k230.config.k230.shell.themeReceiverTrial
PASS: false in the normal board configuration.
nix eval --impure --json --expr 'let f = builtins.getFlake (toString ./.); c = f.nixosConfigurations.k230.extendModules { modules = [ { k230.shell.themeReceiverTrial = true; } ]; }; in { enabled = c.config.k230.shell.themeReceiverTrial; installed = builtins.any (p: (p.pname or "") == "handheld-theme-command") c.config.environment.systemPackages; launcher = toString c.config.k230.shell.launcher; }'
PASS: enabled=true, installed=true; the opt-in launcher wrapper is a new
evaluated store path. No whole image or physical boot was built or observed.
Host startup and cache tests are not reboot or panel evidence. Full Omarchy
media, authored Foot overrides, cross-surface tokens, old real-directory
current/ migration and physical persistence remain open. Tasks 2.1 and 2.3
are not checked from this bounded checkpoint.