Context
During PR #716 (docs: rotate changelog — archive 35 versions), Gemini review caught two hardcoded version-boundary strings that `scripts/maintenance/changelog_housekeeping.py` should have rewritten but didn't:
-
README.md "Full version history" footer:
```markdown
Full version history: CHANGELOG.md | Older versions (v10.22.0 and earlier) | All Releases
```
-
docs/archive/CHANGELOG-HISTORIC.md header:
```markdown
Older changelog entries for MCP Memory Service (v10.24.0 and earlier).
```
Both footers still referenced ancient boundaries (v10.22, v10.24) from earlier archivals. They had to be patched manually.
Why the script missed them
`update_header_range()` in the script only matches two patterns:
- `Recent releases for MCP Memory Service (vX.Y.Z and later)`
- `Versions vX.Y.Z and earlier`
The two footers above are in different formats:
Proposed fix
Extend `update_header_range()` (or add a sibling function `update_all_boundaries()`) to also match:
- `\[Older versions \(v[\d.]+ and earlier\)\]` → rewrite the version
- `Older changelog entries for MCP Memory Service \(v[\d.]+ and earlier\)\.` → rewrite the version
Both should be replaced with the `newest_archived` version the script already computes.
Definition of Done
Related
Context
During PR #716 (docs: rotate changelog — archive 35 versions), Gemini review caught two hardcoded version-boundary strings that `scripts/maintenance/changelog_housekeeping.py` should have rewritten but didn't:
README.md "Full version history" footer:
```markdown
Full version history: CHANGELOG.md | Older versions (v10.22.0 and earlier) | All Releases
```
docs/archive/CHANGELOG-HISTORIC.md header:
```markdown
Older changelog entries for MCP Memory Service (v10.24.0 and earlier).
```
Both footers still referenced ancient boundaries (v10.22, v10.24) from earlier archivals. They had to be patched manually.
Why the script missed them
`update_header_range()` in the script only matches two patterns:
The two footers above are in different formats:
Proposed fix
Extend `update_header_range()` (or add a sibling function `update_all_boundaries()`) to also match:
Both should be replaced with the `newest_archived` version the script already computes.
Definition of Done
Related