[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
This commit is contained in:
1 parent
364832bcd1
commit
dd0fc99a8d
3 files changed
+9
-9
No files matched your search
@@ -84,8 +84,8 @@ The episode pixel `web_extension_cpm_episode` with its timers, episode state and
|
||||
|---|---|---|
|
||||
| 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` (`27b2c1f5e9`) | 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` (`68be37f16a`) | Init progress marks and `last_stage`; extension #3727 | local, one commit on PR 3; 1071 package tests pass; not pushed |
|
||||
| 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 |
|
||||
|
||||
### Known limits
|
||||
|
||||
@@ -115,7 +115,7 @@ The episode pixel `web_extension_cpm_episode` with its timers, episode state and
|
||||
- A page that works but whose message is not attributed counts as silent when the mapping is wrong. Mitigation: ambiguous messages answer all candidates.
|
||||
- Pixel volume for a persistently broken install: one count request per silent tab.
|
||||
- The Debug "Simulate CPM Messaging Breakage" switch must keep hiding messages (it does; tests cover it).
|
||||
- `expires` on the two definitions follows the existing episode definition (2027-01-15), but `REVIEW-pixels.md` says a permanent pixel has no `expires`. Decide before merge.
|
||||
- Both definitions have no `expires`: they are the permanent metric (`REVIEW-pixels.md`).
|
||||
|
||||
## Testing
|
||||
|
||||
@@ -136,6 +136,6 @@ The episode pixel `web_extension_cpm_episode` with its timers, episode state and
|
||||
|
||||
**Experimentation:** none.
|
||||
|
||||
**Operational:** pixel expiry 2027-01-15 as existing definitions (see Risks). Danger label for the removed pixels. Data checks: `metrics.pixels_aggregation` and `metrics._pixels_new` (`pixel_id = 'web'`).
|
||||
**Operational:** no pixel expiry (permanent metric). Danger label for the removed pixels. Data checks: `metrics.pixels_aggregation` and `metrics._pixels_new` (`pixel_id = 'web'`).
|
||||
|
||||
**Localization / Internationalization:** none.
|
||||
@@ -124,10 +124,10 @@ Open:
|
||||
|
||||
**Раскладка (локально, по одному коммиту на ворктри, не запушено, PR не создавались).**
|
||||
- PR 2 `alex/cpm-pixel-cleanup`: `de24abf498` на `6928847174`. Вся чистка, монитор урезан до сопоставления вкладок и сброса бюджета перезапусков; вкладки шлют одно событие коммита с флагом `isEligible` (iOS: error page не измеряется, back/forward читается на старте навигации), события старта/финиша/ошибки навигации удалены. 1004 теста пакета.
|
||||
- PR 3 `alex/cpm-breakage-metric`: `27b2c1f5e9` на PR 2. Молчание по вкладкам, два пикселя, определения обеих платформ, адаптеры. После ревью: вкладки, замолчавшие в одной проверке, все `many`; сообщение до коммита отвечает и для ещё не выученной вкладки; монотонные часы; refresh без ответа (`config_unavailable`/`settings_missing`) не ответ, но сбрасывает бюджет перезапусков. 1048 тестов пакета.
|
||||
- PR 4 `alex/cpm-init-marks`: `68be37f16a` на PR 3. Метки init по вкладкам и `last_stage`; метка учитывается только для текущей страницы вкладки, метки до коммита приписываются новой странице. 1071 тест пакета. Расширение `#3727` не менялось.
|
||||
- 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` не менялось.
|
||||
Старые коммиты сохранены как `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.
|
||||
|
||||
**Открытые проблемы подхода:** привязка первого сообщения по URL (две вкладки с одним URL, смена path в SPA), страницы без инъекции расширения выглядят молчащими, оценка только на событиях (молчащая вкладка в простаивающем приложении, которое потом убили, не репортится), допуск 2 с может засчитать сообщение предыдущей страницы, потеря нативного канала даёт `tabs=many`, бюджет перезапусков теперь сбрасывается любым сообщением текущего расширения, нет базовой серии после удаления старых пикселей, `expires` на новых определениях противоречит правилу REVIEW-pixels для постоянных пикселей.
|
||||
**Открытые проблемы подхода:** привязка первого сообщения по URL (две вкладки с одним URL, смена path в SPA), страницы без инъекции расширения выглядят молчащими, оценка только на событиях (молчащая вкладка в простаивающем приложении, которое потом убили, не репортится), допуск 2 с может засчитать сообщение предыдущей страницы, потеря нативного канала даёт `tabs=many`, бюджет перезапусков теперь сбрасывается любым сообщением текущего расширения, нет базовой серии после удаления старых пикселей, `expires` с новых определений убран: метрика постоянная (REVIEW-pixels).
|
||||
@@ -171,9 +171,9 @@ 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`, `68be37f16a`, on top of PR 3 `27b2c1f5e9`) 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`, `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.
|
||||
- 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 expiry date follows the pixel definition (2027-01-15).
|
||||
- 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.
|
||||
|
||||
**Localization / Internationalization**
|
||||
|
||||
Reference in new issue
Block a user