Skip to content

fix(ci): agent-base BASE_IMAGE + cache → harbor (zot 32B blob short-read) - #47

Merged
kkroo merged 1 commit into
masterfrom
fix/agent-base-harbor-base-image
May 17, 2026
Merged

fix(ci): agent-base BASE_IMAGE + cache → harbor (zot 32B blob short-read)#47
kkroo merged 1 commit into
masterfrom
fix/agent-base-harbor-base-image

Conversation

@kkroo

@kkroo kkroo commented May 17, 2026

Copy link
Copy Markdown

Summary

Docker (agent base) has been failing for a week with short read: expected 32 bytes but got 0: unexpected EOF at FROM-layer resolution. Root cause: zot's Ceph RGW backend silently truncates some small blobs to 0 bytes on read. Phase A (handoff 17d) ruled this out after checking the 756B + 263B buildcache blobs, but the actually-failing blob is the 32-byte FROM-layer descriptor sha256:4f4fb700... which IS truncated on zot.

Evidence

Source HEAD /blobs/sha256:4f4fb700ef54...
zot (registry.blockcast.net) HTTP/2 200 / content-length: 0 ← BUG
harbor (harbor.blockcast.net) HTTP/2 200 / content-length: 32

Fix

  • Swap BASE_IMAGE from \${{ vars.BLOCKCAST_REGISTRY_HOST }}/paperclip:...harbor.blockcast.net/paperclip/paperclip:...
  • Swap cache-from / cache-to to harbor for the same reason (any small cache blob could trip the same Ceph RGW truncation)

Phase B parallel-push (BLO-5717, onprem-k8s#213 + paperclip#42-#45) already publishes server images to both registries, so the sha tag exists in harbor when this workflow runs. No new infrastructure needed.

Buildcache moves fresh — no `buildcache-v6` has been published yet because the build has been failing all session, so there's no continuity loss.

This is also strategic alignment with Phase D zot retirement (~3-7 days from now).

Test plan

  • Verified the 32B blob is zero-truncated on zot, served correctly on harbor (curl HEAD evidence above)
  • Confirmed `harbor.blockcast.net/paperclip/paperclip:sha-2345061-k8s-vendored` exists (pushed today by Phase B)
  • Re-run `Docker (agent base)` workflow on this PR / master after merge — should succeed where 25985228946 failed
  • No follow-up cache regressions on subsequent agent builds (the harbor cache-to image will seed itself on first success)

🤖 Generated with Claude Code

…32B blob as 0 bytes)

`Docker (agent base)` has been failing for a week with `short read:
expected 32 bytes but got 0: unexpected EOF` at FROM-layer resolution.
The 17d handoff hypothesized buildx state corruption / attestation
manifest issues and ruled out a Ceph RGW small-blob bug because two
previously-tested blobs (756B + 263B) served correctly from zot.

Today's check on the actually-failing blob shows the bug:

  curl -I https://registry.blockcast.net/v2/paperclip/blobs/sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1
    HTTP/2 200 / content-length: 0   ← truncated to zero

  curl -I --resolve harbor.blockcast.net:443:69.25.95.125 \
       https://harbor.blockcast.net/v2/paperclip/paperclip/blobs/sha256:4f4fb700...
    HTTP/2 200 / content-length: 32  ← correct

Same Phase A zero-byte-blob pattern, different blob. zot's Ceph RGW
backend silently zero-truncates some small blobs on read. Harbor's
filesystem-backed registry-v2 storage serves the same blob correctly.

Fix: swap the agent build's BASE_IMAGE pull + buildcache to harbor.
Phase B (BLO-5717, #213 onprem-k8s + #42-#45 paperclip) already
parallel-pushes server images to both registries, so the sha-tag
exists in harbor when this workflow runs. The buildcache moves
fresh (no buildcache-v6 has been published yet — the build has
been failing all session).

This is also strategic alignment with Phase D zot retirement
(~3-7 days out per the harbor cutover plan).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@kkroo
kkroo merged commit e09117f into master May 17, 2026
8 checks passed
@kkroo
kkroo deleted the fix/agent-base-harbor-base-image branch May 17, 2026 08:34
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