Unchanged community theme: board failure isolated
Observed 2026-09-24 UTC against source dcfbdb0b, installed system
/nix/store/48x70j3df8ksiyab0sdgas5nzmgx69nz-nixos-system-nixos-26.11.20260919.20b1ddd.
The sole operator reserved /tmp/k230-board.lock and the serial console.
This checkpoint records a failed community activation and successful recovery;
it does not accept community support or physical touch behavior.
The unchanged public Fuchsblau source
was staged as an ordinary checkout, with its Git metadata, beneath the shell
user’s Omarchy theme directory. Host Git HEAD was exactly aa7fde043ae60603c3ecc6fd6ac3b6674cacab04
and git status --porcelain was empty. theme_sources.source_digest was
f72ece7c9eead4fb049ebead18d918b4b11be6f35dcc861b8862e5c8f0693e75
before transfer and again on the board after all trials. Source content was
not edited. See the source/license inventory.
No community artwork is redistributed in this checkpoint.
The trial procedure used a private candidate manifest pinning the installed system, default generation and immutable command paths, plus dark, light and community roles. Invocation as shell user:
XDG_RUNTIME_DIR=/run/shell \
PYTHONPATH=/nix/store/wz5m2pb3300zhand0z0r4nx519hzh2is-handheld-theme-command-0.1/libexec/handheld-theme \
/nix/store/v189xydz6qkcd4cbkixcmv91w8hbc560-python3-riscv64-unknown-linux-gnu-3.14.7/bin/python3 \
/run/shell/theme-trial-tools/handheld-theme-trial.py \
--candidate-manifest /run/shell/theme-candidate.json \
--output /run/shell/theme-community-evidence-03 \
--raw-private-dir /run/shell/k230-theme-community-03
WAYLAND_DISPLAY was the active session socket. Attempts 1 and 2 used the
same command with corresponding 01/02 output suffixes. Both failed at
community discovery because this operator’s staging command created root-owned
0700 parent directories. The first correction missed the .config ancestor;
after all created parent directories belonged to shell, readable source and
catalog discovery were independently confirmed. These are staging failures,
not claims about the product importer. Both attempts restored the baseline.
Attempt 3 then prepared the community preview successfully,
but live activation failed. Attempt 4 repeated it using a
private copy of the helper that additionally wrote command stderr and exception
class to a private log. This diagnostic changed no activation/restoration logic.
Its bounded error was fanout prepare failed; both receivers restored.
Both attempts restored the starting generation and byte-identical native pixels.
A separate operator-observed prepare-only diagnostic isolated the same generated community
appearance: Rust rejected its prepare acknowledgement; the deck accepted it.
The fixed diagnostic outcome is a transcription
of the private log, distinct from the trial helper’s machine-produced results.
No commit was sent. The initial diagnostic rollback named the immutable default
explicitly; the deck rejected that path. Repeating rollback with the actual
prior pointer (None) acknowledged on both endpoints and cleared staged state.
This diagnostic error is retained rather than counted as successful recovery.
The agent’s host reproduction identified a valid upstream rgba(...) border
palette value rejected by the Rust parser. Its correction is separate source
work and was not installed for these attempts.
| Current installed scene | Reviewed native board capture |
|---|---|
| Dark drawer, actual desktop-entry icons and live terminal | Dark |
| Light drawer, icon variant and wallpaper | Light |
These unedited 568×1232 PNGs came from attempt 3’s pinned grim capture
command, using the trial helper’s 1.25-second app-color settling allowance.
They were transferred over the reserved console with base64 and visually
reviewed. They are compositor pixels from the real board, not camera footage
or finger input. The fixed JSON retains native-unreviewed from collection;
this human visual review is separate. Baseline/dark/restored hash identically.
After diagnostics, the drawer was hidden, swaymsg card_shell back restored
the terminal, and wvkbd was shown with USR2. Shell, Rust UI and keyboard services
were active. The board was released. No reboot, persistent boot selection,
performance workload or physical acceptance was performed. Full theme-role
coverage, real chooser gestures, videos and boot persistence remain open.
Diagnostic calls used the installed theme_transaction module under the same
packaged Python/PYTHONPATH above. generation came from the community preview’s
appearance_path.parent; previous was the manifest’s immutable default
because _pointer(state_root) returned None:
exchange(Path(manifest['rust_socket']), 'prepare', generation)
exchange(Path(manifest['deck_socket']), 'prepare', generation)
# In finally, each endpoint was attempted separately:
exchange(endpoint, 'rollback', previous)
# Explicit corrective call after the deck rejected the default store path:
exchange(Path('/run/shell/k230-shell-rust-appearance.sock'), 'rollback', None)
exchange(Path('/run/shell/k230-card-appearance.sock'), 'rollback', None)
The trial’s capture executable was
/nix/store/hjllbawb3xs65bmcnyy66yf6g9hdaxk8-grim-riscv64-unknown-linux-gnu-1.5.0/bin/grim,
with the single output argument /run/shell/k230-theme-community-03/dark.png
or light.png, in the shell user’s active Wayland session.