The erofs snapshotter’s layer content cache currently serves a hit by committing the layer during Prepare and returning ErrAlreadyExists. That conflicts with parallel unpacking: rebase defers the parent until Commit, so a commit-at-Prepare layer ends up parentless. erofs therefore disables rebase whenever the cache is enabled, and every cache miss falls back to a fully sequential (slower-than-cold) pull.
Make the layer content cache work with parallel unpack. On a cache hit, Prepare should stage the cached blob into an active (uncommitted) snapshot and signal that the caller should skip layer download and apply, but must still Commit (where the parent is applied). That signal must not end the layer’s lifecycle the way ErrAlreadyExists does. The metadata snapshotter should record the active snapshot and propagate the signal to the caller. The unpacker should honor it by skipping fetch/apply while still running the normal serialized commit path (rebasing the parent in parallel mode), and should not set the uncompressed content label when nothing was fetched. With that, erofs can advertise rebase unconditionally so hits skip download+conversion and misses stay parallel. Share one exported rebase capability constant used by the unpacker, erofs, and overlay plugins.
Interface contract — the change must expose exactly this surface:
snapshots.ErrAlreadyStaged (Prepare sentinel: content staged, skip fetch/apply, still Commit); snapshots.RebaseCap (exported "rebase" capability string)
Work only inside this repository checkout. Make the code change the task
describes, keeping the diff focused — no drive-by refactors.
When you are done, leave your changes committed or in the working tree;
they are collected automatically.
Stay on this snapshot checkout (`task/ycb_containerd_c1e001e6dfe71`). Never checkout, pull, or rebase onto `main`. That branch is a README-only orphan.
Stay on this HEAD. Do not fetch another default branch. Push only on the Cursor-created `crazy-cursor/…` side branch from this HEAD.
Some past runs of this task were launched with a different prompt (the prompt template changed since, or those runs predate this benchmark's stored prompt). Each run persists the exact prompt it sent at launch — that per-launch record is the audit trail; this page shows only the current one.
Reference diff
The task commit's diff against its first parent — the judge's comparison target.