Skip to content

docs: refresh legacy snapshot provenance after the history rewrite - #288

Merged
nicklambourne merged 1 commit into
masterfrom
docs/refresh-legacy-tag-commits
Aug 17, 2026
Merged

docs: refresh legacy snapshot provenance after the history rewrite#288
nicklambourne merged 1 commit into
masterfrom
docs/refresh-legacy-tag-commits

Conversation

@nicklambourne

Copy link
Copy Markdown
Owner

Problem

The docs workflow has been failing on every run at Verify immutable historical snapshots:

RuntimeError: v2.0.0 resolves to 9e9a4caeab258f2b564d6c219d328c45ae3d9347,
              expected ab4d7f0208fff3167819ec2464ddd38f91ceb401

The master history rewrite gave every commit a new SHA and the version tags were moved to the new commits, but docs/legacy/manifest.json still pinned the old (now unreachable) tag_commit values. port_legacy_docs.py check resolves each tag and compares against the manifest, so it failed before reaching any snapshot work. All 22 legacy versions were affected, not just 2.0.0.

Fix

  1. Refresh the 22 tag_commit values to the commits the tags now point at.
  2. Regenerate the snapshots (port_legacy_docs.py generate) so each page's provenance header cites the same commit, plus the derived generated_snapshot_tree_hash values.

Why this is safe

The rewrite preserved content exactly — the 2.0.0 commits ab4d7f0 and 9e9a4ca have identical trees. The manifest's content-addressed guards are untouched and still pass: all 44 documentation_source_tree_hash / python_source_tree_hash values match as before, so the immutability guarantee that matters (the historical docs' content) is fully intact and still enforced.

Every changed line is a provenance header or a derived hash — no documentation prose changed:

Category Lines
Provenance headers (<!-- Generated by port_legacy_docs.py … -->) 588
tag_commit 44
generated_snapshot_tree_hash 44
Documentation content 0

Verification

  • check:legacy-snapshotsVerified 22 immutable historical snapshots (was failing)
  • test:legacy-fixture → deterministic v1.0.0 fixture hash unchanged: 4388d8b9…

Unblocks #287, which was red for this pre-existing reason rather than anything in its own change.

🤖 Generated with Claude Code

The master history rewrite gave every commit a new SHA and moved the
version tags to match, but docs/legacy/manifest.json still pinned the
old, now-orphaned tag_commit values. check:legacy-snapshots resolves
each tag and compares, so the docs workflow failed on every run.

Refresh the 22 tag_commit values to the tags' current commits and
regenerate the snapshots so their provenance headers cite the same
commits. The content-addressed guards are untouched and still pass: all
44 documentation_source_tree_hash / python_source_tree_hash values match
as before, confirming the rewrite preserved content exactly. No
documentation prose changed — the diff is provenance headers and the
derived snapshot hashes only.
@nicklambourne
nicklambourne merged commit bf85832 into master Aug 17, 2026
22 checks passed
@nicklambourne
nicklambourne deleted the docs/refresh-legacy-tag-commits branch August 17, 2026 13:17
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