Skip to content

fix(os-image): image checks fail when they should, picoclaw is pinned - #305

Merged
CMGS merged 1 commit into
masterfrom
fix/os-image-audit-2026-11-04
Nov 4, 2026
Merged

CMGS merged 1 commit into
masterfrom
fix/os-image-audit-2026-11-04

Conversation

@CMGS

@CMGS CMGS commented Nov 4, 2026

Copy link
Copy Markdown
Contributor

Fixes held back from #304, because merging any os-image/** change rebuilds and publishes images.

Changes

  • verify-vm-inner.sh: set -e ignores a negated command, so every ! cmd passed whatever it found. Those checks now fail the build: no fuse-overlayfs, no unresolved scrcpy-rfb library, no X server, no scrcpy. The check naming an internal DNS prefix is removed.
  • 24.04-picoclaw/Dockerfile: pin picoclaw to v0.3.1 with a sha256 instead of releases/latest.
  • picoclaw-init: print only the last four characters of the API key, and fix ruff F541.
  • validate-image.sh: remove two assertions that compared a value to itself or repeated an earlier fatal check.
  • start.sh: step labels read [1/7] [4/7] [5/7] [7/7]; they are now [1/4] to [4/4].
  • prepare-gapps16-inner.sh: comments no longer say x86_64 about ABI-agnostic paths.

What merging does
The workflow rebuilds every tag of a family when any file under it changes. This rebuilds and publishes all ubuntu tags and all debian tags. android is untouched on purpose: its only item was a comment. Merge when a rebuild is wanted.

Risk: the first effective run of these checks is the redroid image build

  • No image was built for this PR, because the workflow only builds on master. If the real image contains something a check now refuses, that build fails instead of publishing, which is the point of the check, but it would fail on master.
  • The Dockerfile does not install the refused packages, from reading it. Whether a dependency pulls one in was not checked.
  • Picoclaw moves from whatever latest resolves to, to v0.3.1, which is latest today.

Verified

  • bash -n on the edited scripts; shellcheck SC2251 count for verify-vm-inner.sh is now 0.
  • refute passes on an absent command, and fails with status 1 on a present command and on an unresolved library line.
  • ruff check --select F passes on picoclaw-init, and the file parses.
  • The x86_64 tarball matches the pinned sha256 and contains picoclaw. The arm64 digest comes from the release metadata and was not downloaded.

Not changed

  • start.sh still downloads CH v51.0, below the v54 floor cocoon-check enforces. It starts CH directly without cocoon, and a bump was not tested.
  • The section banners in the image scripts stay.

set -e ignores a negated command, so every '! cmd' in verify-vm-inner.sh
passed whatever it found, including an unresolved scrcpy-rfb library or
an X server left in the image. They now fail the build. Drop the check
that named an internal DNS prefix. Pin picoclaw to v0.3.1 with a sha256
like every other downloaded binary, and stop printing the first twelve
characters of the API key. Remove two validate-image assertions that
compared a value to itself, and number start.sh's steps correctly.
@CMGS
CMGS merged commit 19405fe into master Nov 4, 2026
2 checks passed
@CMGS
CMGS deleted the fix/os-image-audit-2026-11-04 branch November 4, 2026 14:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant