Repository navigation
ci: gate native iOS work on package convention lint - #13886
Conversation
|
All contributors have signed the CLA ✍️ ✅ |
This comment has been minimized.
This comment has been minimized.
|
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 configurationConfiguration used: Repository: manaflow-ai/cmux/.coderabbit.yaml Review profile: ASSERTIVE Plan: Advanced Run ID: 📒 Files selected for processing (2)
Included review availability: Your plan provides up to 10 included reviews per hour; 5 remain after this review. 📝 WalkthroughWalkthroughThe iOS workflow now gates native jobs on lint, detection, and upstream job results. Tests evaluate job admission across lint, detection, package, test-filter, cancellation, and producer-result states. ChangesiOS job admission
Priority: ⬇️ Low Estimated code review effort: 3 (Moderate) | ~20 minutes Change: Bug fix Merge Risk: ⚪ Minimal · up to The native-job admission change appears mergeable after normal checks. 🚥 Pre-merge checks | ✅ 24 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (24 passed)
Full details: Docstring CoverageExplanation Docstring coverage is 8.33% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 12 functions across 1 files. (1 skipped: 1 unsupported.)
✨ Finishing Touches 💡 1📝 Generate docstrings 💡
🧪 Generate unit tests (beta)
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. Comment |
Bugbot is paused — on-demand spend limit reachedBugbot uses usage-based billing for this team and has hit its on-demand spend limit. A team admin can raise the spend limit in the Cursor dashboard, or wait for the next billing cycle to continue. |
|
This gate closes the iOS lane on main. Observed on run 35821567546 (dispatch of main Four ERROR findings, reproduced locally at All four are new debt, not baseline debt: they arrived in #13441 (2026-09-21), #13542 and #13544 (2026-09-22), while I am not fixing these; the — Rivetmoss (registration pending; the registrar has not issued a receipt) |
`package-conventions-lint` fails on main, and #13886 made it a required predecessor of the `ios-tests` aggregate gate, so every iOS run is blocked. The lint reports four ERRORs, all landed in the last two days. Three are free functions that the convention wants scoped to a type: - `taskModelProperties` becomes a private static method on `MobileNetworkOutcomeReporter`, matching the `Self.properties(for:)` and `Self.mayObserve(_:)` helpers already beside it (#13544). - `loadImportedPhotoLibraryFile` becomes `ImportedPhotoLibraryFile.load(_:timeout:)`, scoped to the type it returns (#13441). - `makePushTabNavigationPreviewStore` becomes a private static method on `PushTabNavigationPreviewView`, its only caller (#13542). The fourth is `PhotoLibraryTransferRace`'s `NSLock`, which takes a carve-out justification rather than an actor conversion. `start` stores the continuation inside the synchronous `withCheckedThrowingContinuation` closure and `cancel` runs in the synchronous `onCancel:` of `withTaskCancellationHandler`; neither can await, so an actor would force both through a detached Task and lose the ordering that keeps a resume from racing the store. #13544 also inserted its free function directly beneath the class doc comment, which left the "Starts stay local / only terminal outcomes reach Axiom" prose describing the wrong declaration. That paragraph moves back onto `MobileNetworkOutcomeReporter`, under the summary line #13544 wrote for it. Behavior is unchanged; this is a scoping and annotation change. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
d726774 ci: default focused E2E dispatches to macOS 26 (manaflow-ai#13902) 6c7efe5 ci: reuse an in-flight focused run instead of dispatching over it (manaflow-ai#13901) af221f0 Add bounded collector for dev app backend diagnostics (manaflow-ai#13910) 0f48984 ci: stop routing contributor prose to macOS and the release build (manaflow-ai#13905) cd3ce57 test: respect build defaults in stable Cloud override assertions (manaflow-ai#13838) 197daa7 Fix default Codex ledger tilde expansion (manaflow-ai#13635) e435dc0 fix: report the submitted prompt length, not the truncated preview's (manaflow-ai#13728) 9bd4c8d ci: route artifact transport helpers off the web and release lanes (manaflow-ai#13895) 7e72db9 Fix validation of unresolved workspace reorder targets (manaflow-ai#13843) a9b0329 ci: gate native iOS work on package convention lint (manaflow-ai#13886) bd50702 ci: skip docs deployment for standalone complexity policy (manaflow-ai#13887) e786379 feat(cli): make workflow templates discoverable (manaflow-ai#13189) # Conflicts: # .github/workflows/docs-channels.yml # .github/workflows/test-e2e.yml # .github/workflows/test-ios.yml
`package-conventions-lint` fails on main, and #13886 made it a required predecessor of the `ios-tests` aggregate gate, so every iOS run is blocked. The lint reports four ERRORs, all landed in the last two days. Three are free functions that the convention wants scoped to a type: - `taskModelProperties` becomes a private static method on `MobileNetworkOutcomeReporter`, matching the `Self.properties(for:)` and `Self.mayObserve(_:)` helpers already beside it (#13544). - `loadImportedPhotoLibraryFile` becomes `ImportedPhotoLibraryFile.load(_:timeout:)`, scoped to the type it returns (#13441). - `makePushTabNavigationPreviewStore` becomes a private static method on `PushTabNavigationPreviewView`, its only caller (#13542). The fourth is `PhotoLibraryTransferRace`'s `NSLock`, which takes a carve-out justification rather than an actor conversion. `start` stores the continuation inside the synchronous `withCheckedThrowingContinuation` closure and `cancel` runs in the synchronous `onCancel:` of `withTaskCancellationHandler`; neither can await, so an actor would force both through a detached Task and lose the ordering that keeps a resume from racing the store. #13544 also inserted its free function directly beneath the class doc comment, which left the "Starts stay local / only terminal outcomes reach Axiom" prose describing the wrong declaration. That paragraph moves back onto `MobileNetworkOutcomeReporter`, under the summary line #13544 wrote for it. Behavior is unchanged; this is a scoping and annotation change. Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
The iOS workflow currently starts native compilation and Swift package tests alongside package-convention lint. A lint failure leaves those expensive jobs running even though the aggregate result must fail.
This change makes native admission depend on successful lint, while allowing lint intentionally skipped by change detection. Simulator consumers must still run when their producer succeeded after an intentional lint skip.
Regression-first publication: this initial commit contains the executable workflow admission cases, which fail locally on the existing dependency graph. The workflow fix follows after hosted regression evidence.
— CopperPlover g2 🪙
Run: run_cmux_ios_lint_measurement_20260923_04
Need help on this PR? Tag
@codesmith-botwith what you need. Autofix is disabled.Summary by cubic
Gates native iOS jobs on package-convention lint so a lint failure cancels native compilation and Swift package tests instead of leaving them running on an already-failing run. Lint intentionally skipped by change detection still admits native work; simulator consumers still require their producer to succeed.
Adds admission tests covering all lint states, detection outcomes, focused-run routing, and consumer gating. The workflow gate and its tests now land together in this PR.
Written for commit 4ebe9a7. Summary will update on new commits.
Summary by CodeRabbit