Give the manifest merge done-stamps so retries converge - #10
Merged
Conversation
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
The last three master publish attempts got every image pushed, then died in the
mergejob at the same depth each time:imagetools createis 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-manifestsgains 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-Pparallelism exactly the tags that actually merged get stamped; a failed tag stays unstamped and is retried alone.mergejob persists the stamp dir across re-run attempts of the same commit viaactions/cache, mirroring the integration-test stamps.Verification
bash -n+ shellcheck clean (only the pre-existing SC2016 info notes); actionlint + YAML clean.🤖 Generated with Claude Code