docs: record EU4 total 20 phone run
This commit is contained in:
+119
@@ -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.
|
||||
+88
@@ -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.
|
||||
Reference in New Issue
Block a user