Skip to content

Codex/s3 release packaging#2

Merged
congziqi77 merged 2 commits into
mainfrom
codex/s3-release-packaging
Jun 1, 2026
Merged

Codex/s3 release packaging#2
congziqi77 merged 2 commits into
mainfrom
codex/s3-release-packaging

Conversation

@congziqi77
Copy link
Copy Markdown
Owner

@congziqi77 congziqi77 commented Jun 1, 2026

Summary by CodeRabbit

Release Notes

  • Bug Fixes

    • Fixed an issue where empty rebase mappings could interfere with subsequent rebase operations, preventing them from correctly applying commits.
  • New Features

    • Installation scripts now support custom base URLs for downloading binaries from custom sources.
  • Chores

    • Version updated to 1.5.3-ep.
    • Added GitHub Actions workflow for automated release builds.

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Jun 1, 2026

Review Change Stack

Warning

Review limit reached

@congziqi77, we couldn't start this review because you've reached your PR review rate limit.

More reviews will be available in 52 minutes and 22 seconds. Learn how PR review limits work.

Your organization has run out of usage credits. Purchase more in the billing tab.

⌛ How to resolve this issue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available.

Please see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 9edb09f8-772b-4a4e-9fad-c91ba4433741

📥 Commits

Reviewing files that changed from the base of the PR and between b8275ab and b6c2c02.

⛔ Files ignored due to path filters (1)
  • Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (5)
  • .github/workflows/release-s3.yml
  • Cargo.toml
  • flake.nix
  • s3-release-packaging-guide.md
  • scripts/release-s3-local.sh
📝 Walkthrough

Walkthrough

This PR adds S3-based release infrastructure for multi-platform binary distribution and fixes a rebase handling bug where empty reflog mappings could interfere with later operations. The changes span GitHub Actions workflows, installer customization, a comprehensive local packaging script, release documentation, and core daemon logic for detecting empty rebases.

Changes

S3 Release Infrastructure

Layer / File(s) Summary
GitHub Actions release workflow
.github/workflows/release-s3.yml
Defines multi-platform matrix job for Linux musl x86_64/arm64 and macOS arm64 with conditional Docker builds, Rust toolchain setup, binary compilation, static-link verification, and per-target artifact uploads. Separate macOS Intel job builds, verifies architecture, and uploads x64 binary.
Installer base URL support
install.sh, install.ps1
Both installers now accept BASE_URL (bash) and $BaseUrl (PowerShell) variables to download binaries from custom S3 sources, deriving release tags from PINNED_VERSION and falling back to GitHub releases when base URL is not configured.
Local S3 packaging and upload script
scripts/release-s3-local.sh
New 365-line script validates environment, detects platform binary names, optionally copies prebuilt binaries or runs cargo build, generates SHA256SUMS, embeds version/URL/checksum into install.sh and install.ps1 templates, uploads to S3 via aws or s3cmd, and creates optional channel-specific release directories. Supports dry-run mode and detailed logging.
Release documentation and version metadata
s3-release-packaging-guide.md, Cargo.toml, flake.nix
Comprehensive 373-line guide covering prerequisites (GitHub CLI, S3 config), workflow dispatch, artifact download and aggregation, local dry-run packaging, S3 upload, verification steps, parameter reference, troubleshooting, and security notes. Version bumped to 1.5.3-ep in package manifests.

Rebase Empty-Mapping Fix

Layer / File(s) Summary
RebaseSkipped event type
src/git/rewrite_log.rs
Adds RebaseSkipped variant to RewriteLogEvent enum and introduces RebaseSkippedEvent struct carrying original/new head, interactive flag, and reason, enabling structured logging of skipped rebases.
Semantic-head rebase segment resolution
src/git/repo_state.rs
Extends resolve_rebase_segment_for_worktree() with optional semantic_heads: Option<(&str, &str)> parameter to match reflog candidates by original/new head pair (when valid OIDs), before falling back to start_target_hint matching.
Rebase event synthesis with empty-mapping detection
src/daemon.rs
Threads semantic heads through rebase resolution in SemanticEvent::RebaseComplete and PullCompleted handlers; emits RebaseSkipped events when reflog segment succeeds but commit mapping yields no commits; updates carryover and pull-with-rebase call sites; collects new_head from both RebaseComplete and RebaseSkipped in processed_rebase_new_heads().
Empty-mapping regression test
tests/integration/rebase_empty_mapping.rs, tests/integration/main.rs
New integration test reproducing noop rebase scenario (#1476), verifying that an AI commit's authorship is preserved through a subsequent real rebase and repository stats are accurate.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Possibly related PRs

  • congziqi77/git-ai#1: Overlaps the same rebase empty-mapping changes (RebaseSkipped events, semantic_heads parameter, and rebase_empty_mapping test).

Poem

🐰 The S3 release bunny hops in,
With workflow and packaging to win,
While rebase fixes spring forward with care,
No empty mappings left anywhere!

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 33.33% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Title check ❓ Inconclusive The title 'Codex/s3 release packaging' is partially related to the changeset. While the PR includes S3 release infrastructure (workflow, script, documentation), the title is vague and uses a non-descriptive internal reference ('Codex') without clearly conveying the primary change to reviewers. Consider using a more specific and descriptive title like 'Add S3 release packaging workflow and scripts' or 'Implement automated S3 release build pipeline' to better communicate the changeset intent.
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
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.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/s3-release-packaging

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

congziqi and others added 2 commits June 1, 2026 18:33
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@congziqi77 congziqi77 force-pushed the codex/s3-release-packaging branch from b8275ab to b6c2c02 Compare June 1, 2026 10:33
@congziqi77 congziqi77 merged commit a2f4043 into main Jun 1, 2026
14 of 21 checks passed
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