DEV Community

Roronoa
Roronoa

Posted on

"Test iOS AI Task Continuity Across Draft Recovery and Resumed Runs"

On iOS, type a multi-line prompt, background the app before sending, return through another task, then encounter a usage-limited run. Two different promises are now under test: the unsent draft should recover in its proper context, while a submitted run should resume from authoritative task state.

OpenAI's release notes are the latest verified official signal for this article. The July 20 entries describe iOS task transcript Mermaid, interactive forms, unsent prompt recovery across tasks/hosts/workspaces, and goals resuming blocked or usage-limited runs. Availability must be treated exactly as those notes state. This is a source-based test plan, not hands-on evidence, and unverified secondary July 27 claims are rejected.

Separate local draft from remote run

unsent draft: device text + context key + local lifecycle
submitted run: server task ID + revision + blocked/resumable state
Enter fullscreen mode Exit fullscreen mode

Never turn recovered draft text into an automatic submission. Never treat a local draft timestamp as proof that remote work continued.

A test record should capture:

device: record-exact-model
os: record-exact-iOS-version
app_build: record-exact-build
network: wifi-or-cellular-or-offline
power: normal-or-low-power
start_context:
  task: task-A
  host: host-1
  workspace: workspace-red
transition: background-then-switch-workspace
expected: draft-remains-bound-to-original-context
observed: not-run
Enter fullscreen mode Exit fullscreen mode

Lifecycle matrix

Case Starting state Transition Expected check Unsafe outcome
D1 unsent prompt background/foreground text and cursor recover draft silently disappears
D2 unsent prompt in A switch to task B no text leakage into B prompt shown in wrong task
D3 unsent prompt host/workspace change explicit binding or warning accidental cross-context send
R1 submitted active run app terminated server status reconciles duplicate submission
R2 usage-limited run limit later clears goal resumes as documented restart from stale input
R3 blocked run prerequisite changes user sees changed evidence silent resume with old approval
N1 either state offline return local draft readable; remote unknown false “complete” status

For forms, test focus, keyboard dismissal, partial values, and errors. For Mermaid, verify text alternatives and zoom; release notes do not prove accessibility.

Proposed XCTest seam

Use fakes before a live account. Define DraftKey from task, host, and workspace IDs; make RunStatusSource return versioned active, blocked, or complete states.

A local test can assert that DraftKey(taskA, host1, red) never populates task B. A fake status source can return .blocked(revision: 4) before process death and .active(revision: 5) after relaunch; the UI must reconcile rather than submit again.

Normal path: backgrounding preserves the unsent draft under the exact context key. Once the user sends it, the app clears that draft only after receiving a task identity, and subsequent launches fetch run status.

Failure path: the workspace changes while a draft is present. The composer becomes read-only, labels the original context, and offers “return” or “discard”; the primary send action remains disabled. For a blocked run whose revision changed, invalidate any old approval before resumption.

Measurements

Count recovery by transition, wrong-context drafts, duplicate task IDs, stale resumptions, and time to authoritative status. Record device, OS, build, network, power mode, and exact steps; invent no battery or latency values.

Release gate

  • Drafts use task, host, and workspace identity together.
  • Recovery never auto-sends text or resumes authority silently.
  • Submitted tasks use stable server IDs and idempotency keys.
  • Offline UI distinguishes cached text from remote truth.
  • Blocked/usage-limited resumption rechecks revision and prerequisites.
  • Interactive forms survive keyboard, interruption, and validation failure.
  • Mermaid content has a usable nonvisual representation.
  • Account availability is verified against current official notes.

Limits: this matrix does not claim OpenAI's iOS behavior was executed, define its internal storage, or guarantee cross-device semantics. OS eviction, managed-device policy, provider availability, and app updates may change results.

Apply the matrix before trying another platform

MonkeyCode is separately described as an open-source AGPL-3.0 AI development platform offering an overseas online option, managed server-side cloud development environments, model/task/requirement management, and build/test/preview, free to start. I did not run these iOS cases against it. The responsible evaluation is to use the official campaign route and preserve the environment record, failure cases, and no-auto-resume rule.

Disclosure: This article promotes MonkeyCode using an official campaign link. I’m a MonkeyCode user, not affiliated with the project, and I receive no commission from this link.

AI assistance disclosure: This article was drafted with AI assistance and reviewed against the cited primary sources.

Top comments (0)