pair-e2e: sample the app when the pairing page stays preparing

TE
9d ago
+98-12

The pair-e2e rig's Mobile Pairing page stays "preparing" with no code on a fleet GUI Mac (steps 59c5f9eb8bfb8976560ed476 and c9c9b027f31d54119d869a81, 302 s). A SecurityAgent prompt opens in the console session about 2 s after the tagged DEBUG app launches, hostd (cmux-mobile-host) never starts, and the app's own logs don't name the call that prompts.

This only adds evidence to that failure path in scripts/ci/cmux_next_pair_e2e.py. If a ref that shows codes has no code at 60 s, the rig records the following once and then keeps waiting the remaining 240 s (same 300 s total):

  • a 3 s sample of the app and of up to 4 of its own children, cmux-mobile-host first
  • the unified log of securityd, SecurityAgent and authd, plus the app's own subsystem, for the last 3 minutes
  • the user Keychain search list and default keychain (reading these preferences opens no keychain)

The summary line names any SecItem, SecKeychain, Authorization or LAContext frames the samples show.

Rules kept:

  • Every read is bounded by a timeout.
  • Each file goes through redact().
  • A failure in the diagnostics is caught and can't change the verdict or skip the teardown.
  • On a ref without codes, the wait stays at 60 s with no evidence step.
  • no_answer_evidence's run and save helpers move to module level unchanged, except that stdin is now /dev/null.

Risk: low. This is a CI rig script only. The success path changes only in that the 300 s wait is split at 60 s.

Agent session: agent session

🤖 Generated with Claude Code