Skip to content

refactor(changelog)!: adopt pinned shared changelog commands - #262

Closed
acgetchell wants to merge 3 commits into
mainfrom
refactor/254-changelog-phase-1
Closed

acgetchell wants to merge 3 commits into
mainfrom
refactor/254-changelog-phase-1

Conversation

@acgetchell

@acgetchell acgetchell commented Sep 30, 2026 •

Copy link
Copy Markdown
Owner

The repository duplicates changelog normalization, minor-series archives and tag preparation. This first phase delegates those commands to the exact published research-repo-tools==0.1.7, locked in tooling and included by dev. It removes the three exclusive Python implementations and their tests after baseline and parity checks.

Thin recipes cover generation, a read-only preview with actual argument forwarding, explicit-date prospective releases, archiving, whole-history checks, root/archive notes and local tags. Completed series move to docs/archives/changelog/MAJOR.MINOR.md. Dedicated checks apply the normal Markdown/link policy to published history; generic Markdown formatting leaves generated changelogs alone.

The retained cliff.toml is a documented consumer exception under #254: packaged policy suppresses historical chore(deps-dev) bodies containing Ruff/Ty/setuptools release-note, changelog and comparison links. Candidate formatting inherits repository policy and suppresses MD057 only before future archive files exist; final checks retain link validation.

changelog-unreleased TAG DATE now requires an explicit ISO date and keeps metadata preparation separate. Removed standalone entry points are replaced by research-repo-tools changelog. Tags require v-prefixed SemVer and a declared release-heading date matching citation metadata, preserving tagging after a later-day merge. The existing updater accepts valid include-group declarations while updating direct dev pins and retaining the exact included tooling pin and lock behavior.

Validation of exact head 2372f81639838b4f3a767ff021c3ca766aaba63e:

  • 223 legacy changelog tests passed before removal; 36 focused consumer/updater cases and the full native Python suite of 607 tests pass. Cases execute actual Just-to-CLI forwarding, rotation, root/archive notes, dates and invalid inputs, transactional failures, force/ref preservation, ambient signing isolation and release-independent fixtures.
  • All 15 release identities/dates, all 291 URL destinations and the decoded prose/code token multiset are preserved. Full-policy just changelog-check passes all four published files. An isolated real uv update preserves the included tooling pin, other manifest values and lockfile bytes.
  • Wheel/sdist builds and clean external wheel installation pass: retained modules and all seven entry points/imports/help calls work without dev dependencies; removed changelog modules are absent.
  • Nine fresh specialist/independent reviews found no issues. Formal review-graph proof is incomplete: its renderer rejects the exact multiline wheel command, while its verifier rejects a lossless display-only escaping correction. Original execution and both diagnostics are preserved; no unrelated runtime changes or test replay were made.
  • Actual native just check and the single final just ci were executed. Both stopped at the online zizmor GitHub advisory audit because cloud API access failed; the public endpoint independently returns 403. Reached Rust/Python/document/config checks pass. The separate full native Python suite passes after CI's early stop.
  • Earlier Ubuntu hosted CI on this exact commit passed 607 Python tests, 893 Rust tests and 178 doctests across default/exact configurations (two ignored). New PR matrix/benchmarks and CodeRabbit review will be tracked separately and final results recorded here.

This clean phase branch publishes the reviewed source independently. PR #261 and its external dependency/tool refresh commit 8a062083 are preserved unchanged.

Rust/scientific/benchmark/performance implementation and num-bigint/num-rational exclusions remain unchanged. Shared setup/toolchain/maintenance migration stays deferred; updater changes are limited to include-group compatibility. The released installation contract uses existing uv plus shared setup when that later phase is adopted; this phase adds no generated bootstrap installers or future v0.1.8 capabilities.

Refs #254. Keep this PR in DRAFT for Adam's approval and CodeRabbit review; do not merge or enable auto-merge.

