[2026-09-23] eagle: work/projects/cpm-web-extension-breakage-validation.md
This commit is contained in:
1 parent
beac1f059d
commit
5bd4b155cb
1 file changed
+6
-8
@@ -8,7 +8,7 @@
|
|||||||
Есть два независимых класса проблем:
|
Есть два независимых класса проблем:
|
||||||
|
|
||||||
- **Per-tab lifecycle** исправлен в M1 и уже merged.
|
- **Per-tab lifecycle** исправлен в M1 и уже merged.
|
||||||
- **All-tabs CPM outage** идёт stack: M3 telemetry → M4 hung recovery → M5 bounded graveyard → M6 A/B.
|
- **All-tabs CPM outage:** M3 telemetry merged; M4 hung recovery и объединённый M5+M6 graveyard A/B — независимые follow-up PRs.
|
||||||
|
|
||||||
M4 перезагружает Web Extensions при первом сигнале `hung`, который подтверждает global CPM outage после предшествующего `messaging init failure`. Сам `messaging init failure` остаётся диагностическим: он не меняет состояние расширений.
|
M4 перезагружает Web Extensions при первом сигнале `hung`, который подтверждает global CPM outage после предшествующего `messaging init failure`. Сам `messaging init failure` остаётся диагностическим: он не меняет состояние расширений.
|
||||||
|
|
||||||
@@ -16,7 +16,7 @@ M4 перезагружает Web Extensions при первом сигнале
|
|||||||
|
|
||||||
| Проблема | Статус | Что делаем |
|
| Проблема | Статус | Что делаем |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
| Forced background-process death → persistent all-tabs CPM outage | **Подтверждено** | M3 измеряет production incidence; M5 лечит; M6 сравнивает control/treatment. |
|
| Forced background-process death → persistent all-tabs CPM outage | **Подтверждено** | M3 измеряет production incidence; объединённый M5+M6 PR лечит и сравнивает control/treatment. |
|
||||||
| Natural crash/memory/CPU termination → production outage | **Не проверено в production** | Один production release M3 до включения M5/M6. |
|
| Natural crash/memory/CPU termination → production outage | **Не проверено в production** | Один production release M3 до включения M5/M6. |
|
||||||
| Close Other Tabs, popup duplicate, pin/unpin/reorder/move/merge/window close | **Исправлено, merged** | M1 PR #6827. |
|
| Close Other Tabs, popup duplicate, pin/unpin/reorder/move/merge/window close | **Исправлено, merged** | M1 PR #6827. |
|
||||||
| Нестабильный Web Extension base URL | **Исправлено локально** | M2 задаёт deterministic base URL до load/reload и отвергает malformed identifier без crash. |
|
| Нестабильный Web Extension base URL | **Исправлено локально** | M2 задаёт deterministic base URL до load/reload и отвергает malformed identifier без crash. |
|
||||||
@@ -35,8 +35,7 @@ M4 перезагружает Web Extensions при первом сигнале
|
|||||||
| M2 stable base URL | `alex/cpm-stable-base-url` — `/Users/admin/DuckDuckGo/apple-browsers.git/cpm-stable-base-url` | **Production-ready:** 2 files; 11/11 targeted tests. Добавлена safe URL construction и negative validation вместо force-unwrap. |
|
| M2 stable base URL | `alex/cpm-stable-base-url` — `/Users/admin/DuckDuckGo/apple-browsers.git/cpm-stable-base-url` | **Production-ready:** 2 files; 11/11 targeted tests. Добавлена safe URL construction и negative validation вместо force-unwrap. |
|
||||||
| M3 attribution telemetry | `alex/cpm-failure-telemetry` — `/Users/admin/DuckDuckGo/apple-browsers.git/cpm-failure-telemetry` | **Merged 2026-09-23:** [PR #6844](https://github.com/duckduckgo/apple-browsers/pull/6844), CI green. Bucketed diagnostics, app launch/version attribution, `extension_updated`, `base_url_changed`, `recovery_from`, reload-error pixel; recorder и proxy имеют отдельные flags. [[cpm-m3-telemetry-privacy-triage]]. |
|
| M3 attribution telemetry | `alex/cpm-failure-telemetry` — `/Users/admin/DuckDuckGo/apple-browsers.git/cpm-failure-telemetry` | **Merged 2026-09-23:** [PR #6844](https://github.com/duckduckgo/apple-browsers/pull/6844), CI green. Bucketed diagnostics, app launch/version attribution, `extension_updated`, `base_url_changed`, `recovery_from`, reload-error pixel; recorder и proxy имеют отдельные flags. [[cpm-m3-telemetry-privacy-triage]]. |
|
||||||
| M4 hung recovery | `codex/cpm-hung-recovery` — `/Users/admin/DuckDuckGo/apple-browsers.git/cpm-hung-recovery` | **In progress:** первый `messaging init failure` открывает diagnostic episode; первый последующий `hung` перезагружает Web Extensions. |
|
| M4 hung recovery | `codex/cpm-hung-recovery` — `/Users/admin/DuckDuckGo/apple-browsers.git/cpm-hung-recovery` | **In progress:** первый `messaging init failure` открывает diagnostic episode; первый последующий `hung` перезагружает Web Extensions. |
|
||||||
| M5 graveyard mitigation | `alex/cpm-graveyard-mitigation` — `/Users/admin/DuckDuckGo/apple-browsers.git/cpm-graveyard-mitigation` | **Production-ready, default off; rebased onto merged M3:** one retained view maximum, 3-second bounded hold, stale release cancellation, unload/reload/runtime kill-switch cleanup. 122/122 targeted tests; iOS/macOS builds pass; earlier real forced-kill iOS E2E recovered with release at ≈3.15 s. |
|
| M5+M6 graveyard mitigation + A/B | `alex/cpm-graveyard-mitigation` — `/Users/admin/DuckDuckGo/apple-browsers.git/cpm-graveyard-mitigation` | **Production-ready, default off; one PR over merged M3:** one retained view maximum, 3-second bounded hold, weak scheduled release, runtime cleanup, lazy stable cohort enrollment, control/treatment isolation, bounded pending outcomes, operational and experiment pixels. 431/431 WebExtensions tests; iOS/macOS builds and pixel validators pass; earlier real forced-kill iOS E2E recovered with release at ≈3.15 s. |
|
||||||
| M6 graveyard A/B | `alex/cpm-graveyard-ab` — `/Users/admin/DuckDuckGo/apple-browsers.git/cpm-graveyard-ab` | **Production-ready code:** lazy exposure enrollment, stable cohorts, control/treatment isolation, bounded pending queue, operational pixels and standard `experiment_metrics` outcome. 421/421 WebExtensions tests; iOS/macOS app builds; iOS/macOS pixel validators. |
|
|
||||||
|
|
||||||
All milestone diffs pass `git diff --check`; changed Swift lines are within 150 columns.
|
All milestone diffs pass `git diff --check`; changed Swift lines are within 150 columns.
|
||||||
|
|
||||||
@@ -51,11 +50,10 @@ Stacked PRs:
|
|||||||
```
|
```
|
||||||
M3 telemetry — merged into origin/main
|
M3 telemetry — merged into origin/main
|
||||||
├── M4 hung recovery
|
├── M4 hung recovery
|
||||||
└── M5 graveyard mitigation
|
└── M5+M6 graveyard mitigation + A/B — one PR
|
||||||
└── M6 A/B experiment
|
|
||||||
```
|
```
|
||||||
|
|
||||||
M5 обновлён на `origin/main` (`2d58ad8cf4fae728a92e2aae0d3ec6073ddf49f2`) без commit: в worktree лежат только 10 unstaged файлов mitigation. M4 и M6 ещё не обновлены; M6 должен остаться stacked поверх M5.
|
M5+M6 объединены на `origin/main` (`2d58ad8cf4fae728a92e2aae0d3ec6073ddf49f2`) без commit: в worktree лежат 19 unstaged файлов mitigation и A/B. Старый M6 worktree сохранён только как источник/backup и не является отдельным PR. M4 не изменён.
|
||||||
|
|
||||||
Не включать generated `Package.resolved` churn.
|
Не включать generated `Package.resolved` churn.
|
||||||
|
|
||||||
@@ -71,7 +69,7 @@ Full definition and config draft: [[cpm-background-graveyard-experiment-definiti
|
|||||||
|
|
||||||
## Remaining gates
|
## Remaining gates
|
||||||
|
|
||||||
1. Обновить и проверить M4 поверх merged M3; затем обновить и проверить M6 поверх M5. Открыть M2/M4/M5/M6 PRs в topology выше.
|
1. Обновить и проверить M4 поверх merged M3. Открыть M2, M4 и объединённый M5+M6 PRs в topology выше.
|
||||||
2. Create separate iOS and macOS experiment-log tasks.
|
2. Create separate iOS and macOS experiment-log tasks.
|
||||||
3. Create Privacy Configuration + privacy/schema review tasks.
|
3. Create Privacy Configuration + privacy/schema review tasks.
|
||||||
4. Create Data Science sample-size/design and Native Apps Experiment Analysis task.
|
4. Create Data Science sample-size/design and Native Apps Experiment Analysis task.
|
||||||
|
|||||||
Reference in new issue
Block a user