diff --git a/CURRENT_CHECKPOINT.md b/CURRENT_CHECKPOINT.md index 7f6daf94..47ac90ba 100644 --- a/CURRENT_CHECKPOINT.md +++ b/CURRENT_CHECKPOINT.md @@ -13,8 +13,9 @@ ## Current State -- Stage: `M48_UI_LAYER_CLEANUP` (`COMPLETE`) -- Active implementation step: none. M48-D (verification and owner handoff) +- Stage: `M49_IOS_DEVICE_VALIDATION` (`IN_PROGRESS`) +- Active implementation step: M49-A (export contract and preflight). M48-D + (verification and owner handoff) closes at source `0eec3ed`. M48-A closes at source `4be06de`; M48-B closes at source `4782c13`; M48-C closes at source `e920200`. M47-D (playable verification and handoff) @@ -74,9 +75,12 @@ written stopping point; no gameplay, economy, Save, content, packaging or release scope is opened. M48 is the new Owner-requested bounded repair of stacked UI layers and weak button affordances; its active plan is - `docs/plans/M48_UI_LAYER_CLEANUP.md`. M48-A is in progress and no runtime - product code has changed. M48 is complete at its written stopping point; + `docs/plans/M48_UI_LAYER_CLEANUP.md`. M48 is complete at its written stopping point; its visual audit is `docs/runtime/M48_UI_LAYER_CLEANUP_VISUAL_AUDIT.md`. + M49 is the owner-requested local iOS device validation path; its plan is + `docs/plans/M49_IOS_DEVICE_VALIDATION.md`. M49-A is active; local Xcode and + signing preflight is complete, but export settings await owner confirmation + of Team ID and Bundle ID. M47 remains complete; its plan is `docs/plans/M47_UNIFIED_UI_MVP.md`. M47-A closes at source `1d3a526`; M47-B closes at source `57fbd67`; M47-C now owns the three diff --git a/docs/06_DEVELOPMENT_AND_REVIEW.md b/docs/06_DEVELOPMENT_AND_REVIEW.md index bce69c57..ee17a5ae 100644 --- a/docs/06_DEVELOPMENT_AND_REVIEW.md +++ b/docs/06_DEVELOPMENT_AND_REVIEW.md @@ -10,13 +10,17 @@ Complete-game Goal, hand-drawn repair boundary, ordered implementation plan, roa ## Repository Reset And Page Production Baseline -> Status: `COMPLETE / M48_UI_LAYER_CLEANUP` -> Active step: none. M48-D (verification and owner handoff) closes at source +> Status: `IN_PROGRESS / M49_IOS_DEVICE_VALIDATION` +> Active step: M49-A (export contract and preflight). M48-D (verification and owner handoff) closes at source > `0eec3ed`. M48-A closes at source > `4be06de`; M48-B closes at source `4782c13`; M48-C closes at source > `e920200`. M48 is complete at its written stopping point; its visual audit > is `docs/runtime/M48_UI_LAYER_CLEANUP_VISUAL_AUDIT.md`. The bounded repair of > stacked UI layers and weak button affordances is complete. +> M49 is the owner-requested local iOS device validation path; its plan is +> `docs/plans/M49_IOS_DEVICE_VALIDATION.md`. Xcode 26.1.1 and a valid local +> Apple Development identity are present; export settings await owner +> confirmation of Team ID and Bundle ID. > M47 remains complete: M47-A closes at source `1d3a526`; > M47-B closes at source > `57fbd67`; M47-C closes at source `f911095`; M47-D closes at source diff --git a/docs/plans/M49_IOS_DEVICE_VALIDATION.md b/docs/plans/M49_IOS_DEVICE_VALIDATION.md new file mode 100644 index 00000000..47d5d761 --- /dev/null +++ b/docs/plans/M49_IOS_DEVICE_VALIDATION.md @@ -0,0 +1,77 @@ +# M49 iOS Device Validation + +## Status + +- Plan: `M49_IOS_DEVICE_VALIDATION` +- Status: `IN_PROGRESS` +- 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. + +## 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 (`IN_PROGRESS`) + +- Freeze the local-device-only scope and required owner inputs. +- Confirm macOS/Xcode/Godot prerequisites and absence of an existing iOS preset. + +### M49-B — iOS export preset + +- Add the owner-provided Team ID, Bundle ID and landscape settings to the Godot + iOS preset. +- Keep generated Xcode output outside Git. + +### M49-C — Local Xcode device install + +- 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. + +### 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.