Skip to content

ci(walletkit): revert applinks ?mode=developer patch for Maestro iOS#527

Merged
ignaciosantise merged 4 commits into
mainfrom
ci/walletkit-remove-applinks-dev-mode
Jun 9, 2026
Merged

ci(walletkit): revert applinks ?mode=developer patch for Maestro iOS#527
ignaciosantise merged 4 commits into
mainfrom
ci/walletkit-remove-applinks-dev-mode

Conversation

@ignaciosantise

Copy link
Copy Markdown
Collaborator

What

Removes the CI step that patched ?mode=developer onto each applinks: associated domain in the wallet's entitlements on the Maestro iOS runner.

Why

The Universal Link E2E test ("WalletConnect Pay - Single Option No KYC (Universal Link)") keeps flaking — it opens Safari instead of the wallet. Digging into the swcd syslog from run 27032183526:

  • The AASA does download and approve correctly (HTTP 200, sa = approved, patternCount = 1). Entitlements, domains, and the AASA file are all fine.
  • But ?mode=developer tells swcd never to cache/trust the AASA. Its recheck date is pinned to the zero date (Sat Dec 30 … 0000), i.e. permanently overdue — so it re-fetches ~every minute (13 fetches/domain in a 10-min run). Apple's own non-dev entries, by contrast, recheck ~5 days out.
  • Each re-fetch transiently drops the entry to sa = unspecified with no patterns. The failing tap (18:38:23) landed in exactly such a window:
    swcd  Found entry { … d = pay.walletconnect.com?mode=developer, sa = unspecified } matching inputs { … d = pay.walletconnect.com }
    swcd  Entry { … sa = unspecified } did not have any patterns to match against
    
    → no app claims the URL → Safari handles it → pay-merchant-info never appears → assertion fails.

So dev mode doesn't fix the race; it converts a one-time post-install window into a perpetual one. Reverting to the normal CDN route gives a stable verdict once verified (the CDN serves the AASA for all four domains).

This does not fully fix the flake on its own

Maestro reinstalls the app on every flow (clearState on iOS = uninstall+reinstall — 10 cycles in this run). Each reinstall re-registers the association and triggers a fresh verification right before that flow's tap, so a per-flow race remains in both CDN and dev mode. The deeplink flow tapped ~40s after its own reinstall (18:37:43 → 18:38:23).

The durable fix — retry the openLink until the wallet screen appears — has to live in the deeplink flow yaml, which is in the WalletConnect/actions repo. That will be handled separately there.

Draft because

This is the first half of a two-part fix; pairing it with the flow-side retry in the actions repo. Opening as draft for visibility / discussion while that lands.

🤖 Generated with Claude Code

Drop the step that appended `?mode=developer` to each associated domain in
the entitlements on the Maestro runner.

Investigating the recurring Universal Link flake (E2E run 27032183526) showed
dev mode does not fix the race and arguably makes it worse. With
`?mode=developer`, swcd never schedules a far-future recheck — the entry's
recheck date is pinned to the zero date, so it is always "overdue" and is
re-fetched roughly every minute. Each re-fetch transiently clears the verified
patterns and drops the verdict to `unspecified`. The failing deeplink tap
landed in one of these windows: swcd returned `sa = unspecified` / "did not
have any patterns to match against" for pay.walletconnect.com, so iOS found no
app claiming the URL and opened Safari → `pay-merchant-info` never rendered.

Reverting to the normal CDN route gives a stable verdict (~days) once verified,
removing the oscillation. The CDN serves the AASA for all four domains.

Note: this alone does not fully fix the flake. Maestro reinstalls the app on
every flow (clearState on iOS = uninstall+reinstall — 10 cycles in this run),
so each flow re-registers the association and re-verifies right before its tap.
The durable fix (retry the openLink until the wallet screen appears) belongs in
the deeplink flow in the WalletConnect/actions repo and will be handled there.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@vercel

vercel Bot commented Jun 5, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
pos-demo Ready Ready Preview, Comment Jun 9, 2026 2:14pm

Request Review

@claude

claude Bot commented Jun 5, 2026

Copy link
Copy Markdown

Claude finished @ignaciosantise's task in 1m 4s —— View job


Review

  • Gather context
  • Read changed file
  • Run breaking changes subagent
  • Run data classification subagent
  • Post review findings

✅ No issues found

The change is a clean, well-reasoned revert. Key observations:

  • No breaking changes — the removed step had no id:, no $GITHUB_OUTPUT entries, and surfaced no env vars to callers. Action inputs/outputs contract is unchanged.
  • No data classification concerns — only public domain names and entitlements XML structure were involved; all credential inputs remain properly handled via inputs.
  • Comment update at line 286-287 correctly removes the stale "dev-mode" reference, keeping the inline explanation accurate.
  • CDN route remains correctly primed — the "Prime Universal Link AASA cache" step (swcutil dl for all 4 domains) stays intact, so the stable AASA fetch path is preserved after this revert.

The PR description's syslog analysis (sa = unspecified during the transient re-fetch window, recheck date pinned to epoch in dev mode) is solid evidence that ?mode=developer converted a one-time window into a perpetual race. The acknowledged remaining flake (per-flow reinstall + clearState) is correctly scoped out to the flow yaml in the WalletConnect/actions repo.

…try)

Re-pin maestro/pay-tests and maestro/setup to WalletConnect/actions PR #93
(fix/maestro-ios-universal-link-retry, 6e17edb), which retries the iOS
universal-link open until pay-merchant-info is visible — the flow-side half
of the Universal Link flake fix that pairs with reverting ?mode=developer.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
WalletConnect/actions PR #93 merged; bump maestro/pay-tests and maestro/setup
from the PR-branch SHA to master (3a145ab).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@ignaciosantise ignaciosantise marked this pull request as ready for review June 9, 2026 14:49
Copilot AI review requested due to automatic review settings June 9, 2026 14:49

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Removes the iOS Maestro CI-time entitlements patch that appended ?mode=developer to applinks: associated domains, reverting Universal Links back to the normal AASA/CDN verification path to reduce flaky Universal Link E2E behavior.

Changes:

  • Deleted the CI step that patched ?mode=developer into RNWeb3Wallet.entitlements during Maestro iOS builds.
  • Updated the pinned WalletConnect/actions SHAs used for Maestro pay test flows + setup.
  • Adjusted nearby simulator reset comment wording to remove dev-mode-specific phrasing.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

sudo udevadm trigger --name-match=kvm

# --- Common: Maestro setup + run ---
# Pinned to WalletConnect/actions master
@ignaciosantise ignaciosantise merged commit 065eb29 into main Jun 9, 2026
10 checks passed
@ignaciosantise ignaciosantise deleted the ci/walletkit-remove-applinks-dev-mode branch June 9, 2026 15:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants