fix: correct the pi-studio claim — CI publishes v0.9.59, not the v0.9.60-rc.0 label
Lint / actionlint (push) Successful in 17s
Lint / hadolint (push) Successful in 14s
Publish Docker Image / resolve-versions (push) Successful in 10s
Publish Docker Image / base-decide (push) Successful in 12s
Publish Docker Image / build-base (push) Has been skipped
Publish Docker Image / smoke (push) Successful in 4m44s
Publish Docker Image / smoke-studio (push) Successful in 5m8s
Publish Docker Image / build-variant (push) Successful in 15m52s
Publish Docker Image / update-description (push) Successful in 6s
Publish Docker Image / promote-base-latest (push) Successful in 9s
Publish Docker Image / build-variant-studio (push) Successful in 21m22s
Lint / actionlint (push) Successful in 17s
Lint / hadolint (push) Successful in 14s
Publish Docker Image / resolve-versions (push) Successful in 10s
Publish Docker Image / base-decide (push) Successful in 12s
Publish Docker Image / build-base (push) Has been skipped
Publish Docker Image / smoke (push) Successful in 4m44s
Publish Docker Image / smoke-studio (push) Successful in 5m8s
Publish Docker Image / build-variant (push) Successful in 15m52s
Publish Docker Image / update-description (push) Successful in 6s
Publish Docker Image / promote-base-latest (push) Successful in 9s
Publish Docker Image / build-variant-studio (push) Successful in 21m22s
Measured at the wrong layer during the v1.8.13 audit. I read `ARG
PI_STUDIO_REF=main` in Dockerfile.variant, concluded the release would adopt
main (= v0.9.60-rc.0), set PI_STUDIO_VERSION to that, and wrote a comment plus a
CHANGELOG entry describing deliberate RC adoption. A Dockerfile default cannot
answer "what will CI publish?" when CI overrides it, and it does: build-variant
passes PI_STUDIO_REF=studio_ref and PI_STUDIO_VERSION=studio_tag (lines 598-599
and 787-788), and resolve-versions picks the newest STABLE semver tag via
`^v?[0-9]+\.[0-9]+\.[0-9]+$`, which excludes pre-releases.
Caught by reading run 639's own resolve-versions output rather than the
Dockerfile: studio_tag=v0.9.59, studio_ref=9eed84f = refs/tags/v0.9.59^{}, while
main/v0.9.60-rc.0 is 658536f and never gets built. So published v1.8.13 studio
images carry pi-studio v0.9.59.
ARG restored to `none` rather than pinned to v0.9.59: the local-build default
should not hardcode a tag that goes stale as soon as main moves, which is how the
previous value came to lie. The comment now leads with the override so the next
reader starts at the layer that decides. Upstream's tag-over-main policy is
deliberate (Releases stopped at v0.5.55, main receives half-finished commits), so
adopting an RC from CI would mean changing that filter, not this ARG.
Consequence kept on purpose: the RC's opt-in Studio network binding is in NO
published v1.8.13 image, so it needs no audit this release.
Doc/label-only: base_tag hashes Dockerfile.base + rootfs/** + both entrypoints +
mempalace_toolkit_ref, none of which this touches, so the in-flight base build
(base-ad9faf00f2b2) stays valid and the tag run will reuse it. Verified with CI's
pinned linters: hadolint 2.14.0 exit 0 on both Dockerfiles, actionlint 1.7.7 exit
0, shellcheck 0.10.0 -S error exit 0.
This commit is contained in:
+24
-10
@@ -283,16 +283,30 @@ ARG PI_STUDIO_REF=main
|
||||
# was resolved from; recorded as a label below for at-a-glance identification.
|
||||
# Only meaningful for the studio variant (default `none` otherwise).
|
||||
#
|
||||
# v1.8.13: PI_STUDIO_REF stays floating on `main`, which resolves to
|
||||
# v0.9.60-rc.0 — a RELEASE CANDIDATE, not the latest stable (v0.9.59).
|
||||
# Adopted deliberately (JOA, 2026-09-06); recording the label is what makes
|
||||
# that choice visible via `docker inspect` instead of someone discovering an
|
||||
# RC in production later. Of the 15 commits since 0.9.55, one adds an OPT-IN
|
||||
# network binding for the Studio server: that is network-facing and deserves
|
||||
# its own audit before anyone enables it. The container default is unchanged —
|
||||
# pi-studio still hard-binds 127.0.0.1 (see the STUDIO_EXPOSE bridge below),
|
||||
# so adopting the RC does not by itself expose Studio to the LAN.
|
||||
ARG PI_STUDIO_VERSION=v0.9.60-rc.0
|
||||
# v1.8.13 — READ THIS BEFORE REASONING ABOUT WHICH pi-studio SHIPS. Neither
|
||||
# default below survives a CI build. `resolve-versions` in
|
||||
# .gitea/workflows/docker-publish.yml passes BOTH as build-args (studio_ref and
|
||||
# studio_tag), and it deliberately selects the newest STABLE semver tag: its
|
||||
# filter is `^v?[0-9]+\.[0-9]+\.[0-9]+$`, which excludes pre-releases. So a
|
||||
# PUBLISHED v1.8.13 studio image contains pi-studio v0.9.59 (commit 9eed84f,
|
||||
# = refs/tags/v0.9.59^{}), NOT the v0.9.60-rc.0 that `main` currently points at
|
||||
# (658536f). The `main` default here only applies to a local `docker build`
|
||||
# that passes no studio args.
|
||||
#
|
||||
# That upstream-tag-over-main choice is intentional and documented at the
|
||||
# resolve step: pi-studio keeps tagging every version but stopped publishing
|
||||
# GitHub Releases at v0.5.55 and pushes freely to main, so pinning main risked
|
||||
# baking half-finished commits that land after a tag.
|
||||
#
|
||||
# Corrected here on 2026-09-06 after reading the run-639 resolve-versions
|
||||
# output: the v1.8.13 audit had recorded "RC adopted deliberately" and set this
|
||||
# ARG to v0.9.60-rc.0, which was measured at the wrong layer — a Dockerfile
|
||||
# default cannot answer "what will CI publish?" when CI overrides it. Left at
|
||||
# `none` rather than pinned to a tag, because a hardcoded pre-release here goes
|
||||
# stale the moment main moves and would re-tell the same lie to the next reader.
|
||||
# Consequence worth keeping: the RC's opt-in Studio network binding is NOT in
|
||||
# any published v1.8.13 image, so it needs no audit for this release.
|
||||
ARG PI_STUDIO_VERSION=none
|
||||
RUN if [ "${INSTALL_STUDIO}" = "true" ]; then \
|
||||
set -e; \
|
||||
rm -rf /opt/pi-studio && mkdir -p /opt/pi-studio && \
|
||||
|
||||
Reference in New Issue
Block a user