{
  "slug": "serve-sim-starts-appium-ios-sessions-14ac44aad53d",
  "title": "serve-sim starts Appium iOS sessions",
  "tools": [
    "eas"
  ],
  "tags": [
    "agent"
  ],
  "introduced_at": "2026-10-20T19:19:54.000Z",
  "announced_at": "2026-10-20T19:19:54.000Z",
  "effective_at": null,
  "date_basis": "source-publication",
  "status": "unknown",
  "how": {
    "incantation": "When preparing an Appium iOS session on macOS, configure `eas/start_appium_remote_session` to boot the Simulator and optionally install and launch the app; wait for session startup before reporting it. Appium handles subsequent app actions.",
    "examples": [
      "- uses: eas/start_appium_remote_session\n  with:\n    boot_simulator: true\n    device_identifier: <simulator-identifier>\n    install_app_path: <app-path>\n    launch_app_identifier: <app-bundle-identifier>\n    launch_args: <launch-arguments>\n    open_url: <url>"
    ],
    "gotchas": [
      "Version: v25.3.0",
      "boot_simulator: Whether to boot the iOS Simulator; the source passes this input to iOS session startup.",
      "device_identifier: Simulator device identifier supplied to iOS session startup.",
      "install_app_path: App path supplied for installation during iOS session startup.",
      "launch_app_identifier: App identifier supplied for app launch during iOS session startup.",
      "launch_args: Arguments supplied when launching the app.",
      "open_url: URL supplied to iOS session startup to open.",
      "Prerequisite: On macOS, the function selects the Xcode developer directory before starting the Appium session.",
      "Prerequisite: The release note says to release a compatible `serve-sim`, deploy the worker, and then enable the new workflow inputs.",
      "Select Xcode and the Simulator once.",
      "Check the egress guard before install or launch.",
      "Existing prepared workflows and Android retain their current path.",
      "Stop controller setup if Simulator startup fails; drain owned commands and preserve the first error.",
      "Surviving callers retry a canceled shared FFmpeg install together."
    ]
  },
  "why_it_matters": "Prepare an Appium iOS session with the Simulator and app startup workflow.",
  "before": "Existing prepared workflows used their current path; the change adds Simulator startup for Appium sessions.",
  "sources": [
    "https://github.com/expo/eas-cli/releases/tag/v25.3.0",
    "https://github.com/expo/eas-cli/pull/4603",
    "https://github.com/expo/eas-cli/blob/v25.3.0/packages/build-tools/src/steps/functions/startAppiumRemoteSession.ts"
  ],
  "rank": 0.92024,
  "judge": {
    "publish": true,
    "judge_model": "codex-cli/gpt-6-luna+typesafe/jev-1.13.0",
    "prompt_version": "extract-v7+enrich-v2+judge-v2x3-rejudge+jev-publish-v1"
  },
  "review_state": "approved",
  "provenance": {
    "run_id": "daily-20261026-04",
    "verdict_id": "daily-20261026-04:daily-20261026-04-3d09e34c5f463ba9-2:rescue",
    "evidence_hash": "bf7b882d729d10fd4ab069cd48c01f22fe3fefafb1df0d5f58c7f28572ffc84a"
  },
  "review": {
    "draft_hash": "e7665a1a04933a5174866bcff4363df3bb6301a21afb2b3dc16b10ee3f52cb99",
    "reviewer": "publication-gate",
    "reviewed_at": "2026-10-20T19:19:54.000Z",
    "decision": "daily-20261026-04:rescue",
    "reason": "Rescue path: first rejected only because the extracted card lacked usage; judged again on the enriched card, 2 of 3 judge runs approved with p_yes >= 0.9 (mean 0.92 >= 0.9; 2 needed) and Jev gave 0.68 (>= 0.6 needed)."
  }
}
