[2026-11-10] eagle: work/projects/cpm-permanent-breakage-metric-tech-design-2026-11-10.md work/projects/cpm-project-summary-2026-11-03.md

This commit is contained in:
Alexey Martemyanov committed 2026-11-10 21:12:26 +06:00
1 parent cd5524945d
commit cd3d312009
2 files changed
+11 -3

No files matched your search

@@ -84,8 +84,16 @@ Measurements older than five minutes dropped; no minimum lifetime; tab process c
|---|---|---|
| 1, [#8025](https://github.com/duckduckgo/apple-browsers/pull/8025) | Remove ineffective recovery fixes and flags | pushed, in review |
| 2, `alex/cpm-pixel-cleanup` | Remove diagnostics, trim the episode pixel | local, tests pass, not pushed |
| 3, `alex/cpm-breakage-metric` (`1d73386e4c`) | This design: new pixels and removal of the old ones, one commit | local; package tests 1013 pass; both pixel validators pass; macOS app and tests build; iOS build running; not pushed |
| 4, `alex/cpm-init-marks` (`fe2fd58362`) | Marks and `last_stage` ([[cpm-wake-init-detection-tech-design-2026-11-10]]) | local; package tests 1023 pass; validators pass; not pushed. Extension: `alex/cpm-init-progress` has the new commit `908f9a62`, not pushed |
| 3, `alex/cpm-breakage-metric` (`b8a4361c26`) | This design: new pixels and removal of the old ones, one commit | local; package tests 1013 pass; both pixel validators pass; macOS app and tests build; iOS build running; not pushed |
| 4, `alex/cpm-init-marks` (`7bb259e9cf`) | Marks and `last_stage` ([[cpm-wake-init-detection-tech-design-2026-11-10]]) | local; package tests 1023 pass; validators pass; not pushed. Extension: `alex/cpm-init-progress` has the new commit `908f9a62`, not pushed |
### Known limits
- A page that never reaches `navigationFinished`, or a document alive when the app is killed, is not judged.
- If a new navigation fails after `navigationStarted`, the old document was already judged and reset; its late answer is not attributed.
- A mark or answer for a reloaded page with the same URL cannot be told from the old document's.
- The dashboard refresh is sent independently of `initResp`, so a page whose `initResp` was never delivered counts as answered unless the extension reports `response_failed`.
- `page_init_sent` travels through the same background, so `last_stage=none` cannot tell a lost mark from an init that never started.
### Cons
@@ -105,7 +105,7 @@ Open:
## 10 ноября, вечер: разрез PR и tech design
**Разрез.** Ветка `alex/cpm-breakage-pixel` (`e6419bb910`) смешивала чистку с новым пикселем и удаляла эпизодный пиксель сразу, против плана. Новая раскладка: PR 1 [#8025](https://github.com/duckduckgo/apple-browsers/pull/8025) без изменений. **PR 2** `alex/cpm-pixel-cleanup` (`f04c93730f`, поверх `6928847174`) уже содержит чистую чистку по плану: удалены recorder, `CPMMessagingDiagnostics`, delegate proxy, readiness observer и два флага с проводкой и пунктом debug-меню macOS; эпизодный пиксель урезан до `reason`, `outcome`, `tabs_affected`, `repeat_failures`, `reload_state`, без нового пикселя и без изменения таймеров. Проверено: `swift test` пакета WebExtensions 1104 теста, 0 падений; SwiftLint strict без замечаний на `CPMMessagingHealthMonitor`, `WebExtensionPixelFiring`, `WebExtensionManager`. Не проверено: сборка приложений iOS и macOS, валидатор определений пикселей (CI). Не запушена, PR не создан (нужна ссылка на задачу Asana и ревьюер; метка Danger, потому что параметры существующего пикселя меняются). **PR 3** (перманентный пиксель) и **PR 4** (метки init и `last_stage`, плюс расширение) ещё не начаты, ждут ревью tech design. Старые `alex/cpm-breakage-pixel` и `alex/cpm-init-diagnostics` остаются только источником.
**Разрез.** Ветка `alex/cpm-breakage-pixel` (`e6419bb910`) смешивала чистку с новым пикселем и удаляла эпизодный пиксель сразу, против плана. Новая раскладка: PR 1 [#8025](https://github.com/duckduckgo/apple-browsers/pull/8025) без изменений. **PR 2** `alex/cpm-pixel-cleanup` (`f04c93730f` + `f90d321308`, поверх `6928847174`) уже содержит чистую чистку по плану: удалены recorder, `CPMMessagingDiagnostics`, delegate proxy, readiness observer и два флага с проводкой и пунктом debug-меню macOS; эпизодный пиксель урезан до `reason`, `outcome`, `tabs_affected`, `repeat_failures`, `reload_state`, без нового пикселя и без изменения таймеров. Проверено: `swift test` пакета WebExtensions 1104 теста, 0 падений; SwiftLint strict без замечаний на `CPMMessagingHealthMonitor`, `WebExtensionPixelFiring`, `WebExtensionManager`. Не проверено: сборка приложений iOS и macOS, валидатор определений пикселей (CI). Не запушена, PR не создан (нужна ссылка на задачу Asana и ревьюер; метка Danger, потому что параметры существующего пикселя меняются). **PR 3** (перманентный пиксель) и **PR 4** (метки init и `last_stage`, плюс расширение) ещё не начаты, ждут ревью tech design. Старые `alex/cpm-breakage-pixel` и `alex/cpm-init-diagnostics` остаются только источником.
**Что неверно в `e6419bb910`** (проверено по коду): тихие замеры старше 5 минут сбрасываются (`discardExpiredState`); нет минимального времени жизни страницы; падение процесса вкладки засчитывается поломкой; `background` берётся из «загрузка ≥ 1 с» и одного общего сигнала; страницы, живущие до выхода приложения, не оцениваются; определение macOS без `pixelSource` и `channel`, суффиксы от iOS; утечка `navigationWaitContexts`; нет теста на разбор `cpmStage`.