Harden Pi updater, release workflows, and isolated PR CI #1

Closed
jdh wants to merge 13 commits from integration/pi-safe-candidate-20260721 into main
Owner

Superseded by PR #2, which contains the complete release-ready candidate and the fail-closed staged-systemd CI repair.

Superseded by PR #2, which contains the complete release-ready candidate and the fail-closed staged-systemd CI repair.
Harden privileged Pi release workflows
Some checks are pending
CI / verify (pull_request) Waiting to run
c996b6383c
jdh changed title from Add protected Pi updater and isolated PR CI candidate to Harden Pi updater, release workflows, and isolated PR CI 2026-07-21 10:12:39 -04:00
Require explicit browser scanner pairing
Some checks are pending
CI / verify (pull_request) Waiting to run
de4cfb1d0d
jdh force-pushed integration/pi-safe-candidate-20260721 from de4cfb1d0d
Some checks are pending
CI / verify (pull_request) Waiting to run
to 22e2b79226
Some checks are pending
CI / verify (pull_request) Waiting to run
2026-07-21 14:17:32 -04:00
Compare
Bind QEMU attempts to emulator provenance
Some checks are pending
CI / verify (pull_request) Waiting to run
83f6038663
Classify Pi image QEMU evidence
Some checks are pending
CI / verify (pull_request) Waiting to run
4a1a0e4576
Contain Pi file selection and correct scanner claims
Some checks are pending
CI / verify (pull_request) Waiting to run
cc51715000
Require Pi QEMU guest contract evidence
Some checks are pending
CI / verify (pull_request) Waiting to run
f3349a52c7
Fix kiosk boot-blocking runtime.env perms and cage VT escape
Some checks are pending
CI / verify (pull_request) Waiting to run
51ca144b79
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>
# Conflicts:
#	README.md
State absent-release reality in flash guide and runner evidence in status
Some checks are pending
CI / verify (pull_request) Waiting to run
d22744798f
- 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>
Merge remote-tracking branch 'origin/main' into claude/pi-lock09-current
Some checks failed
CI / verify (pull_request) Failing after 4s
dcfc2434c4
# Conflicts:
#	README.md
jdh closed this pull request 2026-07-23 12:11:58 -04:00
Some checks failed
CI / verify (pull_request) Failing after 4s

Pull request closed

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!1
No description provided.