Skip to content

refactor: adopt shared release tooling for v0.5.2 - #319

Merged
acgetchell merged 1 commit into
mainfrom
refactor/304-shared-release-tooling
Oct 29, 2026
Merged

acgetchell merged 1 commit into
mainfrom
refactor/304-shared-release-tooling

Conversation

@acgetchell

@acgetchell acgetchell commented Oct 29, 2026 •

Copy link
Copy Markdown
Owner

Completes the remaining #304 migration using the published research-repo-tools==0.2.4 dependency. Removes release_changelog.py, release_evidence.py and release_performance.py; TOML now declares the native/Cargo evidence, draft asset and performance phase policies.

  • Evidence verification and asset recipes use an isolated installed runtime outside the checkout. The release workflow exports the full frozen selection directly to GITHUB_OUTPUT, then revalidates its exact run, attempt, artifact, manifest and policy after deployment approval and before OIDC. The privileged benchmark workflow keeps its existing no-checkout asset commands and captured target.
  • Performance preparation saves independent source assertions and declaration identity. Measurement/report promotion consumes that record; README publication stays separately retryable. Changelog generation defaults to the prepared citation date.
  • Consumer tests retain native/Cargo requirements, signature/identity failures, real normal/quiet Just output transport, stale preparation, and scientific publication coverage. The isolated runtime is tested against checkout/PYTHONPATH shadowing.

Maintainer command changes: performance-prepare uses local tags unless --fetch-tags --allow-git-mutations is supplied; explicit preparation pairs belong in tooling/performance-release.toml. performance-release takes the prepared pair. Replace legacy scratch preparation records by preparing again. Evidence uses --expected PATH instead of --identity JSON. The shared archive limit is 32 MiB, with signed manifests still limited to 1 MiB.

Validation: complete local just ci passed on macOS (Python 3.15.1 / Rust 1.99.1): 300 Python tests, 1,143 Rust tests, default/exact doctests, benchmark compilation, examples, formatting/types, workflow security and documentation/spelling. The isolated v0.2.4 runtime and all real release declarations also passed smoke checks. CodeRabbit approved this commit with no inline findings. Hosted native Linux/macOS/Windows and packaging checks are still running; this PR remains draft until those results are reconciled. No release publication or long benchmark measurement was performed.

Closes #304
Refs #311

Summary by CodeRabbit

  • Release Workflow

    • Release validation now uses signed evidence tied to the exact commit and CI run. Publication stops when evidence is pending, failed, ambiguous, or expired, and rechecks the approved selection before publishing.
    • Benchmark releases now use a prepared selection of tags and measurement settings; fetching tags requires explicit opt-in.
    • Changelog dates can default to the release date recorded in the citation metadata.
  • Documentation

    • Updated release and benchmarking guidance to reflect evidence verification, preparation, and publication steps.

Replace the three release adapters with published research-repo-tools 0.2.4 commands and declarative policies. Run evidence and asset commands in isolated Python outside the observed checkout, preserving frozen post-approval revalidation before OIDC.

Make performance release consume saved preparation; tag fetching is explicit and README publication remains independently retryable. Preparation positional tags move to the shared declaration, and evidence --identity JSON becomes --expected PATH. Retain native policy, workflow transport and scientific publication regressions.

Closes #304
@coderabbitai

coderabbitai Bot commented Oct 29, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

No actionable comments were generated in the recent review.

Recent review info
Run configuration
Commits

Reviewing files that changed from the base of the PR and between d87b10b and dffae7a.

Files selected for processing: 23
  • .github/workflows/ci.yml
  • .github/workflows/publish-crates.yml
  • docs/BENCHMARKING.md
  • docs/RELEASING.md
  • docs/code_organization.md
  • docs/dev/performance-tooling-adoption.md
  • justfile
  • pyproject.toml
  • tests/tooling/test_changelog_integration.py
  • tests/tooling/test_justfile_discoverability.py
  • tests/tooling/test_performance_workflow.py
  • tests/tooling/test_release_changelog.py
  • tests/tooling/test_release_evidence.py
  • tests/tooling/test_release_performance.py
  • tests/tooling/test_release_publishing.py
  • tests/tooling/test_toolchain_integration.py
  • tooling/README.md
  • tooling/performance-release.toml
  • tooling/release-assets.toml
  • tooling/release-evidence.toml
  • tooling/release_changelog.py
  • tooling/release_evidence.py
  • tooling/release_performance.py
Files with no reviewable changes: 3
  • tooling/release_performance.py
  • tooling/release_evidence.py
  • tooling/release_changelog.py

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

Walkthrough

This change adopts research-repo-tools==0.2.4 for changelog, performance, release-evidence, and release-asset commands. It adds declarative policies, updates CI and publishing workflows, removes three local adapters, and revises consumer tests and documentation.

Changes: Shared release tooling migration

