[2026-10-16] eagle: work/projects/cpm-metrics-causes-and-mitigations-2026-10-16.md work/projects/cpm-status-2026-10-15.md
This commit is contained in:
1 parent
ee4cd992c1
commit
06e1d7e58f
2 files changed
+10
-2
No files matched your search
@@ -47,7 +47,7 @@ Percentages below are shares of all initial-failure / stuck daily reports in the
|
||||
- **P2, error 6:** error-6 cohort — **iOS init 6.1%, stuck 21.5%; macOS init 1.0%, stuck 1.9%**. controlled macOS suspension reproduces WebKit's roughly 30-second background-load timeout. The main iOS chains remain unproven. Local mitigation retries `loadBackgroundContent` once on the current context, with cooldown and recovery guards. Same-document dashboard **and page initResp** recovery passed twice. Full-context replacement was rejected after repeat page-response loss. Foreground-resume recovery remains untested.
|
||||
- **P3, loaded context without view:** no-view cohort — **iOS init 48.1%, stuck 10.9%; macOS init 3.3%, stuck 1.8%**. startup dominates on iOS. Base-URL cleanup can delay startup, but the full P3 failure remains unreproduced, including the 20,000-resource cache test. Stable extension base URL is an unfinished candidate.
|
||||
- **P4, first mid-session load:** Fix A signature — **iOS init 3.9%, stuck 0.9%**. Broader recent-load cohort: **iOS init 15.7%, stuck 6.0%; macOS init 20.0%, stuck 6.4%**. early init loss is reproduced; Fix A waits for first background readiness. The narrower signature is 129k → 4.6k iOS reports and can include reloads.
|
||||
- **P5, tab registration lost:** separate shares of all init/stuck reports are unavailable. closing a window containing a shared pinned tab makes WebKit unregister the surviving tab. Correct window/tab lifecycle reporting is the mitigation to develop. The mechanism covers macOS `tab_in_context=false`; other P5 cases remain unexplained. Separate 14 October selection: **13.6% (68 of 499)** of selected macOS P5 stuck reports have that flag; the earlier 494-report selection used different filters.
|
||||
- **P5, background fails to wake:** **14 October stuck: iOS 1.15% (1,953 / 169,115); macOS 3.57% (499 / 13,992)**. P5 init was not counted in that analysis. Closing a window with a shared pinned tab reproduces lost tab registration on macOS; fix window/tab lifecycle reporting. That signature appears in **13.6% of macOS P5** (68 / 499), or **0.49% of all macOS stuck**. Missing listener registration also reproduces P5 in controlled tests; its natural trigger remains unknown. The earlier 494-report selection used different filters.
|
||||
- **P6, controller mismatch:** broader detached-tab cohort — **iOS init 0.03%, stuck 0.05%; macOS init 6.2%, stuck 8.9%**. P6-only init/stuck shares are unavailable. a main `webExtensions` flag cycle creates a new manager while existing web views retain the old controller. Recreate/rebind affected views when replacing the manager; context reload alone cannot repair this. The conditional mechanism is reproduced, but its occurrence in production is unconfirmed. Selected macOS tails: **627 + 235** reports.
|
||||
- **Other:** **iOS init 5.3%, stuck 12.5%; macOS init 23.4%, stuck 22.2%**. Tests reproduce slow settings replies, lost messages, and missing dashboard confirmation even when the page receives its answer. Some iOS reports also resemble slow wake-up (P1). Their individual shares are unknown. Mitigations depend on which step fails: wait for background readiness, reduce settings delays, or fix message/confirmation delivery.
|
||||
|
||||
|
||||
@@ -198,7 +198,7 @@ multiIf(
|
||||
**Среда:** macOS 26.7.1 (25G241), Xcode 27.1 (27A9275), системный WebKit. Прогон на macOS проверяет механизм; перенос на iOS требует отдельной проверки.
|
||||
|
||||
**Уточнение данных перед тестами:** read-only перепроверка ClickHouse за 14 октября, `stuck.daily`, iOS 7.240+/macOS 1.210+:
|
||||
- P5: в выборке хвоста `proxy_on>dealloc>view>proxy_on>dealloc` без error 6/Network replacement/scripts=false — 1953 iOS и 499 macOS, `bg_view_alive=false` во всех снимках; последняя `view` везде старше 30 с. Это определение чуть шире строки P5 выше, поэтому 499 не подменяет прежние 494 без сверки дополнительных фильтров. На macOS 68 снимков с `tab_in_context=false`; на iOS у 1299 не разрешилась вкладка для табличных диагностических полей.
|
||||
- P5: в выборке хвоста `proxy_on>dealloc>view>proxy_on>dealloc` без error 6/Network replacement/scripts=false — 1953 iOS и 499 macOS, `bg_view_alive=false` во всех снимках; последняя `view` везде старше 30 с. **Доли от всех stuck.daily за тот же день: iOS 1.15% (1953 / 169115), macOS 3.57% (499 / 13992).** Знаменатели — сохранённый исходный запрос volumes за 14 октября, те же версии с диагностикой; это не трёхдневные totals. P5 среди init в том анализе не считался. Это определение чуть шире строки P5 выше, поэтому 499 не подменяет прежние 494 без сверки дополнительных фильтров. На macOS 68 снимков с `tab_in_context=false`; на iOS у 1299 не разрешилась вкладка для табличных диагностических полей.
|
||||
- P6: `load>view>proxy_on>dealloc` — 627 macOS; `load>view>proxy_on` — 235. В обеих подгруппах `context_loaded=true`, `tab_in_context=true`, `tab_controller_match=false`, `tab_has_ext_scripts=false`. В первых двух минутах запуска — 468/627 и 234/235. **235 — это хвост без dealloc, а не маркер extension_updated**; варианты с extension_updated существуют отдельно.
|
||||
|
||||
**Проверяемые гипотезы:**
|
||||
@@ -886,3 +886,11 @@ SwiftPM автоматически обновил только package-local con
|
||||
`isApplicationInBackground` перенесён из diagnostics recorder в самостоятельный lifecycle provider менеджера. iOS factory передаёт прямое чтение `UIApplication.shared.applicationState`, даже при `cpmDiagnosticsRecorder=OFF`. Прежний read-only diagnostics getter удалён. Добавлены unit-регрессии coexistence/replacement removal, diagnostics=nil + background→foreground, runtime recovery kill switch и отказ retry superseded context.
|
||||
|
||||
Два install/upgrade-сценария #7379 перенесены с сохранением test method names **в текущий app-hosted harness** (адаптация исходного SPM harness, без копирования остальных research-тестов). Проверяются реальные feature-flag/lifecycle install и version-triggered upgrade, настоящий native dashboard + page initResp; worker новой установки/версии задерживается на 5 s. Отдельно записываются реальные context sets в notifications, чтобы подтвердить coexistence при upgrade. Запущены общий signed build для четырёх app-кейсов и targeted unit suites. Strict lint: 16 Swift files, 0 violations. Результаты предыдущего 2/2 прогона остаются историей и не заменяют проверку новой сборки.
|
||||
|
||||
### Общий прогон новой реализации — 16 октября, Бишкек
|
||||
|
||||
`/private/tmp/cpm-p1-p2-replacement-20261016/enabled.xcresult`: **4/4 PASS**, 0 failures, 0 skips. P2 84.925 s, install-during-session 5.638 s, P1 49.380 s, upgrade-during-session 5.854 s. Upgrade JSON evidence фиксирует настоящий переход context sets `[0,1,2,1]`: новая версия реально загружена до выгрузки старой; первый документ получает и native dashboard, и page initResp.
|
||||
|
||||
Targeted unit suites: **170 PASS**, включая 5 новых manager tests (`unit-cached.log`). Обычный запуск сначала завис на обновлении git dependency, остановлен только собственный SwiftPM процесс; повтор `--skip-update` успешно использовал уже скачанные зависимости. Это инфраструктурный fetch, не test failure. iOS Simulator **WebExtensions module build PASS** (`ios-module-build.log`, generic simulator destination); это компиляция общего модуля, не запуск приложения/iOS lifecycle. Signed macOS app и загруженный XCTest bundle проверены, strict verification PASS (`signing.txt`).
|
||||
|
||||
Начат повтор install/upgrade по 10 iterations (`install-upgrade-repeat.xcresult`); после него запланирован тот же общий app-набор с выключенными flags. README актуализирован: теперь 4 app methods + 9 новых unit methods (4 прежних lifecycle + 5 manager), а 22 по-прежнему весь отдельный research-набор. Компилируемые исходники с момента сборки не менялись; во время проверки менялся только README.
|
||||
Reference in new issue
Block a user