docs: comprehensive gapless changelog + forensic switch docs#490
Merged
Conversation
The changelog jumped from [Unreleased] straight to [0.5.120]: ship / release-plz bumped versions but never rolled "Unreleased" into release sections, so ~1000 lines of rich prose for already-shipped 0.5.9x-0.6.x work piled up under [Unreleased] and every release in between was missing. - Fill every missing version section v0.5.73 -> v0.6.15 from the tagged history (git-cliff), gapless now from 0.2.114 -> Unreleased. - Redistribute all 22 rich Unreleased blocks under the version each actually shipped in (idxdelta -> 0.6.15, broker + fan-out -> 0.6.1, ship-pipeline -> 0.5.106/0.5.107, WinGet -> 0.5.102, gates -> 0.5.92, memory tiering + dependabot -> 0.5.90, cache-warm -> 0.5.99, soak -> 0.5.96). Zero prose lost. Unreleased keeps only the genuinely unreleased corrupt-name forensics block. - filters.md sec 14a: document --normalize-malformed (<BAD:HHHH> markers, display-only, position preservation). - cli-overview.md: add the Forensic flag group (--malformed, --well-formed, --malformed-path, --normalize-malformed). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
deep-soft
pushed a commit
to deep-soft/UltraFastFileSearch-Rust
that referenced
this pull request
Jun 29, 2026
… release (skyllc-ai#491) The drift fixed wholesale in skyllc-ai#490 had a root cause: `just ship` bumped the workspace version but never touched CHANGELOG.md, so `## [Unreleased]` silently accumulated already-shipped work and every release in between went unrecorded. This makes the ship flow self-maintaining so it cannot drift again. - New `changelog` module in the ci-pipeline crate: pure, unit-tested `roll_unreleased(content, version, date)` moves the `## [Unreleased]` body under a fresh dated `## [vX.Y.Z]` header, leaves an empty `## [Unreleased]` for the next cycle, and repoints the Keep-a-Changelog footer compare-links ([Unreleased] -> vNEW...HEAD, adds [vNEW] -> vPREV...vNEW). - Wired into Phase 2 right after `bump_workspace_version`, before `git_commit` (`git add .`), so the rolled changelog lands in the same signed release commit. Gated by `version_incremented` and itself a no-op on an already-rolled file, so resumed ships never double-roll. - Soft no-ops: a missing CHANGELOG.md or an empty `## [Unreleased]` skip cleanly (no empty sections); only a changelog with no `## [Unreleased]` header at all is an error. - 6 unit tests: roll, empty no-op, idempotent re-run, missing-header error, footer-less roll, header parse. Co-authored-by: Claude Opus 4.8 <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 changelog jumped straight from
## [Unreleased]to## [0.5.120]— every release in between (0.5.121 → 0.6.15) was missing. Root cause:just ship/ release-plz bumped versions but never rolledUnreleasedinto release sections, so ~1000 lines of rich prose for already-shipped 0.5.9x–0.6.x work piled up underUnreleased.What
v0.5.73→v0.6.15from the tagged history (git-cliff). Now gapless from0.2.114→Unreleased(60 versioned sections).Unreleasedblocks under the version each actually shipped in (idxdelta →0.6.15, broker + fan-out →0.6.1, ship-pipeline →0.5.106/0.5.107, WinGet →0.5.102, gates →0.5.92, memory tiering + dependabot →0.5.90, cache-warm →0.5.99, soak →0.5.96). Zero prose lost (verified line-by-line).Unreleasedkeeps only the genuinely-unreleased corrupt-name forensics block.filters.md§14a: document--normalize-malformed(<BAD:HHHH>markers, display-only, position preservation).cli-overview.md: add the Forensic flag group (--malformed,--well-formed,--malformed-path,--normalize-malformed).Docs-only; no code paths touched.
🤖 Generated with Claude Code