← back to Govarbitrage
apps/mobile/device-proof-evidence/DDI-UNBLOCK-CHECKLIST.md
30 lines
# DDI Unblock Checklist — clear CoreDeviceError 12040 for the 2.1 recording (TK-10279)
**Device:** iPhone 17 Pro Max (iPhone18,2), iOS 26.6.1. Hardware identifiers are intentionally kept out of git.
**Tooling verified (this Mac):** Xcode 26.6 · build **17F113** · devicectl 518.33 — DDI build **matches** iOS 26.6.x, and the device shows **`connected`** in `devicectl list devices`.
## What the error means
`CoreDeviceError 12040 — "developer disk image could not be mounted"` with matching Xcode ≠ a version problem. On iOS 17+/26 the DDI is personalized + mounted **on-device at connect time**, which requires the phone **unlocked, trusted, and with Developer Mode ON**. 12040 here = an on-device gate, not a Mac fix.
## Do these on the iPhone, in order (Steve — on-device)
1. **Unlock the phone and keep it unlocked** during the whole capture (auto-lock fights the mount).
2. **Trust this Mac:** replug USB → tap **Trust** → enter passcode. (If no prompt: Settings ▸ General ▸ Transfer or Reset ▸ *Reset Location & Privacy* forces the prompt back.)
3. **Enable Developer Mode:** Settings ▸ **Privacy & Security** ▸ **Developer Mode** ▸ **On** → phone reboots → after reboot confirm **On** and approve the prompt. *(Developer Mode only appears after a dev tool has connected once — it has here, so the toggle should be present.)*
4. Let Xcode finish **"Preparing iPhone for development"** — open Xcode ▸ Window ▸ **Devices and Simulators**, select the phone, wait until it stops "Preparing…" and shows no yellow warning.
## Re-verify from the Mac (read-only, safe to re-run)
```sh
export GOVARB_DEVICE_UDID="<copy from: xcrun devicectl list devices>"
xcrun devicectl device info details --device "$GOVARB_DEVICE_UDID" # should now return full info, no 12040
xcrun devicectl device info apps --device "$GOVARB_DEVICE_UDID" | grep -i govarb # confirm build 5 installed
```
- **Full info returns + govarbitrage listed →** unblocked; proceed to CAPTURE-RUNBOOK step 3 (record).
- **Still 12040 →** device is locked or Developer Mode didn't stick; redo steps 1+3.
- **Info OK but govarbitrage NOT listed →** build 5 isn't on the device: install it via **TestFlight** on the phone (Steve action — no local .ipa, cannot side-load). Then re-run.
## Gates (unchanged — never cross)
❌ No ASC writes · ❌ No Resolution Center reply/upload/resubmit · ❌ Do not complete Sign in with Apple (prove availability only) · ✅ read-only device inspection + local recording only.
## Then (Steve's gated console step, after recording exists)
Paste `../ASC-PASTE-KIT.md` → "Guideline 2.1 Reply (paste)" + attach the recording in App Store Connect ▸ Resolution Center ▸ reply to review.