The Android half of any cross-platform check has to be driven by something,
and `android-signup.sh` only signs UP — which on the live relay leaves a real
account behind and spends the account service's three-per-hour-per-IP budget.
🔴 **Three traps, all of which cost an hour today, all silent.**
1. `input text` drops characters on longer strings. A 21-character
passphrase arrived as 11. Nothing reports it; the sign-in just fails as
though the password were wrong. So: chunks, and read the count back.
2. The soft keyboard covers the button. A tap at the button's coordinates
lands on a KEY — which types into the field you just filled, so the
passphrase grew by one character every time I "pressed" sign in.
3. Dismissing the keyboard MOVES the button, and on a slow emulator the
layout is still settling when the tap goes out. ⚠️ This is not
theoretical: it put the driver on the SIGN-UP form, one field from
creating an account on production, with every coordinate correct at the
moment it was read.
Trap 3 is why `tap_label` reads the bounds twice a second apart and refuses
to tap a control that is still moving — and why the sign-in button is found
by LABEL, never by index. An index picked "Create an account".
⚠️ It does not get all the way in yet. Filed separately: the app reaches the
sign-in screen with correct credentials, opens sockets, and then sits there
for four minutes showing nothing — no spinner that resolves, no error. TCP to
accounts.flamenet.io:443 and relay.flamenet.io:443 both succeed from inside
the emulator, and the same credentials sign in fine on iOS, so this is not
the network and not the credentials.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>