deploy: mount smoke's /data world-writable so the image can actually boot

cloud's release has been blocked for six consecutive runs. The smoke gate
sits before `Tag the release` and the universe pin, so nothing has shipped:

    listen unix /data/credz.sock: bind: permission denied
    open /data/gateway.db.cek.lock: permission denied
    open sqlite "/data/audit-kms.db": ... permission denied
    zip: Load(kms):    exited before listening: exit status 1
    zip: Load(pubsub): exited before listening: exit status 1
    zip: Load(kafka):  exited before listening: exit status 1
    SMOKE FAIL: never reached listening

The image runs as USER 65532:65532 (Dockerfile). A bare `--tmpfs /data:rw`
lands root-owned 0755 on the runner's dind daemon, so every /data write is
refused. The credz broker dies first and every service behind it follows, so
the log reads like three独 service failures when it is one mount.

This header already promised "a writable /data" for the smoke env; it just
was not one.

Reproduced and fixed INSIDE a git-runner, which matters — Docker Desktop's
tmpfs defaults differ and report the broken form as already writable, so a
laptop test says the fix is a no-op:

    docker run --rm --tmpfs /data:rw --user 65532:65532 alpine:3 \
      sh -c 'touch /data/x && echo WRITABLE || echo DENIED'
    git-runner: DENIED          mode=1777: WRITABLE
    macOS:      WRITABLE (false negative)

Co-authored-by: Hanzo Dev <dev@hanzo.ai>
This commit is contained in:
Claude
2026-08-01 05:05:08 -07:00
co-authored by hanzo-dev
parent 92a247c42c
commit 63ad9918d3
+14 -1
View File
@@ -224,7 +224,20 @@ jobs:
docker run --rm \
--entrypoint /bin/sh \
--tmpfs /data:rw \
# mode=1777 is load-bearing. The image runs as USER 65532:65532 and
# a bare `--tmpfs /data:rw` lands root-owned 0755 on the runner's
# dind daemon, so EVERY /data write is refused — the gateway CEK
# lock, the audit sqlite, and `listen unix /data/credz.sock`. With
# the credz broker dead, kms/pubsub/kafka all fail to load and the
# smoke never reaches "zip listening". Sticky-world-writable like
# /tmp, not uid=65532, so it survives a USER change.
#
# Verify inside a runner, NOT on a laptop — Docker Desktop's tmpfs
# defaults differ and report this as already writable:
# docker run --rm --tmpfs /data:rw --user 65532:65532 alpine:3 \
# sh -c 'touch /data/x && echo WRITABLE || echo DENIED'
# git-runner: DENIED mode=1777: WRITABLE
--tmpfs /data:rw,mode=1777 \
-e CLOUD_DATA_DIR=/data \
-e CLOUD_ENV=smoke \
-e CLOUD_KMS_MASTER_KEY_REF="$(head -c 32 /dev/urandom | base64 -w0)" \