[2026-10-30] eagle: work/projects/cpm-extension-js-review-2026-10-30.md
This commit is contained in:
1 parent
5f0cedc194
commit
b7a43a7512
1 file changed
+8
@@ -85,3 +85,11 @@ Pending state write отличается: он блокирует общий das
|
||||
Поэтому для отказа свежих navigation после успешно выполненного M4 нужны либо повторение trigger в новом worker, либо общий нижележащий сбой, либо ошибка самого recovery/измерения. Подтверждённого чисто extension-JS состояния, которое навсегда ломает новые документы и гарантированно переживает успешную полную замену контекста, в этом проходе не найдено. session storage здесь не следует путать с постоянной дисковой записью поломки.
|
||||
|
||||
Артефакты: global-config-probe.cjs / global-config-probe-results.json. Проверка не запускала реальный M4 на iPhone; fresh-instance control проверяет границу JS состояния.
|
||||
|
||||
## Общая очередь: связь между вкладками и лишние записи report
|
||||
|
||||
cpmState содержит dashboardStates по tabId, detectionCache, summaryEvents и globalErrors. Один экземпляр CookiePromptManagement обслуживает все вкладки. modifyCpmState добавляет операцию в один _stateQueue: getCpmState → callback изменения → await updateCpmState → await session.set. Ошибку/rejection цепочка ловит, после чего следующие операции могут идти; never-settled promise удерживает хвост. Это последовательная зависимость dashboard pipeline, не обязательная блокировка доставки initResp.
|
||||
|
||||
Дополнительная проверка shipped handler: 64 сообщения report от subframes с пустым state вызвали 64 записи полного cpmState при неизменившемся состоянии. Причина: case report всегда вызывает modifyCpmState, хотя все изменения в callback защищены isMainFrame; завершающая запись выполняется и для no-op. Это проверенное усиление нагрузки и связь iframe-событий одной страницы с задержкой dashboard других вкладок. Задержка на реальном storage и production outage этой проверкой не измерены. Результат сохранён в subframe-report-probe-results.json.
|
||||
|
||||
Другие общие места, совместимые с нормальной lifecycle-историей: pending remoteConfigJson; отсутствие RuntimeOnMessage route или отказ shared MessageRouter до autoconsent-handler; недоступный общий native bridge; повторяющийся JS exception на общем config/input; занятый SW JS thread; принятый native ответ, не прошедший current-document attribution. Для них нужны отдельные ingress/wait/rejection/ACK свидетельства. Нормальные bg_events описывают создание/удаление view и некоторые native/WebKit события, а не прохождение каждого из этих этапов. Их естественные production triggers пока не установлены.
|
||||
Reference in new issue
Block a user