Skip to content

refactor: rename ios-runner -> apple-runner (#981)#996

Merged
thymikee merged 1 commit into
mainfrom
phase3-cosmetic-apple-runner-rename
Jul 1, 2026
Merged

refactor: rename ios-runner -> apple-runner (#981)#996
thymikee merged 1 commit into
mainfrom
phase3-cosmetic-apple-runner-rename

Conversation

@thymikee

@thymikee thymikee commented Jul 1, 2026

Copy link
Copy Markdown
Member

Closes #981. Part of #972 (Phase 3 — Apple PlatformPlugin).

Finishes the cosmetic ios-runnerapple-runner rename now that the top-level XCTest runner project is the OS-agnostic Apple engine (drives iOS/iPadOS/tvOS/macOS/visionOS from one Xcode project). Cosmetic only — no behavior change.

What was renamed

Directory

  • git mv ios-runner/ → apple-runner/ (keeps AgentDeviceRunner/, README.md, RUNNER_PROTOCOL.md) — detected as pure renames.

Repo project-path consumers (<root>/ios-runner/AgentDeviceRunnerapple-runner/...)

  • scripts/build-xcuitest-apple.sh (PROJECT_PATH), package.json files globs, .fallowrc.json, scripts/write-xcuitest-cache-metadata.mjs
  • src/platforms/apple/core/runner/runner-xctestrun.ts (project path + source-fingerprint root)
  • src/recording/overlay.ts + src/recording/__tests__/recording-scripts.test.ts
  • src/daemon/client/daemon-client-timeout.ts (xcodebuild kill pattern)
  • .github/actions/setup-apple-replay/action.yml (hashFiles glob), .github/workflows/ci.yml (Swift compat scan dir), AGENTS.md

Runtime home cache/derived/lease dir default (~/.agent-device/ios-runner~/.agent-device/apple-runner)

  • build-xcuitest-apple.sh derived paths, scripts/package-ios-simulator-runner.sh + scripts/clean-xcuitest-derived.mjs defaults
  • runner-xctestrun.ts RUNNER_DERIVED_ROOT, runner-lease.ts leases dir, runner-contract.ts recovery hint
  • Docs: src/cli/parser/cli-help.ts, website/docs/docs/commands.md
  • Tests asserting the derived/cache regexes in runner-client.test.ts

OS-agnostic runner symbols (+ all call sites, type aliases, test mocks)

  • runIosRunnerCommandrunAppleRunnerCommand
  • prewarmIosRunnerCacheprewarmAppleRunnerCache
  • createIosRunnerCachePrewarmOnColdBootcreateAppleRunnerCachePrewarmOnColdBoot
  • createIosRunnerCacheColdBootPrewarmForOpencreateAppleRunnerCacheColdBootPrewarmForOpen

Intentionally left as ios-runner (out of scope / would change behavior)

  • prepare ios-runner CLI subcommand — user-facing command name; renaming it is a behavior change, not in scope.
  • AGENT_DEVICE_IOS_RUNNER_* env var names and the .tmp/ios-runner-derived CI values — kept per issue guidance (renaming would require touching all workflows). The env var stays consistent between build script and runtime, so overrides still resolve.
  • ios-runner-prebuilt cache-key-prefix, ci.yml job id ios-runner-swift-compat, ADR/doc filenames (docs/adr/0005-ios-runner-*, docs/ios-runner-protocol-optimizations.md).
  • agent-device-ios-runner-<version> release artifact basenames in package-ios-simulator-runner.sh — release artifact naming consumed by the release workflow; renaming is a separate, riskier change.
  • Arbitrary test mkdtemp prefixes and skillgym scenario ids containing ios-runner (cosmetic labels, no coupling).

⚠️ Release-adjacent — please review

This touches build/cache/derived paths:

  • Cache-dir migration: the default runtime cache/derived/lease dir moves from ~/.agent-device/ios-runner/ to ~/.agent-device/apple-runner/. Existing local caches at the old path are orphaned (not deleted); the runner rebuilds into the new path on first use. CI is unaffected because it overrides the path via AGENT_DEVICE_IOS_RUNNER_DERIVED_PATH (value unchanged).
  • Cache-key change: setup-apple-replay hashFiles('apple-runner/**', ...) and the source fingerprint change input strings, so prebuilt-runner caches will miss once and repopulate after merge (expected for a dir rename).
  • Build/runtime fingerprint (write-xcuitest-cache-metadata.mjsrunner-xctestrun.ts) were updated together to stay consistent.

Verification

  • tsc -p tsconfig.json
  • oxlint . --deny-warnings
  • oxfmt --write && --check src test
  • scripts/layering/check.ts
  • rslib build
  • vitest run --project unit — only the 3 known flaky fillAndroid android tests failed under CPU contention; they pass 92/92 in isolation and are unrelated to this rename ✅
  • fallow audit --base origin/main — no new findings ✅

DO NOT MERGE without maintainer review of the cache-dir migration.

Finish the cosmetic ios-runner -> apple-runner rename now that the
top-level XCTest runner is the OS-agnostic Apple engine
(iOS/iPadOS/tvOS/macOS/visionOS from one Xcode project).

Cosmetic only, no behavior change:
- git mv ios-runner/ -> apple-runner/ (AgentDeviceRunner, README, RUNNER_PROTOCOL)
- Update repo project-path consumers: build-xcuitest-apple.sh, package.json
  files globs, .fallowrc.json, write-xcuitest-cache-metadata.mjs,
  runner-xctestrun.ts fingerprint/project paths, recording overlay + test,
  daemon-client-timeout kill pattern, setup-apple-replay hashFiles glob,
  ci.yml swift-compat scan, AGENTS.md.
- Rename runtime home cache/derived/lease dir default
  ~/.agent-device/ios-runner -> ~/.agent-device/apple-runner (build script,
  package/clean scripts, runner-xctestrun RUNNER_DERIVED_ROOT, runner-lease,
  runner-contract hint, cli-help/commands.md docs) and the tests asserting it.
- Rename OS-agnostic runner symbols: runIosRunnerCommand ->
  runAppleRunnerCommand, prewarmIosRunnerCache -> prewarmAppleRunnerCache,
  createIosRunnerCachePrewarmOnColdBoot / createIosRunnerCacheColdBootPrewarmForOpen
  -> createAppleRunner* (+ call sites, type aliases, test mocks).

Intentionally left as ios-runner (out of scope / would change behavior):
- prepare ios-runner CLI subcommand (user-facing command name)
- AGENT_DEVICE_IOS_RUNNER_* env var names and .tmp/ios-runner-derived CI values
- ios-runner-prebuilt cache-key-prefix, ci.yml job id, workflow/ADR filenames
- agent-device-ios-runner-<version> release artifact basenames

Part of #972 (Phase 3 - Apple PlatformPlugin).
@github-actions

github-actions Bot commented Jul 1, 2026

Copy link
Copy Markdown
PR Preview Action v1.8.1
Preview removed because the pull request was closed.
2026-07-01 12:25 UTC

@github-actions

github-actions Bot commented Jul 1, 2026

Copy link
Copy Markdown

Size Report

Metric Base Current Diff
JS raw 1.5 MB 1.4 MB -17.0 kB
JS gzip 469.8 kB 464.7 kB -5.2 kB
npm tarball 572.0 kB 564.3 kB -7.7 kB
npm unpacked 2.0 MB 2.0 MB -27.9 kB

Startup median (7 runs, lower is better):

Scenario Base Current Diff
CLI --version 29.3 ms 29.3 ms -0.0 ms
CLI --help 50.4 ms 51.7 ms +1.2 ms

Top changed chunks:

Chunk Raw diff Gzip diff
dist/src/9722.js -10.0 kB -3.2 kB
dist/src/session.js -2.5 kB -634 B
dist/src/cli-help.js -2.1 kB -477 B
dist/src/2948.js -1.6 kB -476 B
dist/src/1986.js -146 B -17 B

@thymikee

thymikee commented Jul 1, 2026

Copy link
Copy Markdown
Member Author

Reviewed after checks completed: no actionable findings. The rename is mergeable and CI is green. The release-adjacent cache-dir migration is called out in the PR body; the remaining stale hash inputs I noticed in setup-apple-replay are pre-existing cache-key debt, not a blocker for this rename.

@thymikee thymikee added the ready-for-human Valid work that needs human implementation, judgment, or maintainer merge label Jul 1, 2026
@thymikee thymikee merged commit a3e9675 into main Jul 1, 2026
22 checks passed
@thymikee thymikee deleted the phase3-cosmetic-apple-runner-rename branch July 1, 2026 12:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ready-for-human Valid work that needs human implementation, judgment, or maintainer merge

Projects

None yet

Development

Successfully merging this pull request may close these issues.

cosmetic: rename ios-runner -> apple-runner

1 participant