Skip to content

Unbreak workflow-guard-tests: fake iOS archives need dSYMs and Symbols - #9279

Merged
azooz2003-bit merged 1 commit into
mainfrom
fix-appstore-guard-dsym-fixture
Jul 31, 2026
Merged

azooz2003-bit merged 1 commit into
mainfrom
fix-appstore-guard-dsym-fixture

Conversation

@azooz2003-bit

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

Copy link
Copy Markdown
Collaborator

workflow-guard-tests is red on every PR gate since #9236: upload-testflight.sh now refuses archives without dSYM bundles and IPAs without Symbols/*.symbols, but the App Store lane identity guard's fake xcodebuild/archive fixtures were never taught about either gate ("FAIL: beta export-only lane succeeds with fake Apple tools"). Because the guard is the cheap CI layer, its failure also short-circuits tests, release-build, and the other required checks for every PR (observed identically on unrelated branches, e.g. https://github.com/manaflow-ai/cmux/actions/runs/30608830115).

Fix: the fake archive now contains dSYMs/cmux.app.dSYM and the fake export writes Symbols/cmux.symbols into the IPA, so the guard exercises the new symbolication gates instead of tripping them. Test-fixture-only change; python3 tests/test_ios_appstore_lane_identity.py goes from the CI failure to "all ios appstore lane identity tests passed" locally.

🤖 Generated with Claude Code


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.


Summary by cubic

Fixes workflow-guard-tests by updating the App Store lane identity guard’s fake iOS archive/export to include required dSYMs and Symbols, so upload-testflight.sh passes the new gates. Test-fixture-only change that restores the CI gate and downstream checks.

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

Review in cubic

Summary by CodeRabbit

  • Tests
    • Updated iOS app store upload test fixtures to include debug symbols in archives and exported app packages.
    • Improved test coverage for symbol upload requirements.

PR #9236 made upload-testflight.sh refuse archives without dSYM bundles
and final IPAs without Symbols/*.symbols, but did not update the
App Store lane identity guard's fake xcodebuild and archive fixtures.
Since then workflow-guard-tests fails for every PR gate run, which also
short-circuits the downstream required checks.

Give the fake archive a dSYMs/cmux.app.dSYM bundle and the fake export
a Symbols/cmux.symbols entry inside the IPA so the guard exercises the
new gates instead of tripping them.

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

coderabbitai Bot commented Jul 31, 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 Plus

Run ID: 6fefe806-5457-4a6a-8b8b-760532b4bdaf

📥 Commits

Reviewing files that changed from the base of the PR and between 541fe7f and b3ea503.

📒 Files selected for processing (1)
  • tests/test_ios_appstore_lane_identity.py

📝 Walkthrough

Walkthrough

The test fixtures now create dSYM bundles in fake archives and package Symbols/cmux.symbols in exported IPAs.

Changes

iOS upload fixtures

Layer / File(s) Summary
Add required symbol artifacts
tests/test_ios_appstore_lane_identity.py
Fake archive fixtures create dSYM bundles. Fake IPA exports package Symbols/cmux.symbols with the app payload.

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

Possibly related PRs

  • manaflow-ai/cmux#9236: The related iOS upload script validates the dSYM and Symbols/*.symbols artifacts added to these fixtures.
🚥 Pre-merge checks | ✅ 25
✅ Passed checks (25 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly identifies the main change: updating fake iOS archives and Symbols fixtures to restore workflow guard tests.
Description check ✅ Passed The description explains the cause, fix, scope, and test result; missing checklist details are non-critical for this fixture-only change.
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 diff changes only tests/test_ios_appstore_lane_identity.py, a Python fixture; it introduces no production Swift changes or actor-isolation risks.
Cmux Swift Blocking Runtime ✅ Passed The commit changes only tests/test_ios_appstore_lane_identity.py. It adds deterministic archive and IPA fixture files, with no production Swift or blocking runtime primitive changes.
Cmux Browser Automation Off-Main ✅ Passed The commit only changes Python iOS test fixtures; it does not modify browser socket automation, the scoped Swift files, routing, WebKit/AppKit access, or policy tests.
Cmux Expensive Synchronous Load ✅ Passed The commit changes only tests/test_ios_appstore_lane_identity.py, adding fake dSYM and Symbols fixtures; it adds no production Swift code or synchronous agent-history load.
Cmux Cache Substitution Correctness ✅ Passed The patch changes only tests/test_ios_appstore_lane_identity.py, a Python test fixture; it contains no production Swift, TypeScript, or JavaScript changes.
Cmux No Hacky Sleeps ✅ Passed The commit changes only the Python test fixture; it adds deterministic dSYM and Symbols files and introduces no production runtime delays or sleeps.
Cmux Algorithmic Complexity ✅ Passed The diff only changes tests/test_ios_appstore_lane_identity.py, adding fixed fixture directories and ZIP entries; the rule explicitly passes test-only scaffolding.
Cmux Swift Concurrency ✅ Passed The pull request changes only tests/test_ios_appstore_lane_identity.py. It adds Python fixture files and introduces no Swift code or concurrency patterns.
Cmux Swift @Concurrent ✅ Passed The diff changes only the Python test fixture; it adds no Swift code, async functions, call sites, or concurrency annotations covered by this rule.
Cmux Swift Package Boundaries ✅ Passed The diff changes only tests/test_ios_appstore_lane_identity.py, a Python test fixture; it contains no production Swift or app-target feature logic.
Cmux Swiftpm Lockfiles ✅ Passed The PR diff only modifies tests/test_ios_appstore_lane_identity.py; it changes no SwiftPM package, Package.resolved, Xcode project, .gitignore, workflow, or dependency files.
Cmux Swift Logging ✅ Passed The commit changes only tests/test_ios_appstore_lane_identity.py; it adds no production Swift code or logging statements.
Cmux User-Facing Error Privacy ✅ Passed The commit changes only tests/test_ios_appstore_lane_identity.py; added dSYM and Symbols fixture setup plus developer-only comments, which the rule explicitly allows.
Cmux Full Internationalization ✅ Passed The PR changes only tests/test_ios_appstore_lane_identity.py and adds fake dSYM/Symbol fixtures; the rule explicitly allows tests and fixtures, with no production user-facing text.
Cmux Swiftui State Layout ✅ Passed The PR changes only Python test fixtures in tests/test_ios_appstore_lane_identity.py; it introduces no SwiftUI state, layout, list, or render-time mutation patterns.
Cmux Architecture Rethink ✅ Passed The commit changes only a Python test fixture. It adds dSYM and Symbols files, with no Swift changes or architectural-risk patterns.
Cmux Swift Auxiliary Window Close Shortcuts ✅ Passed The PR changes only tests/test_ios_appstore_lane_identity.py. It adds Python-only archive and IPA fixtures, with no Swift or user-visible window changes.
Cmux Source Artifacts ✅ Passed Only tests/test_ios_appstore_lane_identity.py changed; it adds dSYM and Symbols files in TemporaryDirectory-based fake fixtures for a deliberate test-system reason, not checked-in artifacts.
Cmux No Test Or Debug Seam In Production Source ✅ Passed The PR changes only tests/test_ios_appstore_lane_identity.py; it adds no Swift file or production Sources path covered by this check.
Cmux No Ambient Global State ✅ Passed The commit changes only tests/test_ios_appstore_lane_identity.py (+10 lines); it contains no production Swift changes, so this check is not applicable.
✨ 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-appstore-guard-dsym-fixture

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.

@lawrencecchen

Copy link
Copy Markdown
Contributor

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Delightful!

Reviewed commit: b3ea50353d

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

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.

2 participants