revert: restore the v0.24.0 docs archive source - #801
Merged
Conversation
This reverts commit aae53d5. The v0.24.0 release PR recorded immutable docs archive digests in `docs/site/src/data/archive-lock.yaml`, and #799 merged after it. Its content changes move the built v0.24.0 docset, so the candidate's `archive:snapshot --verify-lock` step now fails with `archive bundle v0.24.0 does not match its immutable lock entry`. A locked entry cannot be re-recorded: `assertArchiveLockImmutable` rejects any change to an existing entry, and `addArchiveLockEntry` refuses to overwrite one. The release therefore requires `main` to carry the content the lock was recorded against. This revert restores a tree byte-identical to the preparation commit b227235. Re-land #799 immediately after v0.24.0 publishes; the change is sound and belongs in the next release. Signed-off-by: Jeremi Joslin <jeremi@joslin.fr>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 2488b42ecb
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
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 v0.24.0 release is blocked. #800 recorded immutable docs archive digests
for the
v0.24.0docset, then #799 merged after it and changed eight docssource files. Those changes move the built docset, so the release candidate now
fails at its
archive:snapshot --verify-lockstep.Confirmed on
ubuntu-24.04by the release rehearsal againstmain(run 32473100032):
Independently confirmed locally with an A/B build of the same docset at both
commits on one machine.
version_tree_sha256is platform-stable: building thepreparation commit on macOS reproduces the Ubuntu-recorded
de6afcce…exactly.At
main's head the same field is157daa66…, so the divergence is caused bythe intervening commits and not by the build platform.
Why a revert rather than re-recording the lock
There is no supported way to re-record an existing entry, by design:
assertArchiveLockImmutablereportsimmutable archive lock entry v0.24.0 was changedfor any modification to an entry present in the base ref.addArchiveLockEntrythrowsalready existsrather than overwriting.docs/site/scripts/archive-lock.test.mjs:83asserts both behaviours.isLockBackedDocsetcovers everyarchiveddocset, with no carve-out foravailability: candidate, so an unpublished candidate is protected exactly likepublished history. Editing the entry would mean defeating a control that has
explicit tests behind it.
release/OPERATIONS.md:255prescribes the remedy for this situation: whenmainadvances before dispatch, inspect the intervening commits and rerun thevalidators and rehearsal against the new tip, using the new revision only when
the release identity remains accurate. Here it does not, so
mainhas to carrythe content the lock was recorded against.
What this does
Reverts #799. The resulting tree is byte-identical to preparation commit
b2272359d, so the archive rebuilds to the locked digests by construction:Follow-up
Re-land #799 immediately after v0.24.0 publishes. The change itself is
sound; only its timing conflicts with the recorded lock. It ships in v0.25.0.
Flag, not fixed here
CI cannot currently detect this class of breakage. The
docs_archivespathfilter in
.github/scripts/ci_changes.py:647intentionally lists only archivetooling and config, so a docs content merge never triggers the job that would
catch an invalidated lock. That is correct for published docsets, whose bytes
are pinned to a tag, but wrong while an unreleased candidate entry is present:
its content resolves to
HEAD. Worth considering a rule that treats docscontent as archive-affecting whenever the lock holds an entry whose tag does not
yet exist. That would have failed #799 in CI instead of silently blocking the
release.