Skip to content

docs: rotate changelog — archive 35 versions, trim README#716

Merged
doobidoo merged 2 commits intomainfrom
docs/changelog-housekeeping
Apr 15, 2026
Merged

docs: rotate changelog — archive 35 versions, trim README#716
doobidoo merged 2 commits intomainfrom
docs/changelog-housekeeping

Conversation

@doobidoo
Copy link
Copy Markdown
Owner

Summary

Ran `scripts/maintenance/changelog_housekeeping.py` — both housekeeping triggers were hitting hard:

  • CHANGELOG.md: 466 lines (threshold: 150)
  • README "Previous Releases": 41 entries (threshold: 8)

Result

  • CHANGELOG.md: 466 → 90 lines, keeps the 8 most recent versions. Oldest now `v10.36.4`.
  • README.md "Previous Releases": trimmed to the top 7 entries.
  • docs/archive/CHANGELOG-HISTORIC.md: +35 versions (`v10.25.0` through `v10.36.3`) appended.
  • Header reference line updated to "Versions v10.36.3 and earlier".

Validation

Script's built-in validation passed: 424 versions before == 424 after across CHANGELOG + archive combined. No content lost, only relocated.

Changes

  • `CHANGELOG.md`: −376 lines
  • `README.md`: −34 lines
  • `docs/archive/CHANGELOG-HISTORIC.md`: +378 lines

Test plan

  • Dry-run matched actual output (versions list + validation counts identical)
  • Version count invariant: 424 before = 424 after
  • Manual spot-check: oldest kept version (`10.36.4`) now appears as oldest in CHANGELOG + newest archived version (`10.36.3`) appears as newest in HISTORIC

🤖 Generated with Claude Code

Ran scripts/maintenance/changelog_housekeeping.py. Both housekeeping
triggers were hitting hard:
- CHANGELOG.md: 466 lines (threshold: 150)
- README "Previous Releases": 41 entries (threshold: 8)

Result:
- CHANGELOG.md 466 → 90 lines (keeps 8 recent versions, oldest now v10.36.4)
- README "Previous Releases" trimmed to 7 entries
- Archived 35 versions (v10.25.0 through v10.36.3) to
  docs/archive/CHANGELOG-HISTORIC.md
- Archive-reference line updated to "Versions v10.36.3 and earlier"

Validation passed: 424 versions before == 424 versions after (no content
lost across CHANGELOG + archive combined).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request performs changelog housekeeping by archiving version entries from v10.25.0 through v10.36.3 into the historic changelog file and removing them from the main changelog and README. Review feedback identifies a few remaining hardcoded version strings in the README and historic changelog that need updating to maintain consistency with the new archival boundaries.

