From 4e72823c60285340de4b427b9f94527b7a6281f5 Mon Sep 17 00:00:00 2001 From: Alexey Martemyanov Date: Thu, 8 Oct 2026 21:48:20 +0600 Subject: [PATCH] [2026-10-08] eagle: work/projects/cpm-web-extension-repro-and-fix-2026-10-08.md --- ...cpm-web-extension-repro-and-fix-2026-10-08.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) 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 af14062c..0d86e8ff 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 @@ -246,6 +246,22 @@ cd SharedPackages/WebExtensions && CPM_REPRO=1 swift test --filter CPMReproBackg Не измерить без extension: восстановление уже открытых документов (монитор меряет только навигации) и причину смерти worker'а при живом Network-процессе. +### Фаза 1 реализована — worktree `alex/cpm-messaging-readiness-telemetry` (от `main` 92e09cdbbc, 8 октября, не закоммичено) + +Только телеметрия, поведение детектора не меняется. +- На `initialization_failed_*` и `messaging_stuck_*` (iOS + macOS): + - `bg_ready_after` — `none` / `pending` / `failed` / `under_1s` … `over_30s`. Источник — completion у `loadBackgroundContent`. Он вызывается один раз на следующем шаге run loop после `didCreateBackgroundWebView`: view уже есть, поэтому вызов лишь присоединяется к идущей загрузке и ничего не будит. Отключается тем же флагом, что и delegate proxy (`cpmBackgroundDelegateProxy`). Код — `CPMBackgroundReadinessObserver.swift`. + - `bg_view_age` — `under_4s` / `4s_to_8s` / `8s_to_30s` / `30s_to_2m` / `over_2m`. + - `app_state` — состояние приложения в момент сбоя. + - `open_tabs` — размер `context.openTabs`, бакетами; `loading_tabs` — сколько из них в `isLoading`. + - Перенесены из worktree B: `bg_load_error_app_state` и `bg_load_error_after` (error 6). +- На `recovered_without/after_extension_reload`: + - `recovery_document` — `failed_navigation` (опоздавший ответ), `later_navigation`, `unattributed`; + - `recovery_after` — время от первого сбоя эпизода. +- Проверено на реальном WebKit (harness, медленный старт worker'а 5 с на пробуждении): сбой ушёл с `bg_ready_after=pending`, `bg_view_age=4s_to_8s`, а восстановление — с `recovery_document=failed_navigation`, `recovery_after=under_4s`. +- Пакет: 677 тестов зелёные. SwiftLint чистый. `validate-pixel-defs` проходит на iOS и macOS. +- Замечание по harness: `network_restarted` там иногда `true` без падения Network-процесса; вероятная причина — тестовый процесс перезапускает Network-процесс между загрузкой контекста и сбоем (не проверено). К продовой телеметрии это не относится, но в тестах этот флаг для классификации не годится. + ## Тесты Папка `Tests/WebExtensionsTests/CPMRepro/`, запуск из `SharedPackages/WebExtensions`: