diff --git a/work/projects/cpm-web-extension-repro-and-fix-2026-10-08.md b/work/projects/cpm-web-extension-repro-and-fix-2026-10-08.md index 3bccd6ba..4432c0c1 100644 --- a/work/projects/cpm-web-extension-repro-and-fix-2026-10-08.md +++ b/work/projects/cpm-web-extension-repro-and-fix-2026-10-08.md @@ -163,7 +163,12 @@ cd SharedPackages/WebExtensions && CPM_REPRO=1 swift test --filter CPMReproBackg - Около четверти iOS (и ~15% macOS) — после загрузки контекста: хвосты `load → view` / `base_url_changed → view`, `reason=extension.reload` (iOS 71, macOS 39). - macOS: `app_version_change=updated` у 144 из 228 (63%; в среднем по stuck — 52%). - `context_errors=none` у 675/748 iOS; память (`critical_memory_age`) почти везде `none`. -- **Ответ часто опаздывает, а не теряется:** `recovered_without_extension_reload` с `recovery_from=initialization_failed` — iOS 3 023, macOS 547 (count). Монитор шлёт его, когда после сбоя ответ всё же пришёл. +- ~~Ответ часто опаздывает, а не теряется~~ — **поправка 8 октября:** `recovered_without_extension_reload(initialization_failed)` к stuck не относится. Он закрывает только эпизод, который ещё **не** stuck: пришёл опоздавший ответ на упавшее измерение или следующая навигация в той же вкладке ответила. Stuck-эпизод сразу уходит в M4, и его восстановление считается как `recovered_after_extension_reload(messaging_stuck)`; без reload из stuck — 0 строк. + - У recovery-пикселей только `appVersion` и `cpm_recovery_from`: хвостов, задержки и признака «тот же документ / следующая навигация» нет. + - `initialization_failed` — только `.daily` (на причину), recovery — daily+count. Сравнимо только daily/daily за 5 октября: iOS 1 555 / 6 624 = 23% (33% от `after_other`), macOS 353 / 1 405 = 25% (33% от `after_other`). count/daily recovery ≈ 1,9 на устройство-день на iOS — у одних и тех же устройств повторяется. + - Stuck → recovered after M4 (daily): iOS 916 / 1 440 = 64%, macOS 362 / 489 = 74%. + - Хвосты «здоровых» init-сбоев vs stuck (iOS): `load/base_url_changed → view` — ~32% init против ~18% stuck; `dealloc → view` (пробуждение) — ~44% init против ~61% stuck (macOS: ~36% → 52% только `@30s`). То есть сбои после загрузки контекста чаще проходят сами (согласуется с задержкой чистки при смене `baseURL`), а пробуждение чаще доходит до stuck. + - Нужно в телеметрию: на recovery-пиксель — задержку ответа от начала измерения (бакеты 4–8 с / 8–30 с / >30 с), `same_document` vs `next_navigation` и хвост `bg_events` на момент сбоя. - Версии ОС: на macOS «здоровые» сбои есть и на 26.7, и на 27.0 (92 и 178 init в срезе сравнения ОС). Версии iOS в выгрузке нет — нужен запрос в ClickHouse. **WebKit-баги (bugs.webkit.org, компонент WebKit Extensions, изменения с мая 2026):**