Skip to content

Give the manifest merge done-stamps so retries converge - #10

Merged
aa8y merged 1 commit into
masterfrom
merge-stamps
Aug 31, 2026
Merged

Give the manifest merge done-stamps so retries converge#10
aa8y merged 1 commit into
masterfrom
merge-stamps

Conversation

@aa8y

@aa8y aa8y commented Aug 31, 2026

Copy link
Copy Markdown
Owner

What

The last three master publish attempts got every image pushed, then died in the merge job at the same depth each time: imagetools create is not incremental, so a rate-limited merge retry redoes all ~110 tags — re-reading sources and re-writing targets for tags that already merged — and burns the same quota again. Retries could never converge.

  • bin/merge-manifests gains opt-in done-stamps (MERGE_STAMP_DIR): each cleanly merged target tag leaves a stamp, and stamped tags are skipped on the next invocation. Workers write their own stamps, so under -P parallelism exactly the tags that actually merged get stamped; a failed tag stays unstamped and is retried alone.
  • The CI merge job persists the stamp dir across re-run attempts of the same commit via actions/cache, mirroring the integration-test stamps.

Verification

  • bash -n + shellcheck clean (only the pre-existing SC2016 info notes); actionlint + YAML clean.
  • Stubbed-docker test: full run stamps every tag; rerun skips all of them; a simulated single-tag failure leaves that tag unstamped, exits non-zero, and the rerun retries only that tag while skipping the rest.

🤖 Generated with Claude Code

imagetools create is not incremental: re-running it for an
already-merged tag re-reads the sources and re-writes the target,
spending the same registry quota again. So a rate-limited merge job
could never converge -- every retry redid all ~110 tags and died at the
same quota depth, as the last three master attempts showed.

MERGE_STAMP_DIR (opt-in) gives each cleanly merged target tag a stamp;
stamped tags are skipped on the next invocation. The workers write their
own stamps, so under -P parallelism exactly the tags that actually
merged are stamped. CI persists the directory across re-run attempts of
the same commit, mirroring the integration-test stamps.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@aa8y
aa8y enabled auto-merge (squash) August 31, 2026 08:35
@aa8y
aa8y merged commit 51eb645 into master Aug 31, 2026
14 of 24 checks passed
@aa8y
aa8y deleted the merge-stamps branch August 31, 2026 21:47
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