Summary by CodeRabbit

  • New Features

    • Added changelog preview, validation, archive, release-note lookup, and dated release commands.
    • Integrated shared changelog and tagging tools into project workflows.
  • Improvements

    • Changelog generation now supports explicit release dates and checks them against citation metadata.
    • Added changelog checks to continuous integration and documentation linting.
    • Updated changelog archives and links to use the current archive location.
  • Documentation

    • Expanded guidance for changelog workflows, releases, and development tooling.

- Delegate generation, normalization, minor archiving, release notes and
  local tag preparation to the published research-repo-tools 0.1.7 CLI.
- Preserve retained release history and dependency-note links while moving
  completed series to docs/archives/changelog.
- Keep the historical git-cliff policy as a documented consumer exception
  and validate published changelog links alongside the shared checks.

BREAKING CHANGE: changelog-unreleased now requires TAG DATE and leaves
release metadata preparation separate. Replace the removed standalone
archive-changelog, postprocess-changelog and tag-release entry points with
research-repo-tools changelog commands. Tags must use v-prefixed SemVer;
tagging requires today's UTC release date matching CITATION.cff.

Refs #254
- Forward preview options to the shared CLI and keep generated archives under
  the dedicated changelog formatter and final link check.
- Accept valid included dependency groups while advancing only direct dev
  pins, leaving the shared tooling dependency under its own upgrade policy.
- Keep declared release dates valid after a later merge and include canonical
  changelog archives in the release staging guidance.

Refs #254
- Pin the synthetic Cargo identity independently of the checkout's release
  version while retaining the real consumer configuration and policy.
- Disable inherited commit and tag signing only inside disposable repositories
  so fixture operations do not require user signing keys.

Refs #254
@coderabbitai

coderabbitai Bot commented Sep 30, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository: acgetchell/la-stack/.coderabbit.yaml

Review profile: CHILL

Plan: Essentials

Run ID: 34c6831c-1351-4efe-a84f-e035dd7f043a

📥 Commits

Reviewing files that changed from the base of the PR and between 0215e65 and 2372f81.

