4.0 KiB
Session review: 2925 + Luban OpenAI onboarding lessons (2026-05-11)
Why this reference exists
BOSS asked to actively review the conversation and update the skill library. This session produced several reusable lessons for the broader codex-oauth-plus-onboarding workflow, and they belong under the existing umbrella skill rather than as narrow one-off skills.
Class-level lessons captured
1. 2925 Webmail false negatives are a scraper problem until proven otherwise
A manual user check found OpenAI verification mail in 2925 Inbox even though automation reported candidateCount=0 for multiple resend cycles. The root cause was route-based scraping:
Wrong: https://2925.com/#/mailList?type=收件箱
Right: click the left-side 收件箱 nav, then inspect the real list at #/mailList
Reusable rule: before concluding OpenAI did not deliver to a 2925 alias, verify the scraper uses the real DOM flow:
click left 收件箱 -> toolbar 刷新 -> table.maillist-table tr -> hidden tooltip/title/textContent -> open newest matching row -> extract code from message body
Detailed reference: references/mail2925-correct-inbox-scraping-openai-code-2026-05-11.md.
2. SMS-provider tests must separate OpenAI acceptance from SMS delivery
Luban UK demonstrated a useful distinction:
OpenAI acceptance: attempts 1-9 reached phone-verification and were not rejected.
SMS delivery: 0/10 messages arrived after ~190s each.
Do not collapse these into a single “failed” label; report both dimensions. Attempt 10 stayed on add-phone, so it must be classified as submit_no_sms_page, not as a confirmed no-SMS phone-verification attempt.
Detailed reference: references/luban-uk-openai-10-attempts-no-sms-2026-05-11.md.
3. Luban release timing is provider-specific
BOSS explicitly corrected the release cadence: for real SMS-delivery testing, hold each Luban order at least 3 minutes before releasing. Immediate or too-early release can return provider errors like:
停用失败,该供应商需要在两分钟后停止.
Reusable rule: calculate release eligibility from the purchase timestamp, not from the last poll timestamp.
4. Country samples should be documented with service_id and result class
Luban country/service results are not interchangeable:
UK / service_id=537935: OpenAI usually accepted, SMS did not arrive in 10 attempts.
Chile / service_id=508058: first attempt was immediately rejected by OpenAI.
This helps future runs avoid repeating low-yield country/provider combinations without explicit BOSS approval.
Detailed reference: references/luban-chile-openai-immediate-reject-2026-05-11.md.
5. After background process completion, always process the result visibly
A prior tool turn ended with an empty response after writing a script. BOSS explicitly asked to process tool results and continue. The skill already contains the rule to always return a visible status after tool-driven steps; this session reinforces that it is not optional.
Current skill-library state after this session
Updated umbrella:
codex-oauth-plus-onboarding
New/updated references:
references/mail2925-correct-inbox-scraping-openai-code-2026-05-11.md
references/luban-uk-openai-10-attempts-no-sms-2026-05-11.md
references/luban-chile-openai-immediate-reject-2026-05-11.md
Gitea sync verified at commit:
c29567eda6e1619401d2ccdbc937e7534c35940e
Future action pattern
For new OpenAI/Codex onboarding runs using 2925 + Luban:
- Load this umbrella skill first.
- Prefer the corrected 2925 scraper flow before declaring email non-delivery.
- For Luban, resolve service_id dynamically and log country/provider/service_id/cost.
- Hold Luban orders at least 3 minutes when testing delivery.
- Classify outcomes precisely:
rejected_by_openaiphone_verification_no_smssubmit_no_sms_pagesms_received_but_code_rejectedphone_verified
- Write a concise reference and sync Gitea after non-trivial provider/country tests.