chore(release): restore the 6.5.2 version record lost to a squash - #222
Closed
John-David Dalton (jdalton) wants to merge 2 commits into
Closed
chore(release): restore the 6.5.2 version record lost to a squash#222John-David Dalton (jdalton) wants to merge 2 commits into
John-David Dalton (jdalton) wants to merge 2 commits into
Conversation
6.5.2 was published to npm on 2026-07-31, but the commit that bumped the version was collapsed by a squash. Nothing in the repository stated the version, so `release-reconcile` had no bump commit to derive a tag from and failed on every scheduled run until the tag was reconciled by hand. This restores what that commit contained: the version in package.json and the changelog section, both taken from the published artifact rather than regenerated, so the repository agrees with what consumers installed. The tag itself already points at 2fb463c, the last commit before the publish, and cannot be moved — release tags are immutable under fleet-tag-protection, which is the correct posture for a published tag.
The tag reconciliation resolved 6.5.2 to its attested commit, so the baseline entry claiming it could never be tagged is now stale. release-tags-match-provenance flags exactly this: the baseline may only shrink, and a reconciled version leaving it is the point.
Collaborator
Author
|
Closing as obsolete — everything this PR set out to do has since landed independently. The PR restored the 6.5.2 version record by setting
Rebasing would leave nothing behind but a version downgrade, so there is no salvageable remainder. |
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.
Version 6.5.2 has been on npm since 2026-07-31, but this repository still says it is on 6.5.1. This PR makes the repository agree with what was actually published.
The reason for the gap is that the commit which bumped the version was collapsed by a squash. Once that commit was gone, nothing in the repository stated the version 6.5.2 anywhere, so the scheduled
release-reconcilejob had no bump commit to derive a tag from. It failed on every run for days, which is exactly the outcome it exists to prevent.How the gap was diagnosed — the timeline brackets the publish on both sides
The
release-reconcilejob said plainly what was wrong: "no reachable commit whose version-source manifest reads 6.5.2 while its parent does not", and it deliberately refused to pick a commit itself, noting that "the healer never guesses a commit to tag". That refusal was correct — this needed a human decision.The commit was identified from timing rather than content, because the usual signals were unavailable: npm recorded no
gitHead, and the changelog had not changed since 6.5.1 so it could not distinguish between candidates.2fb463c0committed — the last commit before the publish073e3fb3committed, described as pointing the self-pin at "the published 6.5.2"The commit 93 minutes after the publish already refers to 6.5.2 as published, which brackets
2fb463c0as the content it was built from.What this changes, and what it deliberately does not
Changed. The version in
package.jsonbecomes 6.5.2, and the 6.5.2 changelog section is added. Both are copied from the published npm artifact rather than regenerated, so the repository records what consumers actually installed instead of a plausible reconstruction of it.Not changed. The
v6.5.2tag already points at2fb463c0and stays there. Tags are immutable under thefleet-tag-protectionruleset, and that is the right posture — moving a published tag so it pointed at different content than consumers fetched would be worse than the inconsistency it fixed. The tag alone was enough to turnrelease-reconcilegreen.Ran / did not run
Ran. The reconcile job was triggered by hand after the tag landed and returned success, its first green run after a full day of hourly failures.
Did not run. The package was not rebuilt or republished. 6.5.2 on npm is untouched; this only corrects the repository's record of it.
The rule worth drawing from this
A squash must not collapse across a release boundary. A release needs a commit that states its own version, because that commit is the only link between a published artifact and the source it came from. When it is squashed away, the artifact still exists but its provenance does not, and no automation can recover it without guessing.
Worth noting the squash tooling already has a
publishedReleaseBlocksSquashguard, so it is worth understanding why that did not prevent this before relying on it next time.