From 72cf47c912c93c18e97b79fbe56f32f553a203ef Mon Sep 17 00:00:00 2001 From: Alexey Martemyanov Date: Mon, 19 Oct 2026 17:19:59 +0600 Subject: [PATCH] [2026-10-19] eagle: work/projects/cpm-readiness-telemetry-tech-design-2026-10-15.md work/projects/cpm-status-2026-10-15.md work/projects/cpm-web-extension-code-guide-2026-10-09.md --- ...readiness-telemetry-tech-design-2026-10-15.md | 16 ++++++++++++++++ work/projects/cpm-status-2026-10-15.md | 16 ++++++++++++++++ .../cpm-web-extension-code-guide-2026-10-09.md | 16 ++++++++++++++++ 3 files changed, 48 insertions(+) diff --git a/work/projects/cpm-readiness-telemetry-tech-design-2026-10-15.md b/work/projects/cpm-readiness-telemetry-tech-design-2026-10-15.md index 3f61de3e..8daeac63 100755 --- a/work/projects/cpm-readiness-telemetry-tech-design-2026-10-15.md +++ b/work/projects/cpm-readiness-telemetry-tech-design-2026-10-15.md @@ -1,3 +1,5 @@ +> **Актуально — 19 октября 2026, uninstall fix опубликован.** [#7379](https://github.com/duckduckgo/apple-browsers/pull/7379): production **`e970e8c90e`**, 6 commits / 22 paths; отдельный review-only harness **`e380cf98f7`**, 12 paths вне main. Удаление активного CPM context отменяет pending late-document recovery; удаление старой upgrade-версии и ошибка unload сохраняют recovery. **190 unit PASS**, red-before-fix 2 PASS / 1 FAIL, signed macOS и iOS Simulator builds PASS, strict lint 11 / 0. ON → OFF → ON на новом app head выполняется; итог будет записан после завершения. PR description и reviewer flag steps актуализированы с сохранением ручных правок. Формы оставлены в прежнем виде; late reload flag default disabled. Предыдущие heads/results ниже — история. + > **Актуально — 19 октября 2026, полный повторный review #7379.** Проверен локальный `5708197362` против #7376: 22 changed paths, **187 существующих тестов PASS + 1 новый probe FAIL**. Новый P2: uninstall активного CPM context не отменяет pending late-document recovery. Общий launch→navigation deadline и привязка recovery pixel к точной WKNavigation исправлены локально и прошли повторные регрессии; усиление защиты форм явно отложено пользователем, исходная проверка сохранена за default-disabled флагом. В GitHub пока `08866c7eda` (CI: 48 SUCCESS / 21 SKIPPED), новые production commits не опубликованы. Локальный review-only harness `4308751d59` синхронизирован; его новый ON/OFF/ON ещё не запускался. Подробности — в конце; прежние heads/results ниже относятся к истории. > **Актуально — 16 октября 2026, PR review fixes.** В [#7379](https://github.com/duckduckgo/apple-browsers/pull/7379) проверены оба inline замечания: cancellation уже покрыта, повторные 5 секунд на каждую navigation исправлены общим deadline на startup. Production **`08866c7eda`**, 3 commits / 21 paths; review-only harness **`3f4d755511`**, 12 test-only paths, вне main. Проверки: red-before-fix **2 FAIL**, после исправления **182 unit PASS**, signed macOS build и iOS shared-module build PASS, strict lint **8 / 0**; на одних app/XCTest binaries **ON 8 PASS → OFF 6 ожидаемых functional FAIL → ON 8 PASS**, без skips. Оба review threads resolved; Danger 0 failures, только PR-size advisory; flag tracking links добавлены, defaults не менялись. Пользовательские правки и reviewer steps сохранены. Подробности этого review — в конце. Более ранние heads/results ниже сохранены как история. @@ -394,3 +396,17 @@ CI snapshot `08866c7eda` на 16:19 UTC: 31 SUCCESS, 12 SKIPPED, 3 QUEUED, 5 IN_ **Harness и публикация.** Локальный `codex/cpm-fix-init-loss-integration-tests / 4308751d593bcc63abfb4baaced83e35bd19255f` обычным merge синхронизирован с `5708197362`; README исправлен на 26 новых shared regressions и прежнюю защиту форм. Над production по-прежнему ровно 12 harness-only paths, 8 app methods и два ON/OFF schemes; они не идут в main. Удалён только собственный generated Package.resolved diff от предыдущего test run. Рабочая production branch чистая. Production и harness commits пока не push; PR body не перезаписан. Старый ON 8 PASS → OFF 6 functional FAIL → ON 8 PASS относится к опубликованному `08866c7eda` / test branch `3f4d755511`; на новом локальном head этот app cycle ещё не повторён. **Замечание о стиле URL check.** Для HTTP(S) подходит `URL.NavigationalScheme.hypertextSchemes` из Common; initializer сохраняет регистр, поэтому lowercased необходимо сохранить. Это ответ на вопрос, source replacement не выполнялся. + +## 19 октября 2026 — исправление uninstall/preflight race и push + +Production **`e970e8c90eca76e55217f75c13122735a72664c5`**, branch `alex/cpm-fix-init-loss`, [#7379](https://github.com/duckduckgo/apple-browsers/pull/7379), база #7376 / `713d67419a`. Опубликованы все три локальных commits после `08866c7eda`; итоговый diff — 6 commits / 22 paths. Push обычный fast-forward, без переписывания истории. Review-only **`codex/cpm-fix-init-loss-integration-tests / e380cf98f7e9709085ce76289211f3e1e43c8395`** синхронизирована обычным merge, над production по-прежнему ровно 12 harness-only paths; они не идут в main. + +**Исправление.** До unload запоминается, удаляется ли текущий выбранный embedded context. После успешного unload его background document recovery инвалидируется, включая уже ожидающую async safety preflight. Неудачный unload выходит до invalidation; удаление старого context при upgrade не отменяет recovery replacement. Добавлены постоянные shared regressions `testUninstallingActiveEmbeddedContextCancelsPendingDocumentRecovery`, `testUninstallingOldEmbeddedContextPreservesReplacementDocumentRecovery` и `testFailedUninstallPreservesActiveDocumentRecovery`. Первые два используют production loader с настоящими WKWebExtensionContext; третий моделирует ошибку unload и проверяет сохранение live context. HTTP(S)-checks в native navigation callers macOS/iOS переведены на `URL.NavigationalScheme.hypertextSchemes` с сохранением lowercased. + +**Проверки.** До fix новые три tests: **2 PASS / 1 functional FAIL** — активное удаление оставляло выполняющийся reload callback. После fix пять выбранных shared suites: **190 PASS / 0 failures** (13 background diagnostics + 13 readiness recovery + 78 monitor + 35 lifecycle + 51 manager), всего 29 новых shared regression methods относительно базы PR. Unit run выполнен в изолированной копии 96 побайтно совпадающих production source files. Полные macOS и iOS Simulator builds — PASS; macOS app подписан Apple Development, team HKE973VLUW, strict verification всего app bundle PASS. Strict lint всех 11 непушенных Swift files — 0 violations. Схемы/имена/параметры/frequency pixels не менялись. + +**Формы и flags.** По явному указанию пользователя новая защита форм не возвращена. Original JavaScript predicate побайтно совпадает с `08866c7eda`; known limitation controlled/defaultValue и Shadow DOM остаётся. Независимый `webExtensions.cpmLateBackgroundDocumentRecovery` всё ещё default disabled на обеих платформах. Deadline launch→navigation и attribution по конкретной WKNavigation сохранены из предыдущих локальных исправлений и теперь опубликованы. + +**Документация и app validation.** PR body точечно уточняет общий launch/navigation deadline, invalidation при удалении активного context и точную WKNavigation attribution. Пользовательские правки, testing branch link и ON 8 PASS → OFF 6 functional FAIL → ON 8 PASS instructions сохранены. README harness обновлён: 8 новых manager regressions / 29 новых shared methods. На новом head запущен dedicated signed app cycle; текущий app ON → OFF → ON ещё выполняется. Старые app результаты не перенесены на новый head. + +Артефакты: `/private/tmp/cpm-pr7379-uninstall-fix-20261019/` (`unit-green.log`, `unit-evidence.json`, `lint.log`, `mac-build.log`, `ios-build.log`, signature logs, `heads.json`, PR snapshots); red control — `/private/tmp/cpm-pr7379-full-review-20261019/uninstall-red.log`. diff --git a/work/projects/cpm-status-2026-10-15.md b/work/projects/cpm-status-2026-10-15.md index b2647699..c6691d38 100755 --- a/work/projects/cpm-status-2026-10-15.md +++ b/work/projects/cpm-status-2026-10-15.md @@ -6,6 +6,8 @@ tags: - cpm - status --- +> **Актуально — 19 октября 2026, uninstall fix опубликован.** [#7379](https://github.com/duckduckgo/apple-browsers/pull/7379): production **`e970e8c90e`**, 6 commits / 22 paths; отдельный review-only harness **`e380cf98f7`**, 12 paths вне main. Удаление активного CPM context отменяет pending late-document recovery; удаление старой upgrade-версии и ошибка unload сохраняют recovery. **190 unit PASS**, red-before-fix 2 PASS / 1 FAIL, signed macOS и iOS Simulator builds PASS, strict lint 11 / 0. ON → OFF → ON на новом app head выполняется; итог будет записан после завершения. PR description и reviewer flag steps актуализированы с сохранением ручных правок. Формы оставлены в прежнем виде; late reload flag default disabled. Предыдущие heads/results ниже — история. + > **Актуально — 19 октября 2026, полный повторный review #7379.** Проверен локальный `5708197362` против #7376: 22 changed paths, **187 существующих тестов PASS + 1 новый probe FAIL**. Новый P2: uninstall активного CPM context не отменяет pending late-document recovery. Общий launch→navigation deadline и привязка recovery pixel к точной WKNavigation исправлены локально и прошли повторные регрессии; усиление защиты форм явно отложено пользователем, исходная проверка сохранена за default-disabled флагом. В GitHub пока `08866c7eda` (CI: 48 SUCCESS / 21 SKIPPED), новые production commits не опубликованы. Локальный review-only harness `4308751d59` синхронизирован; его новый ON/OFF/ON ещё не запускался. Подробности — в конце; прежние heads/results ниже относятся к истории. > **Актуально — 16 октября 2026, PR review fixes.** В [#7379](https://github.com/duckduckgo/apple-browsers/pull/7379) проверены оба inline замечания: cancellation уже покрыта, повторные 5 секунд на каждую navigation исправлены общим deadline на startup. Production **`08866c7eda`**, 3 commits / 21 paths; review-only harness **`3f4d755511`**, 12 test-only paths, вне main. Проверки: red-before-fix **2 FAIL**, после исправления **182 unit PASS**, signed macOS build и iOS shared-module build PASS, strict lint **8 / 0**; на одних app/XCTest binaries **ON 8 PASS → OFF 6 ожидаемых functional FAIL → ON 8 PASS**, без skips. Оба review threads resolved; Danger 0 failures, только PR-size advisory; flag tracking links добавлены, defaults не менялись. Пользовательские правки и reviewer steps сохранены. Подробности этого review — в конце. Более ранние heads/results ниже сохранены как история. @@ -1200,3 +1202,17 @@ CI snapshot `08866c7eda` на 16:19 UTC: 31 SUCCESS, 12 SKIPPED, 3 QUEUED, 5 IN_ **Harness и публикация.** Локальный `codex/cpm-fix-init-loss-integration-tests / 4308751d593bcc63abfb4baaced83e35bd19255f` обычным merge синхронизирован с `5708197362`; README исправлен на 26 новых shared regressions и прежнюю защиту форм. Над production по-прежнему ровно 12 harness-only paths, 8 app methods и два ON/OFF schemes; они не идут в main. Удалён только собственный generated Package.resolved diff от предыдущего test run. Рабочая production branch чистая. Production и harness commits пока не push; PR body не перезаписан. Старый ON 8 PASS → OFF 6 functional FAIL → ON 8 PASS относится к опубликованному `08866c7eda` / test branch `3f4d755511`; на новом локальном head этот app cycle ещё не повторён. **Замечание о стиле URL check.** Для HTTP(S) подходит `URL.NavigationalScheme.hypertextSchemes` из Common; initializer сохраняет регистр, поэтому lowercased необходимо сохранить. Это ответ на вопрос, source replacement не выполнялся. + +## 19 октября 2026 — исправление uninstall/preflight race и push + +Production **`e970e8c90eca76e55217f75c13122735a72664c5`**, branch `alex/cpm-fix-init-loss`, [#7379](https://github.com/duckduckgo/apple-browsers/pull/7379), база #7376 / `713d67419a`. Опубликованы все три локальных commits после `08866c7eda`; итоговый diff — 6 commits / 22 paths. Push обычный fast-forward, без переписывания истории. Review-only **`codex/cpm-fix-init-loss-integration-tests / e380cf98f7e9709085ce76289211f3e1e43c8395`** синхронизирована обычным merge, над production по-прежнему ровно 12 harness-only paths; они не идут в main. + +**Исправление.** До unload запоминается, удаляется ли текущий выбранный embedded context. После успешного unload его background document recovery инвалидируется, включая уже ожидающую async safety preflight. Неудачный unload выходит до invalidation; удаление старого context при upgrade не отменяет recovery replacement. Добавлены постоянные shared regressions `testUninstallingActiveEmbeddedContextCancelsPendingDocumentRecovery`, `testUninstallingOldEmbeddedContextPreservesReplacementDocumentRecovery` и `testFailedUninstallPreservesActiveDocumentRecovery`. Первые два используют production loader с настоящими WKWebExtensionContext; третий моделирует ошибку unload и проверяет сохранение live context. HTTP(S)-checks в native navigation callers macOS/iOS переведены на `URL.NavigationalScheme.hypertextSchemes` с сохранением lowercased. + +**Проверки.** До fix новые три tests: **2 PASS / 1 functional FAIL** — активное удаление оставляло выполняющийся reload callback. После fix пять выбранных shared suites: **190 PASS / 0 failures** (13 background diagnostics + 13 readiness recovery + 78 monitor + 35 lifecycle + 51 manager), всего 29 новых shared regression methods относительно базы PR. Unit run выполнен в изолированной копии 96 побайтно совпадающих production source files. Полные macOS и iOS Simulator builds — PASS; macOS app подписан Apple Development, team HKE973VLUW, strict verification всего app bundle PASS. Strict lint всех 11 непушенных Swift files — 0 violations. Схемы/имена/параметры/frequency pixels не менялись. + +**Формы и flags.** По явному указанию пользователя новая защита форм не возвращена. Original JavaScript predicate побайтно совпадает с `08866c7eda`; known limitation controlled/defaultValue и Shadow DOM остаётся. Независимый `webExtensions.cpmLateBackgroundDocumentRecovery` всё ещё default disabled на обеих платформах. Deadline launch→navigation и attribution по конкретной WKNavigation сохранены из предыдущих локальных исправлений и теперь опубликованы. + +**Документация и app validation.** PR body точечно уточняет общий launch/navigation deadline, invalidation при удалении активного context и точную WKNavigation attribution. Пользовательские правки, testing branch link и ON 8 PASS → OFF 6 functional FAIL → ON 8 PASS instructions сохранены. README harness обновлён: 8 новых manager regressions / 29 новых shared methods. На новом head запущен dedicated signed app cycle; текущий app ON → OFF → ON ещё выполняется. Старые app результаты не перенесены на новый head. + +Артефакты: `/private/tmp/cpm-pr7379-uninstall-fix-20261019/` (`unit-green.log`, `unit-evidence.json`, `lint.log`, `mac-build.log`, `ios-build.log`, signature logs, `heads.json`, PR snapshots); red control — `/private/tmp/cpm-pr7379-full-review-20261019/uninstall-red.log`. diff --git a/work/projects/cpm-web-extension-code-guide-2026-10-09.md b/work/projects/cpm-web-extension-code-guide-2026-10-09.md index 5fd3186b..efb7cc22 100755 --- a/work/projects/cpm-web-extension-code-guide-2026-10-09.md +++ b/work/projects/cpm-web-extension-code-guide-2026-10-09.md @@ -6,6 +6,8 @@ tags: - cpm - webkit --- +> **Актуально — 19 октября 2026, uninstall fix опубликован.** [#7379](https://github.com/duckduckgo/apple-browsers/pull/7379): production **`e970e8c90e`**, 6 commits / 22 paths; отдельный review-only harness **`e380cf98f7`**, 12 paths вне main. Удаление активного CPM context отменяет pending late-document recovery; удаление старой upgrade-версии и ошибка unload сохраняют recovery. **190 unit PASS**, red-before-fix 2 PASS / 1 FAIL, signed macOS и iOS Simulator builds PASS, strict lint 11 / 0. ON → OFF → ON на новом app head выполняется; итог будет записан после завершения. PR description и reviewer flag steps актуализированы с сохранением ручных правок. Формы оставлены в прежнем виде; late reload flag default disabled. Предыдущие heads/results ниже — история. + > **Актуально — 19 октября 2026, полный повторный review #7379.** Проверен локальный `5708197362` против #7376: 22 changed paths, **187 существующих тестов PASS + 1 новый probe FAIL**. Новый P2: uninstall активного CPM context не отменяет pending late-document recovery. Общий launch→navigation deadline и привязка recovery pixel к точной WKNavigation исправлены локально и прошли повторные регрессии; усиление защиты форм явно отложено пользователем, исходная проверка сохранена за default-disabled флагом. В GitHub пока `08866c7eda` (CI: 48 SUCCESS / 21 SKIPPED), новые production commits не опубликованы. Локальный review-only harness `4308751d59` синхронизирован; его новый ON/OFF/ON ещё не запускался. Подробности — в конце; прежние heads/results ниже относятся к истории. > **Актуально — 16 октября 2026, PR review fixes.** В [#7379](https://github.com/duckduckgo/apple-browsers/pull/7379) проверены оба inline замечания: cancellation уже покрыта, повторные 5 секунд на каждую navigation исправлены общим deadline на startup. Production **`08866c7eda`**, 3 commits / 21 paths; review-only harness **`3f4d755511`**, 12 test-only paths, вне main. Проверки: red-before-fix **2 FAIL**, после исправления **182 unit PASS**, signed macOS build и iOS shared-module build PASS, strict lint **8 / 0**; на одних app/XCTest binaries **ON 8 PASS → OFF 6 ожидаемых functional FAIL → ON 8 PASS**, без skips. Оба review threads resolved; Danger 0 failures, только PR-size advisory; flag tracking links добавлены, defaults не менялись. Пользовательские правки и reviewer steps сохранены. Подробности этого review — в конце. Более ранние heads/results ниже сохранены как история. @@ -484,3 +486,17 @@ CI snapshot `08866c7eda` на 16:19 UTC: 31 SUCCESS, 12 SKIPPED, 3 QUEUED, 5 IN_ **Harness и публикация.** Локальный `codex/cpm-fix-init-loss-integration-tests / 4308751d593bcc63abfb4baaced83e35bd19255f` обычным merge синхронизирован с `5708197362`; README исправлен на 26 новых shared regressions и прежнюю защиту форм. Над production по-прежнему ровно 12 harness-only paths, 8 app methods и два ON/OFF schemes; они не идут в main. Удалён только собственный generated Package.resolved diff от предыдущего test run. Рабочая production branch чистая. Production и harness commits пока не push; PR body не перезаписан. Старый ON 8 PASS → OFF 6 functional FAIL → ON 8 PASS относится к опубликованному `08866c7eda` / test branch `3f4d755511`; на новом локальном head этот app cycle ещё не повторён. **Замечание о стиле URL check.** Для HTTP(S) подходит `URL.NavigationalScheme.hypertextSchemes` из Common; initializer сохраняет регистр, поэтому lowercased необходимо сохранить. Это ответ на вопрос, source replacement не выполнялся. + +## 19 октября 2026 — исправление uninstall/preflight race и push + +Production **`e970e8c90eca76e55217f75c13122735a72664c5`**, branch `alex/cpm-fix-init-loss`, [#7379](https://github.com/duckduckgo/apple-browsers/pull/7379), база #7376 / `713d67419a`. Опубликованы все три локальных commits после `08866c7eda`; итоговый diff — 6 commits / 22 paths. Push обычный fast-forward, без переписывания истории. Review-only **`codex/cpm-fix-init-loss-integration-tests / e380cf98f7e9709085ce76289211f3e1e43c8395`** синхронизирована обычным merge, над production по-прежнему ровно 12 harness-only paths; они не идут в main. + +**Исправление.** До unload запоминается, удаляется ли текущий выбранный embedded context. После успешного unload его background document recovery инвалидируется, включая уже ожидающую async safety preflight. Неудачный unload выходит до invalidation; удаление старого context при upgrade не отменяет recovery replacement. Добавлены постоянные shared regressions `testUninstallingActiveEmbeddedContextCancelsPendingDocumentRecovery`, `testUninstallingOldEmbeddedContextPreservesReplacementDocumentRecovery` и `testFailedUninstallPreservesActiveDocumentRecovery`. Первые два используют production loader с настоящими WKWebExtensionContext; третий моделирует ошибку unload и проверяет сохранение live context. HTTP(S)-checks в native navigation callers macOS/iOS переведены на `URL.NavigationalScheme.hypertextSchemes` с сохранением lowercased. + +**Проверки.** До fix новые три tests: **2 PASS / 1 functional FAIL** — активное удаление оставляло выполняющийся reload callback. После fix пять выбранных shared suites: **190 PASS / 0 failures** (13 background diagnostics + 13 readiness recovery + 78 monitor + 35 lifecycle + 51 manager), всего 29 новых shared regression methods относительно базы PR. Unit run выполнен в изолированной копии 96 побайтно совпадающих production source files. Полные macOS и iOS Simulator builds — PASS; macOS app подписан Apple Development, team HKE973VLUW, strict verification всего app bundle PASS. Strict lint всех 11 непушенных Swift files — 0 violations. Схемы/имена/параметры/frequency pixels не менялись. + +**Формы и flags.** По явному указанию пользователя новая защита форм не возвращена. Original JavaScript predicate побайтно совпадает с `08866c7eda`; known limitation controlled/defaultValue и Shadow DOM остаётся. Независимый `webExtensions.cpmLateBackgroundDocumentRecovery` всё ещё default disabled на обеих платформах. Deadline launch→navigation и attribution по конкретной WKNavigation сохранены из предыдущих локальных исправлений и теперь опубликованы. + +**Документация и app validation.** PR body точечно уточняет общий launch/navigation deadline, invalidation при удалении активного context и точную WKNavigation attribution. Пользовательские правки, testing branch link и ON 8 PASS → OFF 6 functional FAIL → ON 8 PASS instructions сохранены. README harness обновлён: 8 новых manager regressions / 29 новых shared methods. На новом head запущен dedicated signed app cycle; текущий app ON → OFF → ON ещё выполняется. Старые app результаты не перенесены на новый head. + +Артефакты: `/private/tmp/cpm-pr7379-uninstall-fix-20261019/` (`unit-green.log`, `unit-evidence.json`, `lint.log`, `mac-build.log`, `ios-build.log`, signature logs, `heads.json`, PR snapshots); red control — `/private/tmp/cpm-pr7379-full-review-20261019/uninstall-red.log`.