⛔ Files ignored due to path filters (1)
  • uv.lock is excluded by !**/*.lock
📒 Files selected for processing (25)
  • CHANGELOG.md
  • CONTRIBUTING.md
  • changelog-rumdl.toml
  • cliff.toml
  • docs/RELEASING.md
  • docs/archives/changelog/0.1.md
  • docs/archives/changelog/0.2.md
  • docs/archives/changelog/0.3.md
  • docs/code_organization.md
  • docs/dev/docs.md
  • justfile
  • pyproject.toml
  • scripts/README.md
  • scripts/archive_changelog.py
  • scripts/check_docs_version_sync.py
  • scripts/postprocess_changelog.py
  • scripts/tag_release.py
  • scripts/tests/test_archive_changelog.py
  • scripts/tests/test_changelog_integration.py
  • scripts/tests/test_check_docs_version_sync.py
  • scripts/tests/test_postprocess_changelog.py
  • scripts/tests/test_tag_release.py
  • scripts/tests/test_update_python_dev_pins.py
  • scripts/update_python_dev_pins.py
  • semgrep.yaml
💤 Files with no reviewable changes (6)
  • scripts/tests/test_tag_release.py
  • scripts/tests/test_archive_changelog.py
  • scripts/tag_release.py
  • scripts/archive_changelog.py
  • scripts/tests/test_postprocess_changelog.py
  • scripts/postprocess_changelog.py

Included review availability: This review used your included allowance. 2 included reviews remain after this review. Your included PR review attempts over the past 7 days set your current allowance at 3 reviews per hour.


📝 Walkthrough

Walkthrough

The repository replaces local changelog and release-tag scripts with the pinned research-repo-tools CLI. Just recipes, repository configuration, release instructions, and integration tests now cover changelog generation, archiving, validation, dated release preparation, and tag operations.

Changes

Shared tooling setup

Layer / File(s) Summary
Tooling dependency and configuration
pyproject.toml, changelog-rumdl.toml, cliff.toml, CONTRIBUTING.md, scripts/update_python_dev_pins.py, scripts/tests/test_update_python_dev_pins.py, scripts/README.md, docs/code_organization.md
The project pins research-repo-tools==0.1.7, adds its tooling group to dev, and configures changelog behavior and the declared release-date policy. Pin updates now accept valid included dependency groups. Documentation describes the shared CLI and repository-owned configuration and recipes.

Changelog generation and archiving

Layer / File(s) Summary
Generation, preview, and archive rotation
justfile, scripts/tests/test_changelog_integration.py, scripts/README.md, docs/dev/docs.md, CHANGELOG.md, docs/archives/changelog/*, scripts/archive_changelog.py, scripts/postprocess_changelog.py, scripts/tests/test_archive_changelog.py, scripts/tests/test_postprocess_changelog.py
Just recipes and integration tests use the shared CLI for generation, preview, archive rotation, and changelog checks. The former local archive and post-processing scripts and their unit tests are removed. Changelog and archive entries also receive whitespace updates.

Dated releases and tag operations

Layer / File(s) Summary
Release dates and tags
justfile, docs/RELEASING.md, scripts/README.md, scripts/tag_release.py, scripts/tests/test_tag_release.py, scripts/tests/test_changelog_integration.py
Release recipes pass an explicit tag and date, and tag recipes invoke the shared CLI. Documentation and integration tests cover date and version checks, previews, annotated tags, force behavior, and release-note lookup. The former local tag script and its test module are removed.

Archive paths and repository checks

Layer / File(s) Summary
Archive links and validation
CHANGELOG.md, changelog-rumdl.toml, justfile, scripts/check_docs_version_sync.py, scripts/tests/test_check_docs_version_sync.py, scripts/tests/test_changelog_integration.py, semgrep.yaml, scripts/README.md, docs/RELEASING.md
Archive references use docs/archives/changelog/. Version-sync traversal, Markdown checks, formatter rules, and integration tests account for the archive location and its historical content.

Priority: ➖ Normal

Estimated code review effort: 4 (Complex) | ~60 minutes

Change: Refactor

Sequence Diagram(s)

sequenceDiagram
  participant Maintainer
  participant Justfile
  participant ChangelogCLI as research-repo-tools changelog CLI
  participant ReleaseFiles as CHANGELOG.md, Cargo.toml, CITATION.cff
  participant Git
  Maintainer->>Justfile: Run tag or tag-force
  Justfile->>ChangelogCLI: Pass tag and force option
  ChangelogCLI->>ReleaseFiles: Read release notes and validate version and date
  ChangelogCLI->>Git: Create or replace annotated tag after validation
  Git-->>ChangelogCLI: Return tag operation result
Loading

Merge Risk: ⚪ Minimal · up to 2372f

The shared changelog migration has no identified merge-blocking issue. Explicit release dates and the new archive paths are consistently reflected in the documented workflows; normal checks and owner approval remain appropriate.

🚥 Pre-merge checks | ✅ 4
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely identifies the main change: adopting pinned shared changelog commands. It is specific, relevant, and includes the breaking-change marker.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Autopilot is currently an internal CodeRabbit preview.


Comment @coderabbitai help to get the list of available commands.

Copy link
Copy Markdown
Owner Author

@coderabbitai full review

Please review all changes on this clean changelog-phase draft at exact commit 2372f81. This independent branch preserves PR #261 and its external tool/dependency refresh. Keep this PR as a draft for Adam's approval.

@coderabbitai

coderabbitai Bot commented Sep 30, 2026 •

Copy link
Copy Markdown
Contributor
✅ Action performed

Full review finished.

@acgetchell acgetchell closed this Sep 30, 2026
@acgetchell
acgetchell deleted the refactor/254-changelog-phase-1 branch October 1, 2026 15:25
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