Skip to content

fix(image): keep archive-root indexes out of stored image references - #8336

Draft
devantler wants to merge 1 commit into
mainfrom
claude/image-import-root-ref-8158
Draft

devantler wants to merge 1 commit into
mainfrom
claude/image-import-root-ref-8158

Conversation

@devantler

@devantler devantler commented Nov 11, 2026 •

Copy link
Copy Markdown
Contributor

🤖 Generated by the Agentic Engineer

Why

After a user imports an image archive, newer container runtimes also record the archive's own wrapper as if it were an image. That entry points at nothing real, so a later full cluster export can fail on it. Archives whose multi-platform images carry content for only one platform could also fail to import on a node of that very platform.

What

Import now checks what each node's container runtime supports. Where it can, it imports in a mode that keeps every named image and its digest references but leaves the archive wrapper out, limited to the node's own platform, so a partly present multi-platform image still imports there. Older runtimes keep today's behaviour, and a node whose capabilities cannot be read refuses the import with a clear error before anything is copied.

Deferred: #8251 — recovery and the nested system test

Part of #8158

Import now asks each node's ctr which import modes it supports. When the
node advertises --local, ksail imports client-side, which keeps named
images and their child digest references but does not register the
archive's own top-level index as another image. containerd 2.x's default
transfer importer stores that index as a digest reference that no later
export can find or pull.

The local import is pinned to the node's exact platform, so an image
index that is only partly present still imports on the platform the
archive carries instead of failing on a compatible platform's missing
manifest. Nodes whose ctr lacks --local keep the plain command, and a
failed or incomplete capability probe refuses the import before copying.

Refs #8158

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: 🫴 Ready

Development

Successfully merging this pull request may close these issues.

1 participant