From 5c678e1521a7c60a9fb18c1970a607bb361e5a2f Mon Sep 17 00:00:00 2001 From: Alexey Martemyanov Date: Mon, 19 Oct 2026 20:12:45 +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 --- ...adiness-telemetry-tech-design-2026-10-15.md | 18 ++++++++++++++++++ work/projects/cpm-status-2026-10-15.md | 18 ++++++++++++++++++ .../cpm-web-extension-code-guide-2026-10-09.md | 18 ++++++++++++++++++ 3 files changed, 54 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 b2702258..e48a71f5 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, error-6/P4 finding исправлен в PR.** Production [#7379](https://github.com/duckduckgo/apple-browsers/pull/7379) **`fc124938e0`**, база #7376 `c7adf28e12`, 8 commits / 22 paths. Известный failed startup инвалидируется до освобождения wait; поздний callback больше не вызывает P4 detection или late reload. Добавлены 2 штатные регрессии, **198 shared tests PASS**, strict lint 2 / 0, iOS app build PASS. Review-only harness **`f4f135766a`** синхронизирован обычным merge, содержит актуальный production head и ровно 12 дополнительных файлов; README: 38 новых shared regressions. macOS build-for-testing и финальный ON 9 → OFF 6 → ON 9 ещё выполняются; завершёнными пока не объявлены. Оба head опубликованы обычным push. Формы/default late flag не менялись. Прежние записи об открытом P2 относятся к предыдущему head и сохранены как история. + > **Актуально — 19 октября 2026, финальное ревью #7379 после P4 detection.** Проверен опубликованный после rebase **`a00dc4afeb`** / база #7376 **`c7adf28e12`**, 7 commits / 22 paths. Остаётся **1 P2: error-6 startup может ошибочно попасть в P4 detection после позднего callback успешного retry**. На текущем head: **196 существующих shared tests PASS + 2 дополнительных probes PASS / 1 новый probe FAIL**. Проверочная однострочная правка только в изолированной копии даёт **199 PASS**; в PR она не внесена. Pixel validators обеих платформ PASS. CI завершён: **53 SUCCESS / 25 SKIPPED**, failures и pending нет; повторный probe подтвердил тот же незакрытый дефект. Предыдущие 197 unit и app 9→6→9 относятся к `fc87237a47`; новая база убрала один retired-telemetry тест. Подробности и границы воспроизведения — в разделе «Полное ревью после P4 detection — error-6 attribution». История ниже сохранена. > **Актуально — 19 октября 2026, P4 detection без reload опубликована и проверена.** [#7379](https://github.com/duckduckgo/apple-browsers/pull/7379): production **`fc87237a47`**, 7 commits / 22 paths; review-only harness **`475095b335`**, 12 paths вне main. Новый dailyAndCount `web_extension_cpm_startup_response_missing` считает P4 candidates независимо от late recovery flag, без reload и safety JavaScript. **197 unit PASS**, signed macOS и iOS app builds PASS, pixel validators PASS, strict lint 6 production + 2 harness / 0. На одних подписанных app/XCTest binaries: **ON 9 PASS → OFF 6 ожидаемых functional FAIL → ON 9 PASS**, без skips/expected failures, SHA256 совпали. Новый detection-only case дважды подтвердил detection = 1 / finishCount = 1 / late recovery OFF / no late reload outcomes; оба late OFF controls также дали по detection = 1. CI нового head: **48 SUCCESS / 21 SKIPPED**, pending/failures нет. Формы не менялись, late reload flag default disabled. PR steps и все три документа актуализированы; worktree возвращён на чистую production branch. Более ранние heads/results сохранены как история. @@ -494,3 +496,19 @@ Head остаётся `a00dc4afeb`, база `c7adf28e12`; production diff не CI актуального head завершён: **53 SUCCESS / 25 SKIPPED**, failures и pending нет. Два GitHub review threads resolved, новых открытых threads нет; это не означает, что локально воспроизведённый P4-дефект исправлен. Краткое описание PR и 10 однострочных reviewer steps ON → OFF → ON проверены; таблица feature flags удалена по запросу пользователя. Production worktree чистый; код PR в ходе финального контроля не менялся. Повторный log: `/private/tmp/cpm-pr7379-final-review-20261019/probes.log`; PR/CI snapshot: `/private/tmp/cpm-pr7379-final-review-pr.json`; review threads snapshot: `/private/tmp/cpm-pr7379-final-review-threads.json`. Детали причины, предыдущие 196 shared PASS и candidate-only 199 PASS — в предыдущем разделе. + +## Исправление error-6/P4 finding в production PR — 19 октября 2026 + +Опубликован `fc124938e040533e8ea9ef04df9d313d0e9d5dcb` в #7379, поверх `a00dc4afeb`: 2 изменённых файла, 8 commits / 22 paths относительно #7376. Observer принимает только background-load error 6 из `WKWebExtensionContextErrorDomain`. Для совпадающего pending context он инвалидирует startup/document recovery до `clearEmbeddedBackgroundStartup()`; retained successful callbacks после retry уже не могут объявить этот failed startup успешным P4 или запустить document preflight. + +**Штатные тесты теперь в PR**, в `WebExtensionManagerTests.swift`: +- `testFailedFirstStartupCannotReportP4OrReloadAfterRetainedCallbacksSucceed`: actual production observer/manager/health-monitor path, retained public WebKit callbacks, late recovery flag OFF и ON; после error 6 нет P4 detection и document preflight. +- `testUnrelatedErrorPreservesCurrentFirstStartupDetection`: error 6 superseded context и code 6 другого error domain не сбивают текущий startup и его корректный P4 detection. + +До production fix официальный первый regression method красный при обоих состояниях late flag (3 assertion failures), obsolete-context control PASS. После исправления **198 штатных shared tests PASS / 0 failures**: 13 diagnostics + 20 recovery + 77 monitor + 35 lifecycle + 53 manager. Всего 38 новых shared regressions относительно текущей базы. Strict SwiftLint: 2 changed files / 0 violations. Полный iOS Simulator app build PASS с обычными настройками проекта. + +Harness обновлён `475095b335 → f4f135766a7fd67096ebc6a973919cb5a464d7ec` обычным merge/push, без переписывания истории. Конфликты в manager/shared tests разрешены точным production-кодом. Актуальный production head — предок harness; diff **ровно 12 harness-only paths**, старые telemetry/test deletions больше не возвращаются. README обновлён: 38 новых shared regressions, 10 manager regressions. Тестовые steps в PR остаются 9 PASS → OFF 6 functional FAIL → ON 9 PASS. + +**Финальная app validation текущего head: выполняется.** Подписанный macOS build-for-testing и ON/OFF/ON ещё не объявляются завершёнными. Фикс уже в опубликованном production PR; предыдущая candidate-only правка больше не описывает актуальное состояние. Формы и default-disabled late recovery flag сохранены. + +Artifacts: `/private/tmp/cpm-pr7379-error6-fix-20261019/`: `red-before-fix.log`, `shared-tests.log`, `lint.log`, `ios-build.log`, `heads-and-checks.json`, `app-build.log`/`app-build.xcresult`, `pr-progress.json`; последующие app bundles будут в этой же папке. diff --git a/work/projects/cpm-status-2026-10-15.md b/work/projects/cpm-status-2026-10-15.md index 20221580..8c6372ff 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, error-6/P4 finding исправлен в PR.** Production [#7379](https://github.com/duckduckgo/apple-browsers/pull/7379) **`fc124938e0`**, база #7376 `c7adf28e12`, 8 commits / 22 paths. Известный failed startup инвалидируется до освобождения wait; поздний callback больше не вызывает P4 detection или late reload. Добавлены 2 штатные регрессии, **198 shared tests PASS**, strict lint 2 / 0, iOS app build PASS. Review-only harness **`f4f135766a`** синхронизирован обычным merge, содержит актуальный production head и ровно 12 дополнительных файлов; README: 38 новых shared regressions. macOS build-for-testing и финальный ON 9 → OFF 6 → ON 9 ещё выполняются; завершёнными пока не объявлены. Оба head опубликованы обычным push. Формы/default late flag не менялись. Прежние записи об открытом P2 относятся к предыдущему head и сохранены как история. + > **Актуально — 19 октября 2026, финальное ревью #7379 после P4 detection.** Проверен опубликованный после rebase **`a00dc4afeb`** / база #7376 **`c7adf28e12`**, 7 commits / 22 paths. Остаётся **1 P2: error-6 startup может ошибочно попасть в P4 detection после позднего callback успешного retry**. На текущем head: **196 существующих shared tests PASS + 2 дополнительных probes PASS / 1 новый probe FAIL**. Проверочная однострочная правка только в изолированной копии даёт **199 PASS**; в PR она не внесена. Pixel validators обеих платформ PASS. CI завершён: **53 SUCCESS / 25 SKIPPED**, failures и pending нет; повторный probe подтвердил тот же незакрытый дефект. Предыдущие 197 unit и app 9→6→9 относятся к `fc87237a47`; новая база убрала один retired-telemetry тест. Подробности и границы воспроизведения — в разделе «Полное ревью после P4 detection — error-6 attribution». История ниже сохранена. > **Актуально — 19 октября 2026, P4 detection без reload опубликована и проверена.** [#7379](https://github.com/duckduckgo/apple-browsers/pull/7379): production **`fc87237a47`**, 7 commits / 22 paths; review-only harness **`475095b335`**, 12 paths вне main. Новый dailyAndCount `web_extension_cpm_startup_response_missing` считает P4 candidates независимо от late recovery flag, без reload и safety JavaScript. **197 unit PASS**, signed macOS и iOS app builds PASS, pixel validators PASS, strict lint 6 production + 2 harness / 0. На одних подписанных app/XCTest binaries: **ON 9 PASS → OFF 6 ожидаемых functional FAIL → ON 9 PASS**, без skips/expected failures, SHA256 совпали. Новый detection-only case дважды подтвердил detection = 1 / finishCount = 1 / late recovery OFF / no late reload outcomes; оба late OFF controls также дали по detection = 1. CI нового head: **48 SUCCESS / 21 SKIPPED**, pending/failures нет. Формы не менялись, late reload flag default disabled. PR steps и все три документа актуализированы; worktree возвращён на чистую production branch. Более ранние heads/results сохранены как история. @@ -1300,3 +1302,19 @@ Head остаётся `a00dc4afeb`, база `c7adf28e12`; production diff не CI актуального head завершён: **53 SUCCESS / 25 SKIPPED**, failures и pending нет. Два GitHub review threads resolved, новых открытых threads нет; это не означает, что локально воспроизведённый P4-дефект исправлен. Краткое описание PR и 10 однострочных reviewer steps ON → OFF → ON проверены; таблица feature flags удалена по запросу пользователя. Production worktree чистый; код PR в ходе финального контроля не менялся. Повторный log: `/private/tmp/cpm-pr7379-final-review-20261019/probes.log`; PR/CI snapshot: `/private/tmp/cpm-pr7379-final-review-pr.json`; review threads snapshot: `/private/tmp/cpm-pr7379-final-review-threads.json`. Детали причины, предыдущие 196 shared PASS и candidate-only 199 PASS — в предыдущем разделе. + +## Исправление error-6/P4 finding в production PR — 19 октября 2026 + +Опубликован `fc124938e040533e8ea9ef04df9d313d0e9d5dcb` в #7379, поверх `a00dc4afeb`: 2 изменённых файла, 8 commits / 22 paths относительно #7376. Observer принимает только background-load error 6 из `WKWebExtensionContextErrorDomain`. Для совпадающего pending context он инвалидирует startup/document recovery до `clearEmbeddedBackgroundStartup()`; retained successful callbacks после retry уже не могут объявить этот failed startup успешным P4 или запустить document preflight. + +**Штатные тесты теперь в PR**, в `WebExtensionManagerTests.swift`: +- `testFailedFirstStartupCannotReportP4OrReloadAfterRetainedCallbacksSucceed`: actual production observer/manager/health-monitor path, retained public WebKit callbacks, late recovery flag OFF и ON; после error 6 нет P4 detection и document preflight. +- `testUnrelatedErrorPreservesCurrentFirstStartupDetection`: error 6 superseded context и code 6 другого error domain не сбивают текущий startup и его корректный P4 detection. + +До production fix официальный первый regression method красный при обоих состояниях late flag (3 assertion failures), obsolete-context control PASS. После исправления **198 штатных shared tests PASS / 0 failures**: 13 diagnostics + 20 recovery + 77 monitor + 35 lifecycle + 53 manager. Всего 38 новых shared regressions относительно текущей базы. Strict SwiftLint: 2 changed files / 0 violations. Полный iOS Simulator app build PASS с обычными настройками проекта. + +Harness обновлён `475095b335 → f4f135766a7fd67096ebc6a973919cb5a464d7ec` обычным merge/push, без переписывания истории. Конфликты в manager/shared tests разрешены точным production-кодом. Актуальный production head — предок harness; diff **ровно 12 harness-only paths**, старые telemetry/test deletions больше не возвращаются. README обновлён: 38 новых shared regressions, 10 manager regressions. Тестовые steps в PR остаются 9 PASS → OFF 6 functional FAIL → ON 9 PASS. + +**Финальная app validation текущего head: выполняется.** Подписанный macOS build-for-testing и ON/OFF/ON ещё не объявляются завершёнными. Фикс уже в опубликованном production PR; предыдущая candidate-only правка больше не описывает актуальное состояние. Формы и default-disabled late recovery flag сохранены. + +Artifacts: `/private/tmp/cpm-pr7379-error6-fix-20261019/`: `red-before-fix.log`, `shared-tests.log`, `lint.log`, `ios-build.log`, `heads-and-checks.json`, `app-build.log`/`app-build.xcresult`, `pr-progress.json`; последующие app bundles будут в этой же папке. 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 e301d957..6d365085 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, error-6/P4 finding исправлен в PR.** Production [#7379](https://github.com/duckduckgo/apple-browsers/pull/7379) **`fc124938e0`**, база #7376 `c7adf28e12`, 8 commits / 22 paths. Известный failed startup инвалидируется до освобождения wait; поздний callback больше не вызывает P4 detection или late reload. Добавлены 2 штатные регрессии, **198 shared tests PASS**, strict lint 2 / 0, iOS app build PASS. Review-only harness **`f4f135766a`** синхронизирован обычным merge, содержит актуальный production head и ровно 12 дополнительных файлов; README: 38 новых shared regressions. macOS build-for-testing и финальный ON 9 → OFF 6 → ON 9 ещё выполняются; завершёнными пока не объявлены. Оба head опубликованы обычным push. Формы/default late flag не менялись. Прежние записи об открытом P2 относятся к предыдущему head и сохранены как история. + > **Актуально — 19 октября 2026, финальное ревью #7379 после P4 detection.** Проверен опубликованный после rebase **`a00dc4afeb`** / база #7376 **`c7adf28e12`**, 7 commits / 22 paths. Остаётся **1 P2: error-6 startup может ошибочно попасть в P4 detection после позднего callback успешного retry**. На текущем head: **196 существующих shared tests PASS + 2 дополнительных probes PASS / 1 новый probe FAIL**. Проверочная однострочная правка только в изолированной копии даёт **199 PASS**; в PR она не внесена. Pixel validators обеих платформ PASS. CI завершён: **53 SUCCESS / 25 SKIPPED**, failures и pending нет; повторный probe подтвердил тот же незакрытый дефект. Предыдущие 197 unit и app 9→6→9 относятся к `fc87237a47`; новая база убрала один retired-telemetry тест. Подробности и границы воспроизведения — в разделе «Полное ревью после P4 detection — error-6 attribution». История ниже сохранена. > **Актуально — 19 октября 2026, P4 detection без reload опубликована и проверена.** [#7379](https://github.com/duckduckgo/apple-browsers/pull/7379): production **`fc87237a47`**, 7 commits / 22 paths; review-only harness **`475095b335`**, 12 paths вне main. Новый dailyAndCount `web_extension_cpm_startup_response_missing` считает P4 candidates независимо от late recovery flag, без reload и safety JavaScript. **197 unit PASS**, signed macOS и iOS app builds PASS, pixel validators PASS, strict lint 6 production + 2 harness / 0. На одних подписанных app/XCTest binaries: **ON 9 PASS → OFF 6 ожидаемых functional FAIL → ON 9 PASS**, без skips/expected failures, SHA256 совпали. Новый detection-only case дважды подтвердил detection = 1 / finishCount = 1 / late recovery OFF / no late reload outcomes; оба late OFF controls также дали по detection = 1. CI нового head: **48 SUCCESS / 21 SKIPPED**, pending/failures нет. Формы не менялись, late reload flag default disabled. PR steps и все три документа актуализированы; worktree возвращён на чистую production branch. Более ранние heads/results сохранены как история. @@ -584,3 +586,19 @@ Head остаётся `a00dc4afeb`, база `c7adf28e12`; production diff не CI актуального head завершён: **53 SUCCESS / 25 SKIPPED**, failures и pending нет. Два GitHub review threads resolved, новых открытых threads нет; это не означает, что локально воспроизведённый P4-дефект исправлен. Краткое описание PR и 10 однострочных reviewer steps ON → OFF → ON проверены; таблица feature flags удалена по запросу пользователя. Production worktree чистый; код PR в ходе финального контроля не менялся. Повторный log: `/private/tmp/cpm-pr7379-final-review-20261019/probes.log`; PR/CI snapshot: `/private/tmp/cpm-pr7379-final-review-pr.json`; review threads snapshot: `/private/tmp/cpm-pr7379-final-review-threads.json`. Детали причины, предыдущие 196 shared PASS и candidate-only 199 PASS — в предыдущем разделе. + +## Исправление error-6/P4 finding в production PR — 19 октября 2026 + +Опубликован `fc124938e040533e8ea9ef04df9d313d0e9d5dcb` в #7379, поверх `a00dc4afeb`: 2 изменённых файла, 8 commits / 22 paths относительно #7376. Observer принимает только background-load error 6 из `WKWebExtensionContextErrorDomain`. Для совпадающего pending context он инвалидирует startup/document recovery до `clearEmbeddedBackgroundStartup()`; retained successful callbacks после retry уже не могут объявить этот failed startup успешным P4 или запустить document preflight. + +**Штатные тесты теперь в PR**, в `WebExtensionManagerTests.swift`: +- `testFailedFirstStartupCannotReportP4OrReloadAfterRetainedCallbacksSucceed`: actual production observer/manager/health-monitor path, retained public WebKit callbacks, late recovery flag OFF и ON; после error 6 нет P4 detection и document preflight. +- `testUnrelatedErrorPreservesCurrentFirstStartupDetection`: error 6 superseded context и code 6 другого error domain не сбивают текущий startup и его корректный P4 detection. + +До production fix официальный первый regression method красный при обоих состояниях late flag (3 assertion failures), obsolete-context control PASS. После исправления **198 штатных shared tests PASS / 0 failures**: 13 diagnostics + 20 recovery + 77 monitor + 35 lifecycle + 53 manager. Всего 38 новых shared regressions относительно текущей базы. Strict SwiftLint: 2 changed files / 0 violations. Полный iOS Simulator app build PASS с обычными настройками проекта. + +Harness обновлён `475095b335 → f4f135766a7fd67096ebc6a973919cb5a464d7ec` обычным merge/push, без переписывания истории. Конфликты в manager/shared tests разрешены точным production-кодом. Актуальный production head — предок harness; diff **ровно 12 harness-only paths**, старые telemetry/test deletions больше не возвращаются. README обновлён: 38 новых shared regressions, 10 manager regressions. Тестовые steps в PR остаются 9 PASS → OFF 6 functional FAIL → ON 9 PASS. + +**Финальная app validation текущего head: выполняется.** Подписанный macOS build-for-testing и ON/OFF/ON ещё не объявляются завершёнными. Фикс уже в опубликованном production PR; предыдущая candidate-only правка больше не описывает актуальное состояние. Формы и default-disabled late recovery flag сохранены. + +Artifacts: `/private/tmp/cpm-pr7379-error6-fix-20261019/`: `red-before-fix.log`, `shared-tests.log`, `lint.log`, `ios-build.log`, `heads-and-checks.json`, `app-build.log`/`app-build.xcresult`, `pr-progress.json`; последующие app bundles будут в этой же папке.