-
v0.1.28 Stable
released this
2026-07-04 10:39:41 +00:00 | 1212 commits to main since this releaseSecurity
- buildkit + ibmi publish no longer xtrace-leak the MinIO build key.
pipeline-build-buildkit
andpipeline-build-ibmiranset -euxbeforemc alias set … "$AK" "$SK", so bash printed the
work-bucket access/secret key into the archived pod log (archiveLogs: true) on every buildkit- and
ibmi-taxonomy build — a supply-chain vector (anyone reading logs could poisonbuilds/<sha>/). Now
set -eu→ alias →set -x, matching thepipeline-build/-desktoptwins that already did this. - shipd hardens the
X-User-Emailidentity.POST /api/shipnow rejects a blank/malformed header
(must match a basic email shape) before stamping the audited actor;nginx.confdocuments why the
header cannot be safely cleared at that hop. Still trusted transitively — the proper close (verify a
signed oathkeeper id_token) remains accepted debt, bounded by the shipd-guard VAP + cadence idempotency.
Fixed
- deploy-flux no longer green-skips a REGRESSED trunk. The superseded check treated any
trunk-tip != shaas "superseded → exit 0"; a Forgejo ff-race regressing the ref backward then stranded a release
undeployed while the row showed Succeeded. Ported the compare-API discrimination frompipeline-deploy
(sha AHEAD of tip ⇒ regression ⇒ exit 1 loud) and added an empty-tip guard (transient API failure now
fails loud, not green). Protects the gitops-flux spine (seanfarm / platform-seanfarm). - promote PR-fallbacks match by base AND head. The ff-main and dev-cycle-bump fallbacks in
promote,
promote-tag, andpromote-imageselected the first open PR by base only, so an unrelated concurrent PR
could be ff-merged onto a protectedmain/trunk. Now use the by-base/head lookup the codebase already
uses inpipeline-land. - image + tag promote enforce version monotonicity.
promote-tagandpromote-imageoverwrote
releases/latestunconditionally; a lower clean version reaching trunk could roll the latest pointer
backward. Ported thesort -Vno-downgrade guard frompipeline-promote. - desktop release fails closed on a missing macOS SDK.
fetch-sdklogged a warning and exited 0, so a
release build could ship a signed zelnet package silently missing its.app/.pkg. Nowexit 1when a
required SDK object is absent on a release build (dev/feature-branch CI still skips gracefully). - land binds the merge to the verified sha.
pipeline-landmerged by branch name; a machine branch
(image-bumps) could advance between the green-check and the merge and land an unvalidated tip. Now
re-asserts the tip and passeshead_commit_id(Forgejo 409s on any move). - releases-only
mainis push-protected on the rpg + zelnet repos.branch-protectionrendered
enablePush: trueformainon rpg-hello/demo/lemonade/munchers + zelnet, contradicting their
main: releases-only. Set tofalse(the ff-only merge-API promote works fine under protection). - ibmi deploy integrity gate no longer masks a failed query. Added
set -o pipefail+ a non-empty
assertion so a failingzelnet sqlin the piped integrity check can't be swallowed into a false "differs". - trunk-name resolver is failure-safe fleet-wide (11 sites). Replaced
ls-remote --exit-code … || TRUNK=staging— which misread any transient ls-remote failure as "repo uses the deadstagingname" —
with a single dual-head query that picks the present ref and defaults to the livetrunkon error, across
build/build-buildkit/build-ibmi/build-desktop, validate/validate-flux, promote-image, deploy-ibmi,
test-ibmi-behavioral, and the two zerotea crons. rollback-*CI reservation narrowed to the machine pattern. The gitops CI filters excluded any
rollback-…branch (so a humanrollback-cnpg-migrationgot no CI); tightened torollback-[0-9a-f]{7,}$
so only the ephemeralrollback-<sha>branches the deploy creates are skipped.- devbump reads only the
.versionfield for zig-zon. The "already -dev" idempotency guard grepped the
wholebuild.zig.zonand false-matched a nightlyminimum_zig_version = "…-dev.N", which would wedge
auto-releases; now extracts.versionthe way the cadence template does. - validate dropped the dead
stagingremap left by the staging→trunk rename, and shipd's config
parser strips YAML quotes so a quotedkind: "none"is honored by the no-release guard (matching pipectl).
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- buildkit + ibmi publish no longer xtrace-leak the MinIO build key.