Files
flamenet-messenger-android/app
Paul HittandClaude Opus 5 388e3001af The three fleet suites, and Android sign-up on the two shapes it never tried
Four files that were proving things nobody could re-run. Three of them existed
only as loose scripts in a scratchpad — they are the only tests of federation,
of the fleet's invariants, and of multi-homing that exist anywhere, and none of
them was in the repository. All three pass against the live fleet as committed:
federation 11, invariants 10, multi-homing 12.

What they cover, which is why they are worth keeping rather than rewriting:

  federation.mjs      relay1 → relay2 across the boundary, including that the
                      envelope carries no sender attribution once it crosses,
                      that a relay off the allowlist is refused, and that an
                      unknown address is reported back rather than dropped.
  fleet-invariants    the things one relay cannot show: a claim signed for
                      relay1 refused at relay2, a device token that does not
                      travel, and a handle resolving only within its own relay.
  multi-homing        one send, fanned out to both of Bob's homes though only
                      one was named, readable from either, sharing the id that
                      marks the copies as one message.

`LiveSignUpFleetTest` is the Android half of the two shapes the parity table
listed as built but never exercised: the managed relay, and a self-hosted relay
keeping its accounts in the shared service. iOS has had `LiveSignUpUITests` for
both; Android had only the local-accounts shape.

The assertion that carries the weight there is the ABSENCE of the email field.
A relay with its own account table asks for an address to send a reset code to;
the shared service never does. An email field still on screen means discovery
did not land and the passphrase is about to be stretched with the wrong salt —
which does not error. It derives a different account from the same passphrase,
and the person finds out on their next device.

Opt-in through an instrumentation argument, not an environment variable: env
vars do not reach the instrumentation process, so an env-gated skip stays
skipped however it is invoked and the suite reports success having run nothing.
The file also records the sign-up budget these share with the iOS suite — three
per hour from one address — because exceeding it looks like a broken sign-up.

Verified: `:app:compileDebugAndroidTestKotlin` clean. The instrumented test
itself is unrun; it needs a device and the hourly budget was spent proving the
iOS side.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-25 07:21:40 -04:00
..