Skip to content

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

Merged
acgetchell merged 5 commits into
mainfrom
refactor/254-changelog-tools
Oct 1, 2026
Merged

acgetchell merged 5 commits into
mainfrom
refactor/254-changelog-tools

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 PyPI release research-repo-tools==0.1.7, locked in tooling and included by dev. It removes the three exclusive Python implementations and their unit tests after baseline and parity checks.

Thin recipes cover generation, a read-only preview, 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 final checks apply the normal repository Markdown/link policy to the published root and archives; generic Markdown formatting leaves these generated files alone.

cliff.toml now uses the packaged 0.1.7 common template: shared categories, SemVer tag grammar, compare links and Markdown-aware code handling. Its only semantic exception retains historical deps-dev bodies containing Ruff/Ty/setuptools release-note, changelog and comparison links. An installed-CLI integration assertion prevents unrelated template drift. The supported shared capability is tracked in research-repo-tools#62; no upstream implementation is included. Candidate formatting inherits repository rules and suppresses MD057 only before future archive files exist; final checks retain link validation.

CodeRabbit now automatically reviews drafts using the official reviews.auto_review.drafts setting. The existing zizmor 1.30.1 pin is preserved; its wrapper action advances narrowly to v0.6.4, which supports that scanner version. The broader action-update capability remains research-repo-tools#61.

changelog-unreleased TAG DATE now requires an explicit ISO date and leaves metadata preparation separate. Removed standalone entry points are replaced by research-repo-tools changelog; tags require v-prefixed SemVer and a declared heading date matching citation metadata. The consumer's declared date policy preserves tagging after a later-day merge. The existing updater accepts valid include-group declarations while advancing only direct dev pins, preserving deliberate upgrades of the exact shared tooling pin.

Validation on implementation head 1572957, preserving maintainer commit 8a06208:

  • All 223 legacy changelog tests passed before removal in the initial migration. The exact published shared package pin remains 0.1.7; this follow-up does not change tool/dependency declarations or locks.
  • Real full-history regeneration preserves all 15 release identities/dates and compare definitions, every prior per-release URL, and all 249 commit-bound legacy entry titles/bodies after normalizing legacy HTML representation and formatting. Two generation passes with identical history/config/tool/date inputs are byte-identical. Additional historical entries are recovered.
  • Generation coverage now exercises literal Rust code in subjects, inline spans and fences, intentionally literal entities, authored dependency links, complete breaking descriptions, prospective dates, transactional preview and repeat generation.
  • Local markdown-ci, lint-config, changelog-check, Ruff formatting/lint/fixture checks and Ty passed. Python tests: 605 passed; 3 Cargo-metadata fixtures could not run because Cargo is absent from this cloud image. All 24 changelog integration cases passed. Local zizmor ran offline because no GitHub token is available to that executor.
  • The formal source-bound review proof is complete: all 13 nodes accepted and routing/validation reconciliation closed. Eight fresh specialist audits found no actionable defect. Independent review retained a P3 historical-note ambiguity: the original migration footer says tagging requires today's date, while the later cb8c471 entry, current configuration/guides and tests use the corrected declared-date policy. Authored history is preserved; the declared-date contract is authoritative.
  • Exact-head Linux/macOS/Windows CI passed on every platform: 608 Python tests, 893 Rust tests and 178 doctests passed (2 doctests intentionally ignored). These hosted results close the local missing-Cargo cases without rewriting the local failure evidence. Authenticated zizmor, dependency audit, Clippy Security Analysis, Repository Rule SARIF, CodeQL and Codecov all passed. Automatic CodeRabbit draft review covered head 1572957, returned success and generated no actionable comments or unresolved threads.
  • The automatically triggered full benchmark measurement is still running. No duplicate workflow runs were requested.

Rust/scientific/benchmark/performance implementation and the num-bigint/num-rational exclusions remain unchanged. Shared toolchain/setup/maintenance migration is deferred; the updater change is limited to compatibility with the included tooling group. 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. This PR implements the changelog phase.

Keep this PR as a draft for Adam's approval; do not merge or enable auto-merge.

Summary by CodeRabbit

  • New Features

    • Changelog commands support previews and validation, release archiving, dated release generation, and displaying notes for a tag.
    • Tagging commands offer dry-run and force options, with version and release-history checks.
  • Documentation

    • Updated contributor and release guides explain the changelog workflow, required tooling, release dates, and archive handling.
    • Archived changelog links and formatting have been updated, and earlier release notes include additional feature and maintenance details.
    • Release generation preserves existing dates and no longer updates package or citation metadata; those updates remain a separate workflow.

- 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
@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: 9ff96973-515b-4ef8-b7d9-12805270e7dd

📥 Commits

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

⛔ Files ignored due to path filters (2)
  • Cargo.lock is excluded by !**/*.lock
  • uv.lock is excluded by !**/*.lock
📒 Files selected for processing (9)
  • .coderabbit.yaml
  • .github/workflows/zizmor.yml
  • CHANGELOG.md
  • cliff.toml
  • docs/archives/changelog/0.3.md
  • justfile
  • pyproject.toml
  • scripts/README.md
  • scripts/tests/test_changelog_integration.py
🚧 Files skipped from review as they are similar to previous changes (3)
  • docs/archives/changelog/0.3.md
  • scripts/README.md
  • CHANGELOG.md

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 tag scripts with the pinned research-repo-tools CLI. It updates command recipes, release guidance, archive links, and integration tests. The development-pin updater now accepts included dependency groups. The changelog also gains release entries and formatting updates.

Changes

Shared changelog tooling

Layer / File(s) Summary
Pin the CLI and define consumer policy
pyproject.toml, changelog-rumdl.toml, cliff.toml, CONTRIBUTING.md, docs/code_organization.md, scripts/README.md, docs/RELEASING.md, docs/dev/docs.md
The project pins research-repo-tools==0.1.7, adds changelog and release configuration, and documents dependency ownership, CLI commands, and release-date handling.
Wire changelog generation and archiving
justfile, scripts/archive_changelog.py, scripts/postprocess_changelog.py, scripts/tests/test_archive_changelog.py, scripts/tests/test_postprocess_changelog.py, scripts/tests/test_changelog_integration.py, docs/RELEASING.md, scripts/check_docs_version_sync.py, scripts/tests/test_check_docs_version_sync.py, semgrep.yaml, docs/archives/changelog/*
Just recipes use the shared CLI for generation, preview, archiving, checks, and note lookup. The local archive and post-processing scripts and their tests are removed. Release guidance and checks account for docs/archives/changelog/.
Delegate release-tag preparation
justfile, scripts/tag_release.py, scripts/tests/test_tag_release.py, scripts/tests/test_changelog_integration.py, scripts/README.md
Tag recipes use the shared CLI instead of the deleted local script. Documentation and integration tests cover tag validation, dry runs, annotated tags, force behavior, and oversized tag notes.
Verify shared CLI behavior
scripts/tests/test_changelog_integration.py
Integration tests cover CLI setup, generation, preview, archiving, validation, note lookup, and tag operations, including file-preservation checks.

Development pin group handling

Layer / File(s) Summary
Handle included dependency groups
scripts/update_python_dev_pins.py, scripts/tests/test_update_python_dev_pins.py, pyproject.toml
The updater accepts valid include-group entries without treating their pins as direct development-tool pins. Tests cover accepted and rejected entries and update transactions.

Release history updates

Layer / File(s) Summary
Update release history
CHANGELOG.md, docs/archives/changelog/*
The changelog gains release entries and commit references for features, fixes, performance, maintenance, and dependencies. Archive links and selected Markdown formatting are updated.

Repository maintenance settings

Layer / File(s) Summary
Update review and security workflow settings
.coderabbit.yaml, .github/workflows/zizmor.yml
Automatic reviews are enabled for draft pull requests, and the zizmor action reference is updated to v0.6.4.

Priority: ➖ Normal

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

Change: Refactor

Sequence Diagram(s)

sequenceDiagram
  participant justfile
  participant CLI as research-repo-tools changelog CLI
  participant changelog as CHANGELOG.md
  participant archives as docs/archives/changelog/
  justfile->>CLI: Run generation, archive, or check command
  CLI->>changelog: Generate or validate changelog
  CLI->>archives: Rotate release notes or validate archives
Loading

Merge Risk: ⚪ Minimal · up to 15729

No concrete merge-blocking issue is established. Complete normal validation and retain draft status pending the requested approval.

🚥 Pre-merge checks | ✅ 4
✅ Passed checks (4 passed)
Check name Status Explanation
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.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes the main change: adopting pinned shared changelog commands as a breaking refactor.
✨ 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 this changelog-focused migration while the PR remains a draft for Adam's approval.

@coderabbitai

coderabbitai Bot commented Sep 30, 2026 •

Copy link
Copy Markdown
Contributor
✅ Action performed

Full review finished.

@codecov

codecov Bot commented Sep 30, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 98.00%. Comparing base (0215e65) to head (1572957).
✅ All tests successful. No failed tests found.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #261      +/-   ##
==========================================
- Coverage   98.02%   98.00%   -0.02%     
==========================================
  Files          13       13              
  Lines        6726     6726              
==========================================
- Hits         6593     6592       -1     
- Misses        133      134       +1     
Flag Coverage Δ
unittests 98.00% <ø> (-0.02%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

- 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

Copy link
Copy Markdown
Owner Author

@coderabbitai review

Please review follow-up commit cb8c471, including the preview, release-date and included-tooling compatibility repairs. Keep this PR as a draft for Adam's approval.

@coderabbitai

coderabbitai Bot commented Sep 30, 2026 •

Copy link
Copy Markdown
Contributor
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

- 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

Copy link
Copy Markdown
Owner Author

@coderabbitai review

Please review final fixture-only commit 2372f81 for signing isolation and stable synthetic release metadata. Keep this PR as a draft for Adam's approval.

@coderabbitai

coderabbitai Bot commented Sep 30, 2026 •

Copy link
Copy Markdown
Contributor
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

- Advance Cargo CLI pins and align the uv pin with version 0.12.19.
- Upgrade actionlint-py, Ruff, Semgrep, and Ty development requirements.
- Refresh Cargo and Python locked dependencies while retaining the research-repo-tools 0.1.7 pin.

Refs #254
- Use the shared 0.1.7 changelog format with a bounded exception for historical deps-dev release-note bodies.
- Preserve literal Rust code during generation and retain complete release history, dates and links.
- Enable automatic CodeRabbit draft reviews and align zizmor-action with the existing scanner pin.

Refs #254
Refs acgetchell/research-repo-tools#62
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