Repository navigation
Conversation
The iOS simulator scripts now take a Simlock UDID (--simulator-id, IOS_SIMULATOR_ID, --iphone-sim/--ipad-sim, --udid), route every simctl call for it through `simlock simctl`, and exit with the lease steps when none is given, instead of creating, booting or picking a default-set simulator. ios/scripts/reload.sh builds with -DVTSimulatorSetLocation on Xcode 27+, or for a generic simulator on older Xcode, then installs with simlock simctl. GitHub Actions has no Simlock, so GITHUB_ACTIONS=true keeps the old named and per-tag simulators. scripts/simlock-udid.sh maps a T3 device_open id (the lease id) to its UDID.
Owner
Author
|
Closed: Ivrix is out of scope for the Simlock change. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What changed
The iOS simulator scripts now use a simulator leased from Simlock (T3 Code
device_openon the "Simlock" host). They no longer create, boot or pick a simulator from Xcode's default device set.scripts/lib/ios-simlock.shholds the shared helpers. It checks that a UDID is a booted Simlock simulator (read-onlyxcrun simctl --setlisting), routes simctl throughsimlock simctl, picks the xcodebuild destination, prints the lease steps, and maps a lease to a UDID.scripts/simlock-udid.sh <device id>turns the T3 device id (the Simlock lease id) into the simulator UDID, throughsimlock --gateway status --jsonandsimlock list.ios/scripts/reload.sh: the simulator leg requires--simulator-id <simlock-udid>(orIOS_SIMULATOR_ID) and exits 2 with the lease steps before any build.--device-onlystill skips the simulator leg. On Xcode 27+ it builds with-DVTSimulatorSetLocationandid=<udid>. On older Xcode it buildsgeneric/platform=iOS SimulatorwithARCHS=$(uname -m). Install, terminate and launch go throughsimlock simctl, and there is no boot.scripts/mobile-dev-launch.sh: requires a Simlock--simulator-id(orIOS_SIMULATOR_ID) after the--helpand--check-auth-contractexits and before any Mac or ticket work. Terminate and launch go throughsimlock simctl, andSIMCTL_CHILD_*still reaches the app becausesimlock simctlinherits env and stdio.scripts/lib/mobile-attach.sh: the seed (spawn defaults write) andget_app_containercalls usesimlock simctlfor a Simlock UDID.scripts/ios-sim-install.shandscripts/dev-setup.shtake--simulator-id.scripts/mobile-stability-soak.shrequires Simlock--iphone-sim/--ipad-simand no longer auto-detects booted simulators.ios/scripts/toast-debug.shrequires a Simlock--udid.mobile-soak.py,irx-soak.pyandlistauth-gates.pyusesimlock simctlfor a Simlock UDID. The soak's process matching also finds apps under Simlock's device set.scripts/install-iphone-queue-agent.shalso installslib/ios-simlock.sh, because the launcher now sources it.ios/AGENTS.mdhas a new "Simulators come from Simlock" section and updated simulator-leg rules. RootCLAUDE.mdpoints to it, anddocs/irx-soak-runbook.mdis updated.GitHub Actions has no Simlock. With
GITHUB_ACTIONS=true, the old behaviour stays:--simulator <name>, the per-tagcmux-dev-<slug>simulator, the boot, and plainxcrun simctl. Soios-streamed-validate.ymlruns as before.Verified
bash -npasses on every changed shell script, and the Python files parse.node --test scripts/lib/mobile-attach.test.mjs: 47 pass, 2 fail, with and withoutGITHUB_ACTIONS=true. The 2 failures ("dogfood readiness writes a secret-free identity and latency receipt", "physical-device mint waits for asynchronous Iroh publication") fail the same way on the base commit. The launcher tests now run against a fake Simlock device set, and one new test checks that a launch without a Simlock UDID prints the lease steps and makes no simctl call.tests/test_iphone_install_queue.shandtests/test_mobile_readiness_receipt.shpass.tests/test_mobile_stability_soak_attach_contract.pyandtests/test_mobile_attach_prefers_iroh.pyfail the same way on the base commit.xcrun,simlockandxcodebuildand a fake device set:reload.sh,mobile-dev-launch.sh,dev-setup.sh,ios-sim-install.sh,mobile-stability-soak.shandtoast-debug.shexit 2 with the lease steps when no UDID is given. They refuse a default-set UDID and report a Simlock UDID that is not booted.ios-sim-install.shandtoast-debug.shcallsimlock simctl installandsimlock simctl spawnfor a booted one.-DVTSimulatorSetLocationon Xcode 27 and generic plusARCHSon Xcode 26.simlock-udid.shreports a missing lease against the real gateway.dev-setup.shsupport, the older-Xcode arch, a silent exit insimlock-udid.sh, and doc accuracy.Not run
Known gaps, not converted
scripts/run-iroh-release-gate.sh,scripts/run-iroh-direct-transport-gate.sh,ios/scripts/appstore-shots.shandios/fastlanestill create or erase their own default-set simulators. The release gates now stop atmobile-dev-launch.shoutside GitHub Actions.ios/scripts/appstore-shots-real.sh,ios/scripts/capture-streamed.py,idb,axeandxcodebuildmcpreach only the default device set. The stability soak's UI checks fail wherexcodebuildmcpis installed, and the soak needs two leases at once.scripts/ios-sim-install.sh(cmuxterm-hqreload-cloud-ios.sh) must now pass--simulator-idoutside GitHub Actions.