docs: record eu4 phone run and round-robin fix

This commit is contained in:
2026-05-10 16:13:49 +08:00
parent eeacb3b6a3
commit a803703a98
6 changed files with 884 additions and 1 deletions
@@ -0,0 +1,114 @@
# EU4 phone verification run and round-robin correction (2026-05-10)
## Request
BOSS requested broadening 5sim SMS countries to:
```text
Italy, Poland, Spain, United Kingdom
```
and running the latest strict-gate workflow for 10 attempts.
## Intended config
```text
FIVE_SIM_COUNTRY_ORDER=italy,poland,spain,england
PHONE_VERIFICATION_REPLACEMENT_LIMIT=10
```
Country mappings:
| 5sim country | OpenAI ISO | Visible selector | Prefix |
| --- | --- | --- | --- |
| `italy` | `IT` | `意大利 (+39)` | `39` |
| `poland` | `PL` | `波兰 (+48)` | `48` |
| `spain` | `ES` | `西班牙 (+34)` | `34` |
| `england` | `GB` | `英国 (+44)` | `44` |
## Actual first EU4 run outcome
Runner:
```text
/tmp/phone_verify_eu4_total10_latest.py
```
Log:
```text
/tmp/phone_verify_eu4_total10_latest.log
```
Result:
```json
{"phase":"phone_failed_all","total_attempts":10,"order":["italy","poland","spain","england"]}
```
Important correction: although the order included four countries, the script loop ran all 10 attempts against the first country (`italy`) because it nested `for country in ORDER` outside `for attempt in LIMIT` and stopped after the global total reached 10. It did not test Poland, Spain, or UK in that run.
## Italy findings
All bought orders were canceled. Examples:
- `1006744560`
- `1006745080`
- `1006745501`
- `1006746015`
- `1006746588`
- `1006747049`
- `1006747555`
- `1006748145`
Observed pattern:
1. Strict country gate passed before buying:
- `意大利 (+39)`
- `selectValue=IT`
2. OpenAI accepted or transitioned into phone verification/waiting state.
3. 5sim status stayed `RECEIVED` with `sms_count=0`.
4. Resend probe detected WhatsApp delivery, e.g.:
```text
重新发送 WhatsApp 消息
```
5. Under BOSS's SMS-only policy, runner canceled the SMS activation instead of clicking WhatsApp resend.
Conclusion for Italy:
```text
Italy +39 did not produce SMS via 5sim/openai in this run; OpenAI repeatedly exposed WhatsApp resend, so SMS-only automation canceled the activations.
```
## Runner bug fixed
A corrected round-robin runner was written:
```text
/tmp/phone_verify_eu4_roundrobin10_latest.py
```
The corrected runner attempts countries in round-robin order:
```text
attempt 1: italy
attempt 2: poland
attempt 3: spain
attempt 4: england
attempt 5: italy
...
```
This prevents a global limit from being exhausted by the first country only.
## Workflow rule added
When BOSS says "expand countries A/B/C/D and run N attempts", interpret `N` as global attempts unless BOSS explicitly says "per country". Use a round-robin schedule so each configured country is actually tested before repeating the first one.
## Still mandatory
- Strict country/area-code gate before buying and before submit.
- No non-US number on `美国 (+1)`.
- Probe resend channel before clicking.
- If resend channel is WhatsApp and BOSS policy is SMS-only, cancel activation and rotate/stop.
- Cancel any active activation on interruption or flow failure.
@@ -0,0 +1,61 @@
# OpenAI add-phone EU4 total-10 SMS run notes (2026-05-10)
## Trigger
Use these notes when BOSS asks to broaden 5sim SMS phone-verification countries around Europe while keeping the latest strict OpenAI `add-phone` runner behavior.
## User preference captured
When BOSS says to try a set of regions and says "设为/跑 10 次", interpret it as **10 total attempts across the configured country order** unless BOSS explicitly says "每个国家 10 次". This avoids burning unnecessary 5sim orders.
## Country order used
```text
italy,poland,spain,england
```
## Required OpenAI country mappings
| 5sim slug | OpenAI ISO | Visible selector text | Dial prefix |
| --- | --- | --- | --- |
| `italy` | `IT` | `意大利 (+39)` | `39` |
| `poland` | `PL` | `波兰 (+48)` | `48` |
| `spain` | `ES` | `西班牙 (+34)` | `34` |
| `england` | `GB` | `英国 (+44)` | `44` |
## Runner changes made during the session
A temporary latest runner was created from the strict-gate runner:
```text
/tmp/phone_verify_eu4_total10_latest.py
```
It should be promoted/copied into the skill package if it continues to be useful. It differs from the previous strict runner by:
1. Adding Italy/Poland/Spain mappings.
2. Keeping UK mapping as `england` -> `GB` -> `英国 (+44)`.
3. Enforcing `MAX_TOTAL_ATTEMPTS = 10` across all countries, not per-country.
4. Retaining the existing strict country gate before buy and before submit.
5. Retaining official-update learnings:
- probe resend channel before clicking;
- cancel/rotate if WhatsApp is detected under SMS-only policy;
- classify 500/contact-verification server errors;
- cancel activations if a gate or server error occurs.
## First-run evidence
The EU4 run started successfully. The first attempt was Italy and passed the country gate before buying:
```json
{"phase":"country_gate_before_buy","country":"italy","attempt":1,"ok":true,"country":"意大利 (+39)","selectValue":"IT","expected":"意大利 (+39)"}
```
A 5sim activation was bought only after the gate passed. Full phone number is intentionally not recorded.
## Pitfalls
- Do not rely on `PHONE_VERIFICATION_REPLACEMENT_LIMIT=10` alone when multiple countries are configured; the old runner interprets that as per-country. Add a global attempt counter when BOSS asks for total attempts.
- Keep the strict country/area-code gate. Do not submit European numbers while the selector is still `美国 (+1)`.
- Keep SMS-only policy. Do not click WhatsApp resend unless BOSS explicitly approves switching away from SMS-only.
- If the run is interrupted, immediately check/cancel any active 5sim activation in `RECEIVED` state.