Integrate verified Pi kiosk release-readiness work #2

Merged
jdh merged 19 commits from server/pi-integration-20260723 into main 2026-07-23 12:44:45 -04:00
Owner

Supersedes PR #1 and all older agent/repro branches. Includes the complete release-ready candidate plus fail-closed staged-systemd validation. Local repository gate: 116 tests passed with exactly one declared root-only skip. Do not merge until the dedicated printago-pi-ci check is green.

Supersedes PR #1 and all older agent/repro branches. Includes the complete release-ready candidate plus fail-closed staged-systemd validation. Local repository gate: 116 tests passed with exactly one declared root-only skip. Do not merge until the dedicated printago-pi-ci check is green.
jdh added 19 commits 2026-07-23 12:11:37 -04:00
Adversarial release audit of the Pi image recipe found a ship-stopper and
a lockdown gap that the host/QEMU evidence levels cannot observe.

- CRITICAL: printago-kiosk-configure wrote /etc/printago-kiosk/runtime.env
  mode 0640 with no chown, so as root it stayed root:root. The kiosk
  launcher sources that file as the unprivileged kiosk user under set -eu,
  which then hits EACCES and the kiosk service crash-loops into its start
  limit into a permanent black screen. The serial-scanner unit masks it
  (systemd reads its EnvironmentFile as root) and the QEMU smoke masks the
  kiosk service, so no automated level catches it. Write runtime.env 0644
  (named RUNTIME_ENV_MODE) so the root-owned file is readable by the kiosk
  user; it holds no secrets and its root:kiosk 0750 parent still blocks
  other users.
- MEDIUM: the kiosk cage session ran with -s (Allow VT switching), so a
  physical Ctrl+Alt+F<n> could leave the kiosk for a getty login. Drop -s
  (cage's secure default).

Regression coverage: test_configure pins runtime.env other-readability
(portable constant check plus a POSIX stat check); validate-mounted-image
asserts runtime.env 0644 and that the cage session does not enable VT
switching; README adds a VT-switch physical acceptance item. Pi suite
104 tests, 5 POSIX-only skips, recipe validation passes.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- docs/FLASH-AND-DEPLOY.md: lead with the fact that zero releases exist, so
  the download/verify steps are not followable yet.
- CURRENT-RELEASE-STATUS.md: list both required runner labels
  (printago-pi-builder, printago-pi-ci) and record zero Actions runs and
  zero published releases as of 2026-07-22.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Fix staged systemd validation in Pi CI
All checks were successful
CI / verify (pull_request) Successful in 8s
3915345227
jdh merged commit 3915345227 into main 2026-07-23 12:44:45 -04:00
jdh deleted branch server/pi-integration-20260723 2026-07-23 12:44:46 -04:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
jdh/printago-pi-kiosk!2
No description provided.