diff --git a/.gitea/workflows/docker-publish.yml b/.gitea/workflows/docker-publish.yml index 7ca3adc..6f1aefe 100644 --- a/.gitea/workflows/docker-publish.yml +++ b/.gitea/workflows/docker-publish.yml @@ -159,8 +159,9 @@ jobs: - name: Derive platform slug id: platform run: | - PLATFORM_PAIR="${{ matrix.platform }}" - echo "pair=${PLATFORM_PAIR//\//-}" >> $GITHUB_OUTPUT + # POSIX-safe slash substitution — act's runner container ships + # /bin/sh as dash, which doesn't support bash's ${VAR//a/b}. + echo "pair=$(echo '${{ matrix.platform }}' | tr / -)" >> $GITHUB_OUTPUT - name: Set up QEMU if: matrix.platform != 'linux/amd64' @@ -220,8 +221,9 @@ jobs: - name: Derive platform slug id: platform run: | - PLATFORM_PAIR="${{ matrix.platform }}" - echo "pair=${PLATFORM_PAIR//\//-}" >> $GITHUB_OUTPUT + # POSIX-safe slash substitution — act's runner container ships + # /bin/sh as dash, which doesn't support bash's ${VAR//a/b}. + echo "pair=$(echo '${{ matrix.platform }}' | tr / -)" >> $GITHUB_OUTPUT - name: Set up QEMU if: matrix.platform != 'linux/amd64' diff --git a/CHANGELOG.md b/CHANGELOG.md index 3da9343..c051607 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,15 @@ Tags follow `v{opencode_version}[letter]` — bare tag for the first build on a --- +## v1.14.31c — 2026-05-01 + +**CI: fix bash-specific parameter expansion and bump omos size threshold.** + +- **Fix:** `Derive platform slug` step in the per-arch matrix build jobs (`build-base`, `build-omos`) used `${PLATFORM_PAIR//\//-}` which is a bash parameter-expansion. The runner container executes step scripts via `/bin/sh` (dash), which errored with `Bad substitution`. Rewrote using `tr / -` which is POSIX and behaves identically. Both `build-base` and `build-omos` matrix jobs were blocked on this on `v1.14.31b`. +- **Fix:** smoke-test image-size threshold for the `omos` variant bumped from 3000 MB to 3200 MB. The mempalace-toolkit bake-in added ~100 MB to omos; measured 3107 MB on `v1.14.31b`. All functional smoke checks (opencode, node, mempalace CLIs, toolkit wrappers, oh-my-opencode-slim) pass — this is a guardrail recalibration, not a performance concession. The underlying image genuinely grew. +- The runner-disk reclaim step from v1.14.31b did its job: `smoke-base` and `validate-base` now pass cleanly. Only `smoke-omos` was blocked this iteration, and only on the threshold. +- No image changes beyond what shipped in v1.14.31. Rebuild of v1.14.31 content only. + ## v1.14.31b — 2026-05-01 **CI: reclaim runner disk before `load: true` smoke builds.** diff --git a/scripts/smoke-test.sh b/scripts/smoke-test.sh index bba3046..6b4fa34 100755 --- a/scripts/smoke-test.sh +++ b/scripts/smoke-test.sh @@ -214,9 +214,12 @@ SIZE_BYTES=$(docker image inspect --format='{{.Size}}' "$IMAGE") SIZE_MB=$((SIZE_BYTES / 1024 / 1024)) echo " Uncompressed size: ${SIZE_MB} MB" -# Thresholds (uncompressed): base 2500 MB, omos 3000 MB. Adjust as image content evolves. +# Thresholds (uncompressed): base 2500 MB, omos 3200 MB. Adjust as image content evolves. +# omos bumped 3000→3200 on v1.14.31c — mempalace-toolkit bake-in pushed the +# omos variant to ~3.1 GB. Functional smoke checks all pass; this is a +# guardrail, not a performance limit. THRESHOLD=2500 -[ "$VARIANT" = "omos" ] && THRESHOLD=3000 +[ "$VARIANT" = "omos" ] && THRESHOLD=3200 if [ "$SIZE_MB" -gt "$THRESHOLD" ]; then fail "image size ${SIZE_MB} MB exceeds threshold ${THRESHOLD} MB for variant=$VARIANT" else