chore: add CI guard against stale image-version metadata#18
Merged
Conversation
The vibedata image tag comes from .accelerate/upstream-sync.json. The Upstream Sync workflow writes it automatically, but manual sync merges bypass that and can leave it stale (as happened for v0.23.2). Add scripts/verify-sync-metadata.sh + a verify-sync-metadata.yml workflow that runs on every PR to main. It validates the metadata shape and fails if the recorded upstreamObotVersion is behind the highest stable upstream tag (vX.Y.Z) actually merged into HEAD. This fires precisely on a sync that forgot to bump the metadata and is a no-op for ordinary feature branches. Verified locally: passes on current main (v0.23.0 == merged tag) and fails on a simulated branch that merges the v0.23.2 tag without bumping metadata. Co-Authored-By: Claude Opus 4.8 (1M context) <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.
Why
The vibedata image tag is derived from
.accelerate/upstream-sync.json. TheUpstream Syncworkflow writes it automatically, but manual sync merges bypass that — which is exactly how it drifted tov0.23.0while the code moved to v0.23.2 (#16, fixed in #17).This adds a guard that catches the drift regardless of how a sync happened.
What
scripts/verify-sync-metadata.sh— validates the metadata shape (valid JSON,vX.Y.Zversion, 40-hex SHAs) and enforces the drift rule below..github/workflows/verify-sync-metadata.yml— runs the script on every PR tomain(and on push tomain), fetching upstream release tags first.Drift rule (no false positives)
v.0.23.2-rc1) are excluded.It does not fail merely because upstream released a newer version the fork hasn't synced yet — only when newer upstream content is actually present in the branch but the metadata wasn't updated.
Verification (local)
Note
Best merged after #17 (which bumps the metadata to v0.23.2 and hardens the auto-resolver). On current
mainthis check passes either way, sincev0.23.0metadata matches the merged tag.🤖 Generated with Claude Code