docs: record EU4 total 20 phone run

This commit is contained in:
2026-05-10 20:43:10 +08:00
parent 1567fd0a28
commit 8f0be86654
4 changed files with 488 additions and 1 deletions
@@ -0,0 +1,119 @@
# EU4 total 20 real activations run (2026-05-10)
## Request
BOSS asked to continue using the previous four regions and test 20 times:
```text
Italy, Poland, Spain, United Kingdom
Total 20 attempts
Each region switches after at most 3 consecutive failures
```
## Important correction during run
The first total-20 runner used a single pass over the country list, so it could only schedule:
```text
Italy x3 -> Poland x3 -> Spain x3 -> UK x3
```
That stopped after 12 scheduled attempts, with only 10 real 5sim activations because one Italy gate/submission path and one UK gate path hit CDP/runtime errors before buying.
The runner was patched to count **real activations** only and to cycle country chunks until 20 activations were bought:
```text
country x3 -> next country -> ... -> repeat until 20 real buys
```
Gate/CDP failures before the 5sim buy step are not counted as real phone attempts.
## Final result
Combined logs:
```text
/tmp/phone_verify_eu4_3fail_switch_total20.log
/tmp/phone_verify_eu4_3fail_switch_total20_part2.log
```
Total real 5sim activations:
```text
20
```
Country distribution:
```json
{
"italy": 4,
"poland": 6,
"spain": 6,
"england": 4
}
```
Cancellations:
```json
{
"italy": 4,
"poland": 6,
"spain": 6,
"england": 4
}
```
SMS received:
```text
0
```
Resend probe classification:
```json
{
"whatsapp": 20
}
```
Direct OpenAI phone rejection:
```text
0
```
All 20 numbers were accepted into the waiting/verification path long enough to poll 5sim, but 5sim never received an SMS. Every resend probe indicated WhatsApp delivery, so the SMS-only runner canceled the activation instead of clicking WhatsApp resend.
Final activation checked:
```json
{
"activation_id": 1006848391,
"country": "england",
"status": "CANCELED",
"product": "openai"
}
```
## Runner bug
After the 20th activation was canceled, the patched runner hit a harmless final-summary bug:
```text
NameError: name 'attempt_total' is not defined
```
This happened after all 20 real buys were completed and the final activation was canceled. Fix the final `phone_failed_all` emit to use `buy_total` instead of the removed `attempt_total` variable.
## Conclusion
Under the current OpenAI account/session, proxy, and 5sim `openai` SMS activation provider, these four regions are not producing SMS codes. The pattern is consistent across 20 real activations:
```text
OpenAI accepts the number -> page waits for verification -> 5sim receives no SMS -> OpenAI resend channel is WhatsApp -> cancel SMS activation
```
Continuing with the same provider/country set is likely low value unless BOSS wants to collect more evidence. Next useful variables to change are provider/source, account/session risk state, or verification channel strategy.
@@ -0,0 +1,88 @@
# Phone country scheduling: chunk limits must cycle until the global budget is exhausted
## Trigger
Use this note for OpenAI `add-phone` / 5sim phone verification runners that accept:
- an ordered country list, e.g. `italy,poland,spain,england`
- a global attempt budget, e.g. `20`
- a per-country consecutive-failure cap, e.g. `3`
## Pitfall observed
A runner built for:
```text
Italy/Poland/Spain/UK
max 3 consecutive failures per country
total attempts 20
```
used this shape:
```python
for country in ORDER:
local_attempt = 0
while total < MAX_TOTAL and local_attempt < MAX_CONSECUTIVE:
attempt(country)
```
This works for `total <= len(ORDER) * MAX_CONSECUTIVE`, e.g. 10 attempts with 4 countries and chunk size 3. But for `total=20`, it can only produce:
```text
Italy x3 -> Poland x3 -> Spain x3 -> UK x3 = 12 attempts
```
Then it exits early because the outer `for country in ORDER` is exhausted.
## Correct scheduling rule
When BOSS says:
```text
这些地区测试 N 次,每个地区连续失败 K 次就切换下一地区
```
interpret `N` as the global budget and `K` as the maximum consecutive attempts for one country. The country list must cycle until either success or `N` attempts are consumed.
For `ORDER=[italy,poland,spain,england]`, `N=20`, `K=3`, expected schedule is:
```text
1-3: italy
4-6: poland
7-9: spain
10-12: england
13-15: italy
16-18: poland
19-20: spain
```
Do **not** stop at 12 merely because every country had one chunk.
## Reference implementation
```python
def schedule_countries(order, max_total, max_consecutive):
total = 0
while total < max_total:
progressed = False
for country in order:
for local in range(1, max_consecutive + 1):
if total >= max_total:
return
total += 1
progressed = True
yield total, country, local
if not progressed:
return
```
Use the yielded `total` as the global attempt number and `local` as the consecutive attempt number within the current country chunk.
## Other gates still apply
- Do not buy a 5sim activation unless the active OpenAI page is already a usable `auth.openai.com/add-phone` page.
- Re-check visible country/area-code before buying and before submit.
- If OpenAI resend channel probes as WhatsApp and BOSS policy is SMS-only, cancel the activation and rotate/stop.
- If 5sim buy returns HTTP 200 `text/plain` such as `no free phones`, classify as inventory miss; no activation exists and no cancellation is needed.
- Close stale OAuth/OpenAI tabs before opening fresh recovery tabs unless the current tab is already the usable `add-phone` page.