Remove wrongly-specced opp-dm.py and dev-dm.py; dm.py is the headless DM tool
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
# Phone-OTP Login Flow
|
||||
|
||||
**Status:** proven on bl (2026-10-03)
|
||||
Alternative to the email-OTP path for muse.ai login; same form, same OTP
|
||||
mechanics, different delivery channel (SMS instead of email).
|
||||
|
||||
## When
|
||||
|
||||
Fresh chrome-box profile + NetVM node, no session yet. Used when the
|
||||
account's primary identifier is a mobile number rather than an email.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- chrome-box profile + NetVM node provisioned on bl (1:1: profile == node
|
||||
== Warp identity). See `README.md` "Provisioning a node".
|
||||
- A real mobile number that can receive SMS — **human-provided per login
|
||||
attempt, never stored, never written to any registry, log, or memory.**
|
||||
The registry records only `phone_otp: yes` as the route.
|
||||
|
||||
## Flow
|
||||
|
||||
1. Launch headless Chromium in the node's netns:
|
||||
`netvm-chrome.sh --headless <profile> https://muse.ai`
|
||||
(CDP on by default for automation.)
|
||||
2. Via CDP: open muse.ai → "Log in" → inline form "Mobile number or email".
|
||||
3. Enter the human-provided mobile number (E.164) and Continue.
|
||||
4. If the number maps to **multiple Meta accounts**, an account-selection
|
||||
UI appears (observed 2026-10-03: "Meta Account" vs "piparada" with
|
||||
Instagram avatar — see `docs/meta-account-selection.png`). Select the
|
||||
intended account.
|
||||
5. muse.ai sends a 6-digit SMS OTP.
|
||||
6. Human reads the SMS and relays the OTP (board/chat handoff, or direct).
|
||||
7. Enter the OTP via CDP and submit. Session established, cached in the
|
||||
profile.
|
||||
8. Verify: revisit muse.ai via CDP, confirm logged-in markers, no login
|
||||
wall. Flip the `ACCOUNTS.md` row to `active`.
|
||||
|
||||
## Operator/human split
|
||||
|
||||
- **Agent:** browser launch, CDP automation, form entry, OTP submission,
|
||||
verification. Never sees the phone number beyond the single form entry.
|
||||
- **Human:** provides the number per attempt, receives the SMS, relays the
|
||||
OTP. The only party that ever holds the number.
|
||||
- **Operator:** provisions the node, coordinates, maintains the registry.
|
||||
|
||||
## PII rules
|
||||
|
||||
- The phone number is PII. It goes into the login form and nowhere else —
|
||||
not the registry, not logs, not chat history, not memory.
|
||||
- OTP codes are relayed, used once, never stored.
|
||||
- If the number is linked to other accounts (e.g. Facebook), that linkage
|
||||
is managed via the separate Meta Accounts Center API
|
||||
(`docs/META-ACCOUNTS-API.md`) — never conflated with the OTP flow.
|
||||
|
||||
## Failure modes
|
||||
|
||||
- **OTP expired:** re-request from the form (note rate limits if hit).
|
||||
- **SMS delayed:** wait 60s, retry once, then escalate (possible carrier
|
||||
filtering).
|
||||
- **Session lost on browser restart:** observed 2026-10-03 (`pip` node) —
|
||||
re-auth from step 1. If recurrent, investigate session persistence.
|
||||
- **Wrong number entered:** restart from step 1.
|
||||
- **Account-selection ambiguity:** confirm with the human which account
|
||||
before proceeding; never guess.
|
||||
|
||||
## Provenance
|
||||
|
||||
- 2026-10-03: `646` — phone OTP login completed (first Meta Account
|
||||
option), bl.
|
||||
- 2026-10-03: `pip` (piparada) — phone OTP login completed; session lost
|
||||
on browser restart, needs re-auth.
|
||||
- 3 OTP codes used 2026-10-03 without rate-limit issues.
|
||||
- Egress: bl Warp (104.28.195.181) accepted without bot-detection friction.
|
||||
Reference in New Issue
Block a user