Comment thread README.md
- **v10.36.6** - security: bump cryptography to 46.0.7 (CVE-2026-39892) — buffer overflow fix in non-contiguous buffer handling (PR #690, 1,537 tests)
- **v10.36.5** - fix: Cloudflare Vectorize API v1 to v2 + test script fixes — fixed error 1010 "incorrect_api_version", content_hash arg, sys.path correction (PR #689, @mychaelgo, 1,537 tests)
- **v10.36.4** - fix(windows): hotfix for Get-McpApiKey returning first char instead of full API key — PowerShell array-enumeration trap fixed (PR #687, 1,537 tests)
- **v10.36.3** - fix(dashboard): restore version badge after v10.21.0 security hardening — Settings modal version row fixed, `manage_service.ps1 status` shows real Version/Backend (PR #685, 1,537 tests)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

While trimming this list, it looks like a related line was missed. On line 493, the link to older versions still says v10.22.0 and earlier. This should be updated to v10.36.3 and earlier to be consistent with the changes in CHANGELOG.md.

Older changelog entries for MCP Memory Service (v10.24.0 and earlier).

For current versions (v10.25.0+), see [CHANGELOG.md](../../CHANGELOG.md).
For current versions (v10.36.4+), see [CHANGELOG.md](../../CHANGELOG.md).
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

While updating the version range here, it seems the header on line 3 was missed. It still says v10.24.0 and earlier, but this file now contains versions up to v10.36.3. This should be updated for consistency.

Gemini review on #716 caught two hardcoded boundaries the archival
script didn't update:

- README.md:459 — "Older versions (v10.22.0 and earlier)" → "v10.36.3
  and earlier" (the actual archive boundary after this rotation)
- docs/archive/CHANGELOG-HISTORIC.md:3 — "v10.24.0 and earlier" →
  "v10.36.3 and earlier"

Both now reflect the true oldest-in-HISTORIC version after the 35-entry
archival. Script improvement (updating these footers automatically) is a
separate follow-up.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@doobidoo
Copy link
Copy Markdown
Owner Author

Gemini medium findings fixed in 484a983:

  • README.md:459 — v10.22.0 and earlierv10.36.3 and earlier
  • docs/archive/CHANGELOG-HISTORIC.md:3 — v10.24.0 and earlierv10.36.3 and earlier

These two boundary strings aren't in the formats update_header_range in scripts/maintenance/changelog_housekeeping.py matches (different patterns: plain prose in HISTORIC.md, markdown link text in README.md). Script improvement tracked separately.

/gemini review

@doobidoo doobidoo merged commit 4ce3188 into main Apr 15, 2026
9 checks passed
@doobidoo doobidoo deleted the docs/changelog-housekeeping branch April 15, 2026 18:32
Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request performs changelog housekeeping by archiving older version entries. Specifically, entries from v10.25.0 through v10.36.3 have been moved from the main CHANGELOG.md and README.md files into the historic archive at docs/archive/CHANGELOG-HISTORIC.md. I have no feedback to provide.

doobidoo added a commit that referenced this pull request Apr 15, 2026
#717)

PR #716 had to patch two version boundaries by hand because the
housekeeping script's regex only matched the bolded-header patterns:

- docs/archive/CHANGELOG-HISTORIC.md prose header
  "Older changelog entries for MCP Memory Service (vX.Y.Z and earlier)."
- README.md "Full version history" footer's markdown-link text
  "[Older versions (vX.Y.Z and earlier)](docs/archive/CHANGELOG-HISTORIC.md)"

Added two sibling helpers — update_archive_header_boundary() and
update_readme_footer_boundary() — that target each format specifically,
and wired them into run() at the points where the archive header and
README are already being rewritten. Both target the newest-archived
version, which is the correct boundary for a reader following the link.

Tests: 7/7 in tests/maintenance/test_changelog_housekeeping.py cover:
boundary rewriting for each format, idempotence, no-op on unrelated
prose, regression check that the existing update_header_range()
continues to match bolded headers.

Closes #717

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
doobidoo added a commit that referenced this pull request Apr 15, 2026
#717) (#718)

* fix(scripts): rotate missed boundary footers in changelog housekeeping (#717)

PR #716 had to patch two version boundaries by hand because the
housekeeping script's regex only matched the bolded-header patterns:

- docs/archive/CHANGELOG-HISTORIC.md prose header
  "Older changelog entries for MCP Memory Service (vX.Y.Z and earlier)."
- README.md "Full version history" footer's markdown-link text
  "[Older versions (vX.Y.Z and earlier)](docs/archive/CHANGELOG-HISTORIC.md)"

Added two sibling helpers — update_archive_header_boundary() and
update_readme_footer_boundary() — that target each format specifically,
and wired them into run() at the points where the archive header and
README are already being rewritten. Both target the newest-archived
version, which is the correct boundary for a reader following the link.

Tests: 7/7 in tests/maintenance/test_changelog_housekeeping.py cover:
boundary rewriting for each format, idempotence, no-op on unrelated
prose, regression check that the existing update_header_range()
continues to match bolded headers.

Closes #717

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(scripts): make #717 boundary helpers idempotent when suffix missing

Gemini review on PR #718 pointed out that the boundary regexes would
fail if the existing text lacked a "(vX.Y.Z and earlier)" suffix —
relevant because trim_readme_previous_releases() recreates a fallback
footer without that suffix when the section would otherwise vanish.

Made the version-range group optional in both regexes and moved the
leading space into the replacement so the helpers now *insert* the
boundary when it's missing instead of silently no-op'ing.

Added two regression tests for the insert-when-missing path. 9/9
passing.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(scripts): harden #717 regexes against pre-releases + double-version bug

Gemini iter 2 on PR #718 caught two defensive-coding gaps:

1. Version group used `[\d.]+`, rejecting pre-release / build-metadata
   identifiers like 1.0.0-beta, 1.0.0-rc.1, 1.0.0+build.5. Broadened to
   `[\w.+-]+` so the helpers don't no-op when users follow the full
   SemVer spec.

2. The archive-header helper had no trailing anchor for the optional
   version group. If a pre-release version slipped past the narrow
   `[\d.]+` class, the prefix would still match while the boundary
   group didn't — producing a duplicate "(vX and earlier) (vY and
   earlier)." chain. Added the required trailing period as the anchor:
   the boundary is always followed by `.` in the archive header, so
   this pins the match to a complete boundary (or forces no-op).

   The README helper already has a strong anchor (the markdown-link
   URL part), so only the version class needed broadening there.

Tests (12/12): added three regression cases — pre-release rewrite for
each helper, and a "no double-version on unparseable boundary" check.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
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