Інцидент 14.10: gpt-image-2.5 Flare/Sunburst — failover bulk-каталогу в Bubble через BIAIG без зависання workflow
14.10 Flare/Sunburst деградували ~40 хв (resolved 10:58 UTC). Що я роблю в BIAIG: коли перемикати leg, як не блокувати scheduler Bubble і що логувати, щоб replay рядків каталогу не перетворився на sync storm.
Контекст (15.10.2026)
14 жовтня bulk-каталог ще крутився, а OpenAI вже писав про обмежену доступність лише для gpt-image-2.5-flare та gpt-image-2.5-sunburst (degraded performance) — не повне вимкнення Images API. Хронологія за status.openai.com (UTC): investigating ~10:18 → mitigation ~10:40 → resolved ~10:58 (~40 хв). Root cause не опубліковано. Окремий resolved-інцидент 15–16 вер. 2026 стосувався лише Flare — для мене це сигнал: повторна деградація цілком реальна, навіть коли status page уже «зелений».
Паралельно дедлайни не зникають: gpt-image-1 вимикається 23.10.2026 (заміна — Flare або Sunburst, deprecations); щодо Nano Banana 2 (gemini-3.1-flash-image) у brief зазначено cutover 29.10, але в пакеті Scout — конфлікт: у поточних Google Gemini API deprecations/changelog (станом на поч. жовт. 2026) модель deprecated з рекомендацією NB2.1 (gemini-nano-banana-2.1, GA 6.10.2026) і без оголошеної дати shutdown; згадку про 29.10 у changelog, за вторинним джерелом (S5 Labs), могли відкликати до 7.10. Перед прод-рішеннями я перевіряю live-сторінки Google, не покладаюсь лише на brief або застарілі агрегатори. Поруч із цим: BulkImagen async batches і nano-banana-2-1:.
BIAIG тут — наш внутрішній оркестратор multi-leg bulk (async batch, публічні URL результатів). Публічної документації з такою назвою Scout не знайшов; чеклист нижче — методологія на базі vendor docs + Bubble manual/forum, а пороги leg-switch у production — з вашого runbook. Про це окремо: Nano Banana 2.1: ~50% API/batch.
Що означає «не блокувати WU» під час деградації leg
Bubble не любить довгі синхронні виклики з API Connector у workflow: на forum часто згадують ~30 с як практичну межу для external calls; workflow може впасти, а scheduler — «з’їсти» capacity.
Офіційно для Schedule API Workflow on a list:
- jobs йдуть паралельно;
- interval = 0 тримає scheduler, поки весь batch не завершиться, і блокує інші scheduled workflows — documented anti-pattern для здоров’я app-wide scheduler;
- interval ≠ гарантія відсутності overlap під навантаженням; для порядку/консистентності часто радять recursive API workflows.
Для BIAIG я роблю так: під деградацією OpenAI leg не «дожимаю» тисячі sync Image API в одному burst з interval=0. Краще короткий sync probe → Batch leg або reserve provider → webhook/backend workflow для завершення.
Операційний чеклист BIAIG (failover bulk-каталогу)
1. Сигнали (що моніторити)
- RSS/сторінка OpenAI Status для Flare/Sunburst (не плутати з Sep Flare-only).
- Власні метрики leg: rate 429/5xx, p95 latency, частка порожніх/битих image URL після upload.
- Окремо: sync Image API vs Batch — status 14.10 не розділяв endpoints; якщо sync поганий, Batch може ще прийматися (перевірити на вашому обсязі).
2. Коли перемикати leg (орієнтири, не магічні числа)
| Режим | Коли лишатися | Коли перемикати |
|---|---|---|
| Sync burst (малі партії, терміново) | Status resolved + error rate у нормі на канary N рядків | Sustained помилки/latency на Flare або Sunburst; cross-model Flare↔Sunburst (різне позиціонування: everyday gen vs editing precision — image guide) |
OpenAI Batch (/v1/images/generations, /v1/images/edits) |
Великий каталог, tolerable latency; JSONL з custom_id — batch guide |
Sync leg «горить», а batch submission ще healthy; або потрібен replay лише failed custom_id без повторного sync storm |
| Reserve provider leg (напр. Gemini NB2.1) | OpenAI leg деградований довше за ваш SLO; або migration off gpt-image-1 / NB2 |
Після cutover mapping prompt/size у runbook; дату NB2 shutdown — з live Google docs, не з brief без верифікації |
Не робити: ставити interval=0 «щоб швидше прогнати bulk перед failover» — заморозите інші scheduled jobs у додатку.
3. Патерн workflow у Bubble (без stuck runs)
- Старт bulk: API workflow створює/оновлює batch-job Thing (див. лог нижче), enqueue leg у BIAIG, повертає job id одразу — без очікування image bytes у тому ж run.
- Sync leg (якщо взагалі): один рядок або мікро-batch; при fail — mark row
failed, не retry loop у тому ж workflow без backoff. - Batch leg: submit JSONL; poll або webhook з backend; результат — публічний URL (S3/CDN/Bubble file) + зв’язок з catalog row.
- Завершення: окремий API workflow (recursive або list з non-zero interval) застосовує результати до Things; помилки — у dead-letter список для replay. Поруч із цим: gpt-image-1 вимикається 23.10.2026: міграція bulk-каталогів.
4. Що логувати в batch-job (мінімум для replay рядків)
Зафіксуйте на кожному job (і на рядку, якщо є nested log):
job_id(internal UUID),started_at,leg(openai_sync_flare|openai_sync_sunburst|openai_batch|gemini_nb21| …)provider_batch_id/output_file_id(OpenAI Batch — cookbook pattern)custom_id↔ catalog row id (Bubble unique id або ваш stable sku) — один до одного для replaymodel_idat submit time (важливо біля 23.10 дляgpt-image-1→ 2.5)input_hash(prompt + refs) щоб не дублювати платні виклики при replaystatusper row:queued|submitted|succeeded|failed|skipped_duplicateerror_class(HTTP, timeout, empty body) + raw snippet (без secrets)result_public_url,completed_atincident_tag(напр.openai-2026-10-14-flare-sunburst) для postmortem фільтра
Replay = лише рядки з failed/missing_output, той самий custom_id, новий leg за чеклистом — не повний re-run каталогу.
5. Після «resolved» на status page
- Canary sync (5–20 рядків) на обох цільових моделях, якщо каталог mixed gen/edit.
- Перевірити scheduler: немає backlog від учорашнього interval=0.
- Оновити runbook: чи Sep+Oct Flare патерн змінює default leg ratio.
Чесні обмеження
- Root cause 14.10 невідомий; aggregate status ≠ ваш tier/регіон.
- Пороги leg-switch і схема BIAIG у production — internal; цей текст не замінює ваш digest/runbook.
- Таймаути Bubble (30 с vs інші контексти) — перевірте на своєму app.
Джерела: OpenAI status + deprecations + batch/image guides; Google Gemini changelog/deprecations; Bubble scheduling, recursive workflows, scheduler, API Connector; forum threads про timeout і list scheduling (див. Scout packet).