Skip to content

fix(ios): avoid replaying alert mutations - #2323

Merged
thymikee merged 2 commits into
callstack:mainfrom
billsbooth:codex/qa-alert-retry
Sep 6, 2026
Merged

fix(ios): avoid replaying alert mutations#2323
thymikee merged 2 commits into
callstack:mainfrom
billsbooth:codex/qa-alert-retry

Conversation

@billsbooth

@billsbooth billsbooth commented Sep 6, 2026

Copy link
Copy Markdown
Contributor

Summary

Prevent XCTest-backed alert accept and alert dismiss from being replayed after a lost response. Default/explicit get stays retryable. Six transport regressions fail before the fix and pass afterward.

Scope

12 files: action-aware runner traits across client, session and recovery; transport/provider/startup regressions; shared TypeScript/Swift golden table; help and command docs. No native alert-identity change or QA driver version update.

Validation

Commit 53d9f01f4ccde3665d73b76fd5441ddb64a00d97: pnpm check:affected --run passed (2,915 related tests). All CI green. macOS: 191 native tests passed, including the golden table. iOS: 77 native tests plus live alert get/dismiss/accept outcomes and session cleanup passed. Local host bootstrap hung; separate Settings replay needed attempt 2 after a capture timeout.

Verification

Observability audit: existing command IDs correlate dispatch and status recovery. Tests preserve typed lifecycle/recovery details and prove one mutation dispatch. No additional payload logging, secrets, or configuration.

Automated Test Plan

  • Run pnpm exec vitest run --project apple-runner packages/platform-apple/src/runner/__tests__/runner-recovery-wiring.test.ts packages/platform-apple/src/runner/__tests__/runner-command-traits.test.ts; expect no accept/dismiss replay for accepted, started, or completed lost-response states; queries still retry.
  • Run the macOS host XCTest lane; require testAlertReadOnlyClassificationMatchesGoldenTable to pass.
  • Build Agent Device Tester using examples/test-app/README.md; follow docs/agents/device-verification.md for fresh source/isolated simulator setup. Keep the same --platform ios --udid <owned-udid> --session alert-retry on every command. Open com.callstack.agentdevicelab, navigate Settings → Open automation lab, click id="automation-open-alert", then alert get and alert dismiss; expect Alert result: cancelled. Reopen and alert accept; expect Alert result: accepted. Retain command/status evidence; close the original session. Executed in iOS CI.

@thymikee

thymikee commented Sep 6, 2026

Copy link
Copy Markdown
Member

Looks good at 53d9f01. Accept and dismiss are no longer retried after a lost response, and the tests cover that case. CI and the live iOS alert checks passed; ready to merge.

@thymikee thymikee added the ready-for-human Valid work that needs human implementation, judgment, or maintainer merge label Sep 6, 2026
@thymikee
thymikee merged commit c4dc562 into callstack:main Sep 6, 2026
15 checks passed
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.

2 participants