Layer / File(s) Summary
Changelog date policy and commands
pyproject.toml, justfile, tooling/README.md, docs/code_organization.md, tooling/release_changelog.py, tests/tooling/test_changelog_integration.py, tests/tooling/test_release_changelog.py
Changelog recipes delegate to the installed CLI. The changelog policy selects citation-based dates from CITATION.cff. Tests now exercise the shared date resolver and commands, and the local changelog adapter is deleted.
Performance preparation and publication
tooling/performance-release.toml, justfile, docs/BENCHMARKING.md, docs/RELEASING.md, docs/code_organization.md, docs/dev/performance-tooling-adoption.md, tooling/README.md, tooling/release_performance.py, tests/tooling/test_performance_workflow.py, tests/tooling/test_release_performance.py
Performance recipes use shared CLI commands and a configured preparation record. The record binds release inputs, and README and release commands reject stale or missing preparation. Tests cover preparation selection, input changes, and command boundaries; the local performance adapter is deleted.
Evidence and release-asset commands
tooling/release-evidence.toml, tooling/release-assets.toml, .github/workflows/ci.yml, .github/workflows/publish-crates.yml, justfile, docs/RELEASING.md, docs/code_organization.md, docs/dev/performance-tooling-adoption.md, tooling/README.md, tooling/release_evidence.py, tests/tooling/test_release_evidence.py, tests/tooling/test_release_publishing.py, tests/tooling/test_toolchain_integration.py, tests/tooling/test_justfile_discoverability.py
CI creates evidence through the installed CLI. Publishing saves approved evidence to a temporary JSON file and revalidates it through --expected. Evidence and asset policies are declared in TOML, and the Justfile adds an isolated asset command. Tests exercise installed interfaces, verification failures, output handling, and runtime isolation; the local evidence adapter is deleted.

Priority: Normal

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

Change: Refactor

Sequence Diagram(s)

sequenceDiagram
  participant CI as CI workflow
  participant CLI as research-repo-tools CLI
  participant Publish as publish-crates workflow
  participant Temp as RUNNER_TEMP selection file
  CI->>CLI: Create validation evidence from release policy
  CLI-->>CI: Write validation.json
  Publish->>Temp: Save approved evidence JSON
  Publish->>CLI: Verify selection with --expected
  CLI-->>Publish: Return verified identity and commit
  Publish->>CLI: Revalidate approved selection before token acquisition
Loading

Possibly related issues

  • acgetchell/la-stack#304 — The change adopts shared release tooling and replaces the local adapters described by this issue.
  • acgetchell/la-stack#311 — The change updates release preparation and verification workflows, but does not perform publication.
  • acgetchell/la-stack#317 — The change adopts research-repo-tools==0.2.4; the scanner-selection override remains in place as described by this follow-up.

Possibly related PRs

  • acgetchell/la-stack#300 — Established the signed CI evidence contract that this change moves to the shared tooling.
  • acgetchell/la-stack#297 — Introduced shared performance commands that this change further integrates into release preparation and publication.
  • acgetchell/la-stack#312 — Added evidence export and identity revalidation in the publishing workflow, which this change updates to use file-based evidence transport.
Merge Risk: Minimal · up to dffae

No identified issue requires a change before merge. The remaining CI and hosted native checks should complete as normal.

Pre-merge checks: Passed 3 · Failed 1

Failed Failed checks: 1 warning

Check name Status Explanation Resolution
Linked Issues check Warning The PR implements the main #304 coding objectives. pyproject.toml pins research-repo-tools[python-tools]==0.2.4. The three local release adapters are removed. justfile delegates changelog, asset… Complete the final just ci run and hosted native Linux, macOS, and Windows checks for this commit. Record the successful validation with the pinned research-repo-tools==0.2.4 version in the PR.
Passed Passed checks: 3 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 describes the main change: adopting shared release tooling for version v0.5.2. This matches the migration, workflow updates, and removal of local release adapters.
Out of Scope Changes check Passed The reviewed changes stay within #304. The workflow, Justfile, TOML declarations, documentation, adapter removal, and consumer tests support shared-tooling adoption, release security, performance prep…
Full details: Out of Scope Changes check

Explanation

The reviewed changes stay within #304. The workflow, Justfile, TOML declarations, documentation, adapter removal, and consumer tests support shared-tooling adoption, release security, performance preparation, and recipe compatibility. No unrelated release publication, long benchmark measurement, crate publication, or benchmark-inventory change is shown.

Full details: Linked Issues check

Explanation

The PR implements the main #304 coding objectives. pyproject.toml pins research-repo-tools[python-tools]==0.2.4. The three local release adapters are removed. justfile delegates changelog, asset, evidence, and performance recipes to the installed CLI. TOML declarations define evidence, asset, and performance policies. The workflow and tests preserve output-file transport, identity revalidation, native/Cargo gates, isolated execution, stale-preparation failures, and separate performance publication phases. The PR description states that final just ci and hosted native Linux/macOS/Windows checks are still in progress. Therefore the #304 acceptance requirement for passing required validators and native CI is not complete at the reviewed head.

Resolution

Complete the final just ci run and hosted native Linux, macOS, and Windows checks for this commit. Record the successful validation with the pinned research-repo-tools==0.2.4 version in the PR.

Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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

@codecov

codecov Bot commented Oct 29, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 98.35%. Comparing base (d87b10b) to head (dffae7a).
✅ All tests successful. No failed tests found.

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #319   +/-   ##
=======================================
  Coverage   98.35%   98.35%           
=======================================
  Files          16       16           
  Lines        7609     7609           
=======================================
  Hits         7484     7484           
  Misses        125      125           
Flag Coverage Δ
unittests 98.35% <ø> (ø)

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.

@acgetchell acgetchell added this to the v0.5.2 milestone Oct 29, 2026
@acgetchell acgetchell added release Release preparation and packaging refactor Code restructuring without behavior change python Pull requests that update Python code github-actions labels Oct 29, 2026
@acgetchell
acgetchell marked this pull request as ready for review October 29, 2026 02:22
@acgetchell
acgetchell enabled auto-merge October 29, 2026 02:22
@acgetchell
acgetchell merged commit b5156e2 into main Oct 29, 2026
25 checks passed
@acgetchell
acgetchell deleted the refactor/304-shared-release-tooling branch October 29, 2026 02:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

github-actions python Pull requests that update Python code refactor Code restructuring without behavior change release Release preparation and packaging

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Adopt shared release tooling and standardize recipes with Delaunay

1 participant