Skip to content

Parallelize minimum Xcode 16 CI - #85

Merged
jacklv-coder merged 7 commits into
mainfrom
codex/parallelize-xcode16-ci
Aug 3, 2026
Merged

Parallelize minimum Xcode 16 CI#85
jacklv-coder merged 7 commits into
mainfrom
codex/parallelize-xcode16-ci

Conversation

@jacklv-coder

@jacklv-coder jacklv-coder commented Aug 3, 2026

Copy link
Copy Markdown
Owner

What changed

  • Split the minimum-Xcode 16 gate into one native-runtime job and five independent UI matrix lanes.
  • Keep the public-SHA external consumer, Quick Start iPhone/iPad, and Host App iPhone/iPad coverage unchanged.
  • Centralize the pinned Xcode 16.0, iOS 18.0 runtime, RootFS, and XcodeGen setup in a repository-owned composite action.
  • Validate the real RootFS install before the native lane downloads the multi-gigabyte Simulator runtime, preserving installer disk headroom; UI lanes retain the shared one-step setup.
  • Keep runners isolated, set fail-fast: false, and give every UI lane a collision-free diagnostic artifact.
  • Recover a runner-created Simulator that explicitly disappears from Xcode destinations by recreating the same runtime/device type and retrying once; caller-owned devices and assertion failures remain non-retryable.
  • Stabilize Host App folder navigation and the iOS document picker, including late Browse state, restored Host folders, and an iOS 18.0 selection tap that can be synthesized without dismissing the picker.
  • Stop the system-file round trip immediately when picker navigation or selection fails instead of cascading into secondary taps.
  • Retry the uniquely marked PTY size probe once when its first synthesized terminal command is dropped; keep the final size assertion and timeout fail-closed.
  • Update release-compliance coverage, generated composition evidence, and Chinese/English testing and changelog documentation.

Why

PR #84's serial minimum-Xcode job took about 61 minutes because all UI suites ran one after another. The matrix lets those independent suites run concurrently while preserving the same compatibility and supply-chain checks.

Successive CI runs exposed concrete Xcode 16 runner cases: an off-screen Host folder row, a runner-owned Simulator disappearing from destinations, the document picker restoring Recents or the Host folder asynchronously, a reported file-cell tap that did not complete selection, a dropped first synthesized terminal command, and a RootFS install losing disk headroom after the Simulator runtime download. The implementation now handles only those observable infrastructure states with bounded retries and keeps product assertions fail-closed.

Validation

  • swift test — 200 tests, 1 expected skip, 0 failures (earlier unchanged product-code validation)
  • ruby Tests/Scripts/ReleaseComplianceTests.rb — 71 runs, 635 assertions, 0 failures
  • Tests/Scripts/RuntimeSmokeScriptTests.sh
  • Targeted testSystemFileImportAndShareExportRoundTrip Host App iPhone UI smoke on Xcode 26.6 — passed in 129.462 seconds
  • Targeted testSystemFileImportAndShareExportRoundTrip Host App iPad UI smoke on Xcode 26.6 — passed in 133.961 seconds
  • Full testPTYLifecycleAndShutdown Host App iPhone UI smoke on Xcode 26.6 — passed in 111.363 seconds
  • ./Scripts/check-docs.sh — 22 Chinese primaries and 22 English mirrors
  • ruby Scripts/generate-release-compliance.rb --check
  • Swift/YAML/Bash syntax checks and git diff --check
  • Run 30856167344 passed six of seven jobs and isolated the remaining Host App iPhone failure to the first synthesized PTY size command; all later PTY resize, reopen, Files preview, and shutdown assertions passed
  • Codex CR found one P2 in the initial destination-error wording; it was fixed with a matching simulated Xcode failure, and the complete follow-up CR after the PTY fix reported no actionable correctness issues

Risk and release boundary

This changes CI orchestration and UI-test synchronization only; it does not change PocketRoot runtime behavior, public API, RootFS bytes, or dependency pins. It does not authorize a v0.2.0 tag, binary release, RootFS distribution, TestFlight, or App Store distribution. Physical iPad, real storage pressure, jetsam, and power-cut gates remain open as documented.

@jacklv-coder
jacklv-coder marked this pull request as ready for review August 3, 2026 23:23
@jacklv-coder
jacklv-coder merged commit 35d3893 into main Aug 3, 2026
7 checks passed
@jacklv-coder
jacklv-coder deleted the codex/parallelize-xcode16-ci branch August 3, 2026 23:31
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