Skip to content

Slow lane: a target boots a real simulator and emulator, and off shuts both down #372

Description

@V3RON

Part of #359.

Scope

After this PR the slow lane proves the warm pool on real devices: a target boots a real iOS simulator and a real Android emulator ahead of any lease, the first lease of each is granted without a boot, and with the pool off a released device of each platform ends shut down. Nothing changes for a user; this is the proof the feature's hardware lines ask for.

In short

The fast lane runs every other task against fake drivers. Two things only a real device can prove: that a target's create-and-boot path works end to end through simctl and the emulator, and that the Android snapshot restore followed by the pool's shutdown leaves an emulator that boots cleanly next time.

flowchart LR
  A[start daemon with targets:<br/>1 iPhone, 1 Android] --> B[wait for both device.ready]
  B --> C[lease each: no booting line]
  C --> D[release both]
  D --> E[restart with enabled: false]
  E --> F[release-> both shutdown]
  F --> G[lease each again: boots cleanly]
Loading

If this goes wrong: the slow lane is red while the fast lane is green, which is exactly the point.

Technical spec

File and line references are to main at 4a52f6e, after #371.

Modules touched

flowchart LR
  classDef new fill:#cfe3f7,stroke:#2f5f8f
  T[e2e/slow-warm-pool.test.ts]:::new --> D[daemon over the unix socket]
  D --> IOS[iOS driver, simctl]
  D --> AND[Android driver, emulator]
Loading
  • New e2e/slow-warm-pool.test.ts, in the shape of e2e/slow-ios-smoke.test.ts: a daemon with a temporary SIMLOCK_HOME, config with one iOS and one Android target of count 1 on the newest installed runtime of each, maxConcurrentBoots: 2. It waits for two device.ready events, leases each by model with --json and asserts no booting progress line, releases both and asserts each is ready again (iOS after a rewarm boot, Android after its restore). It then restarts the daemon with warmPool.enabled: false, leases and releases each, asserts both end shutdown, and leases each once more to prove the next boot is clean.
  • scripts/slow-e2e.sh: the new file joins the lane it runs (no new lane). The test skips with a named reason when either platform has no installed runtime or image, as the existing slow tests do.
  • Docs: docs/internal/ARCHITECTURE.md test-lanes paragraph lists the file.

Contract and event changes

None.

Rules in play

  • testing.md rules 1 and 2: each assertion names the event or output it checks.
  • delivery.md rule on real devices: this runs only through scripts/slow-e2e.sh, never in CI.
  • safety.md rule 1: the test's devices live under the temporary root and are deleted by its teardown.

Tests

  • On a Mac with an iOS runtime and an Android system image: a target of one per platform ends with one ready simulator and one ready emulator before any lease.
  • On a Mac with an iOS runtime and an Android system image: the first lease of each targeted model carries no booting progress.
  • On a Mac with an iOS runtime and an Android system image: with warmPool.enabled: false, a released simulator and a released emulator are both shutdown, and each boots on the next lease.

Done when

  • On a Mac with an iOS runtime and an Android system image: scripts/slow-e2e.sh runs e2e/slow-warm-pool.test.ts green, and its log names the two device.ready events before the first lease.
  • On a machine without one of the platforms, the test skips with a reason naming the missing platform.

Out of scope

  • Any behaviour change. A failure here is a bug in an earlier task, filed as bug:new.

Depends on

Approval

  • Approved for delivery

Written by an agent.

Activity

  1. added
    task:draftScope written; technical spec, approval, or deps missing.
    on Oct 5, 2026
  2. changed the title [-]The warm pool in status, doctor, one event, and the console[/-] [+]Slow lane: a target boots a real simulator and emulator, and off shuts both down[/+] on Oct 5, 2026
  3. github-actions commented on Oct 6, 2026

    @github-actions

    Now task:ready: approved, technical spec present, #371 closed.

  4. removed
    task:draftScope written; technical spec, approval, or deps missing.
    on Oct 6, 2026
  5. self-assigned this
    on Oct 6, 2026
  6. V3RON commented on Oct 10, 2026

    @V3RON
    ContributorAuthor

    Slow lane run: green

    Ran scripts/slow-e2e.sh e2e/slow-warm-pool.test.ts on commit 8d62bbc (branch task/372, PR #419), on a Mac with an iOS runtime and an Android system image.

    • Result: 1 file, 3 tests passed, 0 failed. Duration 957 s. Exit code 0.
    • Test 1 (target of one iPhone and one Android phone): one ready simulator and one ready emulator before any lease. The log shows both device.ready events (boot 38 s and 170 s) before the first lease. 241 s.
    • Test 2 (first lease of each targeted model): no booting progress; after release each device is ready again. 447 s.
    • Test 3 (warmPool.enabled: false): the released simulator and emulator both end shutdown, and each boots on the next lease. 269 s.

    The skip-when-a-platform-is-missing case was not run, because this machine has both platforms.

    Closing: the issue's hardware lines are proven. PR #419 is still a draft and has to be merged on its own.

    Written by an agent.

  7. added a commit that references this issue on Oct 10, 2026
    2d769fa
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

task:readyAn agent may implement it.

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions