[2026-10-30] eagle: work/projects/cpm-post-release-analysis-2026-10-27.md work/projects/cpm-status-2026-10-15.md work/projects/cpm-web-extension-breakage-validation.md work/projects/cpm-web-extension-code-guide-2026-10-09.md

This commit is contained in:
Alexey Martemyanov committed 2026-10-30 16:54:20 +06:00
1 parent ac721b6a22
commit 449c867f90
4 files changed
+84 -2

No files matched your search

@@ -9,6 +9,21 @@ updated: '2026-10-30'
---
# CPM Web Extension — карта кода по worktree и строкам
## Upgrade-before-load — PR 7767
Проверено 30 октября 2026, 16:48 Бишкек: [#7767](https://github.com/duckduckgo/apple-browsers/pull/7767), production worktree **`/Users/admin/DuckDuckGo/apple-browsers.git/cpm-upgrade-before-load`**, branch `codex/cpm-upgrade-before-load`, head **`45593bbb4e`**. Main `3046f67631` влит; PR OPEN/MERGEABLE, exact-head CI 43 SUCCESS / 15 SKIPPED, 0 failed/pending. Не merged и не shipped.
- `SharedPackages/WebExtensions/Sources/WebExtensions/Lifecycle/WebExtensionLifecycleCoordinator.swift`, `loadAndSyncInstalledExtensions()`: CPM pre-sync при включённом failsafe → load installed → общий embedded sync.
- `Manager/WebExtensionManager+EmbeddedExtensions.swift`, `syncCPMExtensionBeforeLoad(isEnabled:)`: только `.embedded`; не запускает scriptlets; disabled CPM удаляется до load. `syncEmbeddedExtension`/`installEmbeddedExtension`: install before uninstall, fallback к старой установке; origin переносится только без живого старого context. Runtime/post-load upgrades сохраняют разные origins.
- `Loading/CPMExtensionBaseURLPolicy.swift`: `originForUpgrade`, `pendingOriginIdentifiers`, `baseURL(for:webExtension:)`. При объединении с main сохранены OS 26.6+ gate, rotation на disabled/unsupported context load и отказ от inherited origin при публичных ресурсах. Persisted key — `cpmStableOriginIdentifier`.
- `Manager/WebExtensionManager.swift`, `isCPMUpgradeBeforeLoadEnabled`: значение фиксируется при создании manager. Обе платформенные factory передают `.cpmUpgradeBeforeLoad`; конфигурации в `iOS/LocalPackages/FeatureFlags-iOS/Sources/FeatureFlags/FeatureFlag.swift` и `macOS/LocalPackages/FeatureFlags-macOS/Sources/FeatureFlags/FeatureFlag.swift`: code default ON, remote failsafe `webExtensions.cpmUpgradeBeforeLoad`. [Registry task](https://app.asana.com/1/137249556945/project/1211834678943996/task/1220009029295774). OFF применяется к следующему manager.
- `fireEmbeddedSyncError` в embedded-manager extension: существующий error pixel; CPM pre-load domain получает `.before_load`, остальной sync — исходную ошибку. `EmbeddedSyncError: DDGError`: missingBundle=1, typeMismatch=2. Нового pixel/stage parameter/success tracking нет. WebKit error normalization остаётся в `WKWebExtension+CopyingErrors.swift`; в helper достаточно `error as NSError`.
- `Tests/WebExtensionsTests/WebExtensionManagerTests.swift`, `testCPMSyncErrorMarksOnlyBeforeLoadAndPreservesCause`: один telemetry regression method, domain/code/userInfo/underlying cause и missing-bundle DDGError. После iOS CI crash тест создаёт собственный ZIP через существующий helper, без `Bundle.module`. Проверен на iOS 27 Simulator также без resource bundle.
- Review-only harness — `/Users/admin/DuckDuckGo/apple-browsers.git/cpm-upgrade-before-load-harness`, `Tests/WebExtensionsTests/CPMRepro/CPMReproUpgradeTests.swift`. Это отдельный исторический checkout, не текущий head PR. Финальный опубликованный `fafcb1ffda` был отдельно проверен с копией harness: 11 PASS, после проверки временная копия удалена. Для воспроизведения с новой production revision fixture переносится в изолированный checkout, без включения в PR.
- Артефакты before/after: `/Users/admin/DuckDuckGo/apple-browsers.git/cpm-upgrade-before-load-results-2026-10-29/` (`summary.json`, `cpm-only-summary.json`, `CPM_ONLY_REVIEW.md`). Более поздние логи: `/private/tmp/cpm-7767-main-merge-tests.log`, `cpm-7767-full-review-head-harness.log`, `cpm-7767-ci-fixture-macos.log`, `cpm-7767-ci-fixture-ios-no-bundle.xcresult`.
Поведение, сравнение времени и границы доказательств: [[cpm-status-2026-10-15#Текущее состояние — 30 октября 2026, 16:48 Бишкек]]. Runtime iOS-проверка здесь относится к telemetry test, а не к полному startup/upgrade приложения. Следующее обновление ниже относится к release error-page/stable-origin PRs, не к #7767.
## Актуализация 30 октября 2026
Release PR merged: [iOS #7753](https://github.com/duckduckgo/apple-browsers/pull/7753), head `fef5f9cdd35977b0cb848ac81f4feaca3e6a9ba6`, worktree `cpm-error-page-filter-ios`; [macOS #7752](https://github.com/duckduckgo/apple-browsers/pull/7752), head `551cb2edd00c02e038b2b46a07a8c32d0b33e666`, worktree `cpm-error-page-filter`.