Skip to content

Fix main build: drop convenience from actor initializer - #8604

Closed
azooz2003-bit wants to merge 1 commit into
mainfrom
fix-actor-convenience-init
Closed

azooz2003-bit wants to merge 1 commit into
mainfrom
fix-actor-convenience-init

Conversation

@azooz2003-bit

@azooz2003-bit azooz2003-bit commented Jul 21, 2026 •

Copy link
Copy Markdown
Collaborator

#8521 added public convenience init() to the GitHubPullRequestRequestCoordinator actor. Actor initializers delegate without convenience (SE-0327) and current Swift toolchains reject the keyword as a hard error, so every fleet reload-cloud build and CI compile of main fails with initializers in actors are not marked with 'convenience' (example: https://github.com/manaflow-ai/cmux/actions/runs/29874585488). It landed silently because PR CI is currently disabled. Dropping the keyword keeps the same public surface and the same delegation to init(session:).

🤖 Generated with Claude Code


View with Codesmith Autofix with Codesmith
Need help on this PR? Tag /codesmith with what you need. Autofix is disabled.


Summary by cubic

Remove the convenience keyword from the default initializer of the GitHubPullRequestRequestCoordinator actor to comply with SE-0327 and fix a hard compiler error. Public API stays the same (still delegates to init(session:)), restoring main and CI builds.

Written for commit ada0762. Summary will update on new commits.

Review in cubic

Summary by CodeRabbit

  • Refactor
    • Updated the pull request request coordinator’s initialization behavior to align with Swift language requirements.
    • No user-visible functionality or workflow changes.

#8521 added public convenience
init() to the GitHubPullRequestRequestCoordinator actor. Actor
initializers delegate without convenience (SE-0327) and current Swift
toolchains reject the keyword as a hard error, so every fleet
reload-cloud build and CI compile of main fails with 'initializers in
actors are not marked with convenience'. It landed silently because PR
CI is currently disabled. Dropping the keyword keeps the same public
surface and delegation.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@greptile-apps

greptile-apps Bot commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR fixes the Swift 6 build for the pull request coordinator.

  • Removes the invalid convenience modifier from the actor initializer.
  • Keeps the public initializer and its delegation to init(session:) unchanged.
  • Documents the actor initialization rule.

Confidence Score: 5/5

This looks safe to merge.

  • No blocking issues found in the changed code.
  • The Swift 6 package accepts actor initializer delegation without convenience.
  • Public access and runtime behavior remain unchanged.

Important Files Changed

Filename Overview
Packages/macOS/CmuxGit/Sources/CmuxGit/Probe/GitHubPullRequestRequestCoordinator.swift Removes an actor-incompatible initializer modifier while preserving access and delegation behavior.

Reviews (1): Last reviewed commit: "Fix main build: drop convenience from ac..." | Re-trigger Greptile

@coderabbitai

coderabbitai Bot commented Jul 21, 2026 •

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: 1e07cbd7-d3f7-4373-aaa7-1b28627202f2

📥 Commits

Reviewing files that changed from the base of the PR and between 4daa937 and ada0762.

📒 Files selected for processing (1)
  • Packages/macOS/CmuxGit/Sources/CmuxGit/Probe/GitHubPullRequestRequestCoordinator.swift

📝 Walkthrough

Walkthrough

The public default initializer for GitHubPullRequestRequestCoordinator now uses public init() instead of public convenience init(), with an explanatory comment added.

Changes

Initializer update

Layer / File(s) Summary
Update public initializer declaration
Packages/macOS/CmuxGit/Sources/CmuxGit/Probe/GitHubPullRequestRequestCoordinator.swift
The default initializer removes the convenience modifier and documents the initializer behavior constraint.

Estimated code review effort: 1 (Trivial) | ~2 minutes

Suggested reviewers: austinywang

🚥 Pre-merge checks | ✅ 24 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Description check ⚠️ Warning The description covers summary and rationale, but it omits required template sections like Testing, Demo Video, Review Trigger, and Checklist. Add the missing template sections, especially Testing, Demo Video or N/A, the review-trigger block, and the checklist items.
✅ Passed checks (24 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly matches the change: removing convenience from the actor initializer to fix the build.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
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.
Cmux Swift Actor Isolation ✅ Passed The change is only a public initializer on an actor; the isolation rule explicitly allows actors, and no MainActor/service/Sendable/UI-bound isolation issue was introduced.
Cmux Swift Blocking Runtime ✅ Passed The change only removes convenience and adds a comment; no blocking waits, sleeps, locks, or timing primitives were introduced.
Cmux Browser Automation Off-Main ✅ Passed Only GitHubPullRequestRequestCoordinator.swift changed; no browser-automation commands or routing policy were modified.
Cmux Expensive Synchronous Load ✅ Passed PR only drops convenience from GitHubPullRequestRequestCoordinator.init(); no agent-history load or interactive synchronous parsing was added or moved.
Cmux Cache Substitution Correctness ✅ Passed Initializer-only Swift actor change; no persistence/history/snapshot cache substitution was introduced or altered.
Cmux No Hacky Sleeps ✅ Passed PASS: The PR only changes a Swift actor initializer; the runtime-no-hacky-sleeps rule applies to non-Swift runtime scripts, and no delay logic was added.
Cmux Algorithmic Complexity ✅ Passed Only the actor initializer keyword/comment changed; no scalable-collection scans or hot-path algorithms were added or worsened.
Cmux Swift Concurrency ✅ Passed Patch only drops convenience from the actor’s default initializer and adds an SE-0327 comment; no new legacy async patterns were introduced.
Cmux Swift @Concurrent ✅ Passed Only an actor initializer keyword/comment changed; no @concurrent, nonisolated async, or UI-isolation behavior was introduced.
Cmux Swift Package Boundaries ✅ Passed Changed code lives in Packages/macOS/CmuxGit’s SwiftPM library target, not the app target, so the boundary rule isn’t violated.
Cmux Swiftpm Lockfiles ✅ Passed PR changes only the Swift initializer file; no Package.resolved, .gitignore, Xcode project, or dependency changes appear in the diff, so the rule isn’t violated.
Cmux Swift Logging ✅ Passed The touched Swift file only changes the initializer signature/comment; no print/debugPrint/dump/NSLog/Logger changes or secret-bearing logs were added.
Cmux User-Facing Error Privacy ✅ Passed The diff only changes an actor initializer and adds an internal SE-0327 comment; no user-facing error, alert, or recovery text is exposed.
Cmux Full Internationalization ✅ Passed Only a Swift initializer signature and developer-only comment changed; no user-facing text, catalogs, or locale files were touched.
Cmux Swiftui State Layout ✅ Passed Diff only changes a non-SwiftUI actor initializer/comment; no ObservableObject, GeometryReader, lazy-row store refs, or render-time state writes are introduced.
Cmux Architecture Rethink ✅ Passed PASS: The diff only drops convenience from an actor initializer and adds a comment; no timing workaround, extra owner, or split lifecycle is introduced.
Cmux Swift Auxiliary Window Close Shortcuts ✅ Passed PR only changes an actor initializer/comment; no NSWindow/Panel/WindowGroup or cmuxAuxiliaryWindowIdentifiers code is touched.
Cmux Source Artifacts ✅ Passed Only a Swift source file changed; no generated logs, caches, build outputs, or scratch artifacts appear in the diff.
Cmux No Test Or Debug Seam In Production Source ✅ Passed The patch only changes public convenience init() to public init() in a production actor; no #if DEBUG, test-only names, or wrapper accessors were added.
Cmux No Ambient Global State ✅ Passed The PR only changes a public actor initializer and comment; it adds no new top-level API, mutable globals, namespaces, or singletons, so the rule is not violated.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix-actor-convenience-init

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.

@azooz2003-bit

Copy link
Copy Markdown
Collaborator Author

Superseded: an equivalent fix (dropping convenience from the actor initializer) already landed on main, so this is redundant. Closing without merge.

@azooz2003-bit
azooz2003-bit deleted the fix-actor-convenience-init branch July 23, 2026 23:39
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