Files
aetherbound-guild/docs/plans/M49_IOS_DEVICE_VALIDATION.md
T

3.9 KiB

M49 iOS Device Validation

Status

  • Plan: M49_IOS_DEVICE_VALIDATION
  • Status: DEFERRED
  • Activated: 2026-09-06
  • Baseline: 1c2ed4a (M48_UI_LAYER_CLEANUP closure)
  • Owner request: make the current playable MVP installable on a real iPhone for visual and touch validation.
  • Deferred on 2026-09-06 by the owner while the responsive UI element slice is prioritized. M49-C remains uninstalled and can resume after M50 handoff.

Objective

Prepare a Godot iOS export path and an Xcode project that can be installed on the owner's device. This plan covers local debug/device validation only; it does not authorize TestFlight, App Store submission or release packaging.

Player-visible stopping point

  • The project has an iOS export preset with a unique owner-approved Bundle ID, Apple Team ID and landscape orientation.
  • Godot exports an Xcode project without changing gameplay, UI, Save/Receipt, content or static-master assets.
  • Xcode can build and install a debug app on the owner's connected iPhone after the owner trusts the developer certificate.
  • A short device checklist covers touch targets, safe area, rotation, text scale and the Market → Readiness → Battle Result loop.

Required owner inputs

  • Apple Developer Team ID (10-character value).
  • Desired unique Bundle ID, for example com.yourdomain.aetherboundguild.
  • iPhone connected to the Mac with Developer Mode enabled and the owner signed into Xcode, if automatic signing is selected.

Ordered steps

M49-A — Export contract and preflight (COMPLETE)

  • Freeze the local-device-only scope and required owner inputs.
  • Confirm macOS/Xcode/Godot prerequisites and absence of an existing iOS preset.

Closure: M49-A closes at source c6cd45b. macOS points to Xcode 26.1.1, Godot 4.6.1 is installed, and the local keychain contains a valid Apple Development identity for Team X75CUV458P plus an Xcode-managed wildcard development profile. No iOS preset existed at baseline.

M49-B — iOS export preset (COMPLETE)

  • Add the owner-provided Team ID, Bundle ID and landscape settings to the Godot iOS preset.
  • Keep generated Xcode output outside Git.

Closure: M49-B closes at the current source after the preset and project settings were verified. The preset exports a project-only Xcode project with automatic signing, arm64, iOS 14.0 and landscape-left/right orientation. The arm64 device configuration builds successfully with the local Apple Development identity. Details are recorded in docs/runtime/M49_IOS_EXPORT_PREFLIGHT.md.

M49-C — Local Xcode device install (IN_PROGRESS)

  • Export the Xcode project, open it in Xcode and build to the connected device.
  • Resolve only signing/device setup issues; do not upload or distribute.

Current state: the Xcode project and signed arm64 app build are ready, but the known iPhone entries are currently unavailable to devicectl. Installation and launch remain pending a connected, unlocked, trusted device with Developer Mode enabled.

M49-D — Device visual/touch handoff

  • Run the first-cycle checklist on device and record viewport/safe-area issues.
  • Update the checkpoint and hand off the repeatable install command.

Acceptance checks

  • iOS preset is present and has non-placeholder Team ID/Bundle ID values.
  • Xcode debug build installs and launches on the owner's device.
  • Landscape orientation, touch targets and the three representative UI pages are verified on device.
  • No TestFlight/App Store or release-ready claim is made.

Frozen scope

  • No gameplay, economy, content, routing, Save/Receipt or art changes.
  • No TestFlight upload, App Store record creation or distribution signing.
  • Keep generated Xcode projects, Archives and provisioning files outside Git.

Commit boundaries

  • M49-A: plan/checkpoint/ledger activation.
  • M49-B: iOS export preset.
  • M49-C: local Xcode install evidence.
  • M49-D: device handoff.