Skip to content

Fix iOS acceptance attachment using retained VM-service evidence - #9

Merged
Llewellynvdm merged 8 commits into
mainfrom
fix/ios-simulator-main-stability
Oct 11, 2026
Merged

Llewellynvdm merged 8 commits into
mainfrom
fix/ios-simulator-main-stability

Conversation

@Llewellynvdm

@Llewellynvdm Llewellynvdm commented Oct 11, 2026 •

Copy link
Copy Markdown
Member

The post-merge main run failed both iOS runtime jobs even though every package build passed. Retained logs prove both apps announced their Dart VM services, while Flutter's live log discovery continued waiting and never started the test driver.

The runner now builds once, installs and launches that APP paused using its built bundle identity, and finds the authenticated service URL in persistent simulator logs. Discovery requires the exact launched PID, executable and current launch timestamp. Flutter's supported drive --use-existing-app path runs the unchanged six native acceptance tests without relying on live-log startup timing.

Native verification confirmed the new attachment path: the iPhone completed all six tests, then exposed a post-exit process-group cleanup error. The runner now explicitly asks Flutter to stop the app/device readers and does not signal groups after naturally completed commands, including simulator boot and installation. Bounded group termination remains for interrupted or timed-out commands. The subsequent run passed all six iPad tests and shutdown on its first attempt. Its iPhone launched successfully, but a separate 30-second retained-log query cap triggered a premature reboot while the shared startup budget still had time. Log queries now use that remaining shared budget, with no increase to the overall 180-second limit. Regressions cover a slow successful query and exact shared/global deadline enforcement.

Install, launch and discovery share one bounded three-minute startup budget. A single pre-driver startup timeout may reboot once. Command errors and malformed discovery fail immediately. Driver attachment failures and test failures are never retried. Authentication, package versions, application code and release gates remain unchanged.

Local validation: 74 developer-tool tests (including 33 iOS runner regressions) and 64 release-tool tests passed. Independent review passed. Regressions cover missed live announcements, wrong/stale processes, malformed/unsafe URLs, deadlines, natural exit without group signals, aborted-command cleanup, nonzero exits and portable import. Full PR CI passed at commit 32e8991: all seven package builds, desktop/browser acceptance, Android phone/tablet and iPhone/iPad. Both iOS jobs passed on their first attempt. The iPad retained-log query took 43.73 seconds, directly exercising the corrected timeout boundary, then all six tests and shutdown passed. Android phone needed one targeted rerun after an evidenced ADB transport interruption during report collection; its app remained alive and all assertions had completed. The fresh-runner rerun passed. The subsequent main run will also be verified.

Successful PR CI: https://github.com/getbible/app/actions/runs/38155966677

Failure evidence and operating behavior are documented in BUILD_INCIDENT_2026-10.md and TESTING.md. Published alpha 5 testing downloads remain available and unchanged.

Failed main run: https://github.com/getbible/app/actions/runs/38142017784

@Llewellynvdm
Llewellynvdm marked this pull request as ready for review October 11, 2026 16:55
@Llewellynvdm
Llewellynvdm merged commit 87c0b4a into main Oct 11, 2026
39 of 40 checks passed
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