Repository navigation
fix(native): let the host settle after simulator boot - #141
Merged
Merged
Conversation
Main ba39899 lost tablet-10 to an XCTest "Timed out while requesting screenshot" driver failure, the third such loss in six complete native runs (also phone-6 on 7045e6d and tablet-8 on 719887a). All three happened in the first scenario. Host telemetry shows the cause window: the 1-minute load peaks at 490-670 three to seven minutes after boot, while the new simulator starts its background services, and falls to about 200 by minutes eight to ten. After each boot the runner now waits at least 5 minutes, then until the 1-minute load is below 250, capped at 10 minutes, and records the wait and samples as hostSettle in the manifest. It only waits; it never fails, retries or changes a flow. Jobs keep their 60-minute limit. Refs #130 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Collaborator
Author
|
@sfl review |
Collaborator
Author
|
@codex review |
Codex Review Summary: ✅ CompletedThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Codex Review: Didn't find any major issues. What shall we delve into next? Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
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". |
15 tasks
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.
Summary
After #138 and #140, one native failure class remains on hosted runners: the XCTest driver loses the device after "Timed out while requesting screenshot" (
device-unreachable). It hit three of the last six complete native runs:7045e6d3;719887a6;ba39899f(run 43106745608), which reset Restore reliable required hosted native qualification #130's restoration streak.All three happened in the first scenario. This PR adds a bounded, recorded settle period after simulator boot, so the first scenario no longer runs inside the post-boot load peak.
Refs #130, which stays open for its restoration streak.
Evidence
Host telemetry (15 s samples, 1-minute load average on the 3-CPU runner, minutes after job start):
ba39899ftablet-10 (failed)7045e6d3phone-6 (failed)The top processes in the peak are the new simulator's own services: widget extensions, intelligence and Fitness daemons, sync agents and
diagnosticd. #138 already removed the app-side trace load.Change
scripts/ios-native/hostSettle.mjs: after boot, wait at least 5 minutes, then until the 1-minute load is below 250, capped at 10 minutes. It only waits: no failure, retry or flow change.scripts/ios-native/run.mjs: run it after each device boot (device groups and the owned modal; the settle route uses the same path) and recordhostSettle(status, wait, final load, up to 64 samples) in the manifest.docs/native-simulator.md: a "Post-boot settle" section.Each native job gets 5–10 minutes longer, well inside its 60-minute limit.
Validation
node --test scripts/ios-native/*.test.mjs: 270 passed, 0 failed (Home). The new tests cover the minimum wait, the falling peak shape from the tablet-10 run, the cap, and unusable load readings.npx eslinton the changed scripts: clean.🤖 Generated with Claude Code