Recover canonical changelog for immutable release tags

Merged
UN
3mo ago
+188-27

Summary

  • align Auto Release changelog preparation with the canonical changelog-exclude policy
  • recover the sole unpublished immutable v2026.8.10 tag by regenerating only its canonical changelog under a tracked-path mutation guard
  • add executable workflow contracts for ordinary tag pushes, exact-tag recovery, and unexpected mutation refusal
  • document the recovery boundary and regenerate CHANGELOG.md with pm-changelog 2026.8.7

PM context

Verification

  • focused release/workflow contracts: 32/32
  • full suite: 468 files, 7,142 tests
  • exact coverage: 100% statements (50,923/50,923), branches (37,237/37,237), functions (10,456/10,456), lines (49,265/49,265)
  • ESLint, jscpd (zero clones), static quality and 100% docstrings, secret scan, docs links, and tracker measurement ratchets pass
  • clean detached v2026.8.10 worktree regenerated only CHANGELOG.md plus managed-extension timestamp metadata; the recovered changelog matched reviewed main byte-for-byte

Release safety

The existing v2026.8.10 tag remains immutable at f4dcfa8460d3934004e449f93bf138ceef2c535b. This PR does not create, move, or replace a tag and does not publish npm directly. After merge, the guarded Release workflow will be dispatched for that exact tag.

Closes #959 after successful production recovery.

Summary by Sourcery

Align release automation and CI workflows with canonical changelog-exclude policy and add guarded exact-tag changelog recovery for immutable tags.

New Features:

  • Introduce exact-tag changelog recovery that regenerates only the package changelog under a tracked-path mutation guard for immutable tags.

Enhancements:

  • Update release pipeline to pass the canonical --exclude-tag changelog-exclude policy to pm-changelog generation.
  • Extend CI workflow to conditionally run full changelog regeneration or verification based on dispatch mode while preserving static quality ordering.
  • Tighten integration tests to cover changelog-exclude usage, exact-tag recovery behavior, and refusal on unexpected tracked-path mutations.

Documentation:

  • Document the immutable exact-tag recovery boundary and regenerate the main CHANGELOG with the updated pm-changelog tooling.

Tests:

  • Add workflow contract tests that exercise ordinary tag pushes, exact-tag recovery paths, and guarded failure on unexpected tracked-path mutations.

Summary by cubic

Align release changelog generation with the canonical exclusion policy and add a guarded exact‑tag recovery that regenerates only CHANGELOG.md for unpublished immutable tags. This preserves the public changelog and lets us recover v2026.8.10 without moving the tag.

  • Bug Fixes
    • Release prep now calls pm-changelog with --exclude-tag changelog-exclude.
    • GitHub workflow adds exact‑tag recovery for workflow_dispatch + RECOVERY_SOURCE_MODE=tag; regenerates only the changelog and fails if any other tracked path changes (managed extension metadata allowed).
    • Regenerated CHANGELOG.md to drop excluded entries.
    • Updated docs and tests to codify the policy and the recovery guard.