User report: clicked Pi 3 board → nothing visible happens. Three defects, all on the same path: 1. The kernel cmdline carried over from the original pre-OSS-split code: `quiet init=/bin/sh`. Result: kernel boot messages suppressed, then dropped straight to bare /bin/sh with no PS1 so the user sees an empty serial. Removed both. The kernel cmdline is now just `console=ttyAMA0 root=/dev/mmcblk0p2 rootwait rw dwc_otg.lpm_enable=0`, which lets systemd start a real serial-getty@ttyAMA0.service. 2. Pi OS Trixie armhf since Bookworm ships without a default user (no more pi/raspberry). With cmdline #1 fixed, the user would land at a login prompt and be stuck. Fix: pre-bake a systemd drop-in at /etc/systemd/system/serial-getty@ttyAMA0.service.d/ autologin.conf that uses `agetty --autologin root` so the serial console drops to a root shell on first prompt. The browser canvas IS the authentication boundary; the SD image is mounted RO via a qcow2 overlay so per-session edits don't persist. Edit happens in velxio-prod/scripts/configure-pi3-autologin.sh (to follow in a separate commit). 3. Architectural: the original cache-hit probe was size-only. Today's SD image rebake produced a file with identical byte count but different SHA256 — the cache served stale content for every request even after a manifest bump. Fix: write a sidecar `<file>.sha256` after every successful materialise and trust it on subsequent probes. Manifest SHA bumps invalidate the cache regardless of size. Two regression tests guard this: - test_provider_sidecar_invalidates_on_sha_mismatch - test_provider_missing_sidecar_treats_file_as_invalid Manifest bumped to version "2026-04-21+autologin" for the SD image (kernel + DTB unchanged, still 2026-04-21). |
||
|---|---|---|
| .. | ||
| e2e | ||
| integration | ||
| unit | ||
| conftest.py | ||