From 74db3eaba6174370a431cb859e1678968825dbf4 Mon Sep 17 00:00:00 2001 From: Alexey Martemyanov Date: Wed, 11 Nov 2026 17:35:42 +0600 Subject: [PATCH] [2026-11-11] eagle: work/projects/cpm-permanent-breakage-metric-tech-design-2026-11-10.md work/projects/cpm-project-summary-2026-11-03.md work/projects/cpm-wake-init-detection-tech-design-2026-11-10.md --- .../cpm-permanent-breakage-metric-tech-design-2026-11-10.md | 6 +++--- work/projects/cpm-project-summary-2026-11-03.md | 6 +++--- .../cpm-wake-init-detection-tech-design-2026-11-10.md | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/work/projects/cpm-permanent-breakage-metric-tech-design-2026-11-10.md b/work/projects/cpm-permanent-breakage-metric-tech-design-2026-11-10.md index f1774ae5..84ec3337 100644 --- a/work/projects/cpm-permanent-breakage-metric-tech-design-2026-11-10.md +++ b/work/projects/cpm-permanent-breakage-metric-tech-design-2026-11-10.md @@ -83,9 +83,9 @@ The episode pixel `web_extension_cpm_episode` with its timers, episode state and | PR | Content | State, 11 Nov | |---|---|---| | 1, [#8025](https://github.com/duckduckgo/apple-browsers/pull/8025) | Remove ineffective recovery fixes and flags | pushed, in review | -| 2, `alex/cpm-pixel-cleanup` (`de24abf498`) | All removal. The monitor shrinks to learning which extension tab belongs to which app tab and letting the manager reset its restart budget. Tabs report one commit event with an eligibility flag; navigation start, finish and failure events are gone. | local, one commit on `6928847174`; 1004 package tests pass; not pushed. iOS error pages are ineligible; back/forward is read at navigation start | -| 3, `alex/cpm-breakage-metric` (`9b9281e849`) | Per-tab silence, the two pixels, `tabs`, definitions, adapters | local, one commit on PR 2; 1048 package tests pass; validators pass; not pushed | -| 4, `alex/cpm-init-marks` (`d99f23020d`) | Init progress marks and `last_stage`; extension #3727 | local, one commit on PR 3; 1071 package tests pass; not pushed | +| 2, `alex/cpm-pixel-cleanup` (`31dfc4ab61`) | All removal. The monitor shrinks to learning which extension tab belongs to which app tab and letting the manager reset its restart budget. Tabs report one commit event with the kind of navigation (ordinary, error page, history restore, restored session); the monitor decides from the kind and the scheme whether the page can run the extension. Navigation start, finish and failure events are gone. | local, one commit on `6928847174`; 1004 package tests pass; not pushed. iOS error pages are ineligible; back/forward is read at navigation start | +| 3, `alex/cpm-breakage-metric` (`7b1960a90d`) | Per-tab silence, the two pixels, `tabs`, definitions, adapters | local, one commit on PR 2; 1048 package tests pass; validators pass; not pushed | +| 4, `alex/cpm-init-marks` (`2ce6b92a85`) | Init progress marks and `last_stage`; extension #3727 | local, one commit on PR 3; 1071 package tests pass; not pushed | ### Known limits diff --git a/work/projects/cpm-project-summary-2026-11-03.md b/work/projects/cpm-project-summary-2026-11-03.md index 9986c047..9a061e42 100644 --- a/work/projects/cpm-project-summary-2026-11-03.md +++ b/work/projects/cpm-project-summary-2026-11-03.md @@ -123,9 +123,9 @@ Open: **Пиксели.** Остаются два: `web_extension_cpm_breakage` (параметр `tabs`: `one` или `many`, то есть была ли уже молчащая вкладка с последнего сообщения расширения) и `web_extension_cpm_breakage_persistent` (вторая молчащая вкладка в серии, один раз на серию, без параметров). Старые `web_extension_cpm_episode`, `web_extension_cpm_background_load_restart`, `web_extension_cpm_network_process_recovery_applied` удалены в PR 2, отдельного PR 5 нет. Метки `cpmInitProgress` и `last_stage` (PR 4) привязаны к молчащей вкладке; метка никогда не считается ответом. **Раскладка (локально, по одному коммиту на ворктри, не запушено, PR не создавались).** -- PR 2 `alex/cpm-pixel-cleanup`: `de24abf498` на `6928847174`. Вся чистка, монитор урезан до сопоставления вкладок и сброса бюджета перезапусков; вкладки шлют одно событие коммита с флагом `isEligible` (iOS: error page не измеряется, back/forward читается на старте навигации), события старта/финиша/ошибки навигации удалены. 1004 теста пакета. -- PR 3 `alex/cpm-breakage-metric`: `9b9281e849` на PR 2. Молчание по вкладкам, два пикселя, определения обеих платформ, адаптеры. После ревью: вкладки, замолчавшие в одной проверке, все `many`; сообщение до коммита отвечает и для ещё не выученной вкладки; монотонные часы; refresh без ответа (`config_unavailable`/`settings_missing`) не ответ, но сбрасывает бюджет перезапусков. 1048 тестов пакета. -- PR 4 `alex/cpm-init-marks`: `d99f23020d` на PR 3. Метки init по вкладкам и `last_stage`; метка учитывается только для текущей страницы вкладки, метки до коммита приписываются новой странице. 1071 тест пакета. Расширение `#3727` не менялось. +- PR 2 `alex/cpm-pixel-cleanup`: `31dfc4ab61` на `6928847174`. Вся чистка, монитор урезан до сопоставления вкладок и сброса бюджета перезапусков; вкладки шлют одно событие коммита с видом навигации `CPMNavigationKind` (ordinary, error page, back/forward, restored session; iOS читает back/forward на старте навигации), а пригодность страницы (http(s) и вид `other`) решает монитор; события старта/финиша/ошибки навигации удалены. 1004 теста пакета. +- PR 3 `alex/cpm-breakage-metric`: `7b1960a90d` на PR 2. Молчание по вкладкам, два пикселя, определения обеих платформ, адаптеры. После ревью: вкладки, замолчавшие в одной проверке, все `many`; сообщение до коммита отвечает и для ещё не выученной вкладки; монотонные часы; refresh без ответа (`config_unavailable`/`settings_missing`) не ответ, но сбрасывает бюджет перезапусков. 1048 тестов пакета. +- PR 4 `alex/cpm-init-marks`: `2ce6b92a85` на PR 3. Метки init по вкладкам и `last_stage`; метка учитывается только для текущей страницы вкладки, метки до коммита приписываются новой странице. 1071 тест пакета. Расширение `#3727` не менялось. Старые коммиты сохранены как `refs/backup/cpm-old-pr3` (`82d29f412a`) и `refs/backup/cpm-old-pr4` (`e8dc96dec2`) в репозитории `apple-browsers.git`. **Проверено:** `swift test` пакета на каждой ветке, мутационные проверки (ответ после проверки, нет сдвига на приостановку, persistent на одной вкладке, нет допуска, метка считается ответом, ранг понижается), валидаторы определений пикселей обеих платформ, SwiftLint strict на изменённых файлах, `xcodebuild build-for-testing` macOS. **Не запускалось:** app-hosted тесты macOS и iOS (кроме трёх тестов `NavigationPixelNavigationResponderTests`, запущенных до запрета), сборка iOS (падает на двух script phases, окружение), реальный WebKit. diff --git a/work/projects/cpm-wake-init-detection-tech-design-2026-11-10.md b/work/projects/cpm-wake-init-detection-tech-design-2026-11-10.md index adcccef8..d65c067d 100644 --- a/work/projects/cpm-wake-init-detection-tech-design-2026-11-10.md +++ b/work/projects/cpm-wake-init-detection-tech-design-2026-11-10.md @@ -171,7 +171,7 @@ None. The comparison is across releases and channels (see the heisenbug risk). **Operational** -- Order of landing: native handler and `last_stage` (PR 4, `alex/cpm-init-marks`, `d99f23020d`, on top of PR 3 `9b9281e849`) can ship before the extension; the extension PR merges after review and enters the app through the usual embedded-files update. +- Order of landing: native handler and `last_stage` (PR 4, `alex/cpm-init-marks`, `2ce6b92a85`, on top of PR 3 `7b1960a90d`) can ship before the extension; the extension PR merges after review and enters the app through the usual embedded-files update. - After the first public release with marks: `last_stage × background × platform` over the breakage count, and the share of breakages by stage, to pick the fix according to the table above. Data checks as in the companion design. - The marks and the parameter are temporary investigation tools. Remove `config_read`, `settings_checked`, `site_checked` and `last_stage` when the wake group has a fix or is closed (project plan: close the project and reset the target if the new metrics show nothing actionable). The definitions have no expiry date, so the removal is a follow-up PR. - Not in scope: per-stage durations (a time bucket between marks), the background's own lifecycle metrics, and the idle-unload distance. They are the next candidates if `last_stage` leaves the wake group unexplained.