From 2b88fc1ca95603fa2bf2f28fd5ec19d51434769f Mon Sep 17 00:00:00 2001 From: Alexey Martemyanov Date: Fri, 16 Oct 2026 21:48:44 +0600 Subject: [PATCH] [2026-10-16] 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 --- ...diness-telemetry-tech-design-2026-10-15.md | 28 +++++++++++++++++ work/projects/cpm-status-2026-10-15.md | 30 +++++++++++++++++- ...cpm-web-extension-code-guide-2026-10-09.md | 31 ++++++++++++++++++- 3 files changed, 87 insertions(+), 2 deletions(-) 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 f209550d..37be7973 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 @@ +> **Актуально — 16 октября 2026, harness вынесен из PR.** [#7379](https://github.com/duckduckgo/apple-browsers/pull/7379): **`alex/cpm-fix-init-loss` / `da126120a9`**, база #7376, **2 коммита / 21 файл**, production fixes + 18 новых shared unit regressions. Все local-only app tests, Xcode entries и DEBUG app hooks — только в **[`codex/cpm-fix-init-loss-integration-tests`](https://github.com/duckduckgo/apple-browsers/tree/codex/cpm-fix-init-loss-integration-tests) / `6e4e39e67c`**, один дочерний commit от PR head; **эта ветка не идёт в main**. Проверено: production app build PASS, unit **179 PASS**, harness app **8/8 PASS**, strict lint **19+8 / 0**. Reviewer steps в PR обновлены и пользовательские правки сохранены. Ниже сохранена датированная история; прежние 3 commits / 32 files и app harness в PR больше не актуальны. + > **Актуальный итог — 16 октября 2026, после force push.** [PR #7379](https://github.com/duckduckgo/apple-browsers/pull/7379) теперь поверх **#7376** (`alex/cpm-messaging-readiness-telemetry`), head **`aec5be9a83`**, ровно **3 коммита / 32 файла**. Старый worktree `cpm-fix-init-loss` удалён; текущая директория `alex/cpm-fix-p1-p2` теперь на ветке `alex/cpm-fix-init-loss`. Checkpoint **`367759cbc1`** и backup старой истории сохранены. Проверка через production feature flags **без создания/переключения коммитов**: signed app **8/8 PASS ON**, **6/6 функциональных FAIL OFF**, unit **179 PASS**, strict lint **27 / 0**, pixel validators обеих платформ PASS. Новый late-reload flag **default disabled**. Описание PR/шаги и local-only `to-be-disabled before merge` annotations обновлены; GitHub CI ещё не объявляется green. Подробная финальная сверка — в конце документа. **Ниже сохранена датированная история: прежние «не закоммичено», старые head/base и over-budget limitation не являются текущим статусом.** > **Итог замены #7379 — 16 октября 2026 (Бишкек).** В `alex/cpm-fix-p1-p2` исправлены оба замечания: ожидание конкретного нового context при install/upgrade и background guard независимо от diagnostics flag. Финальный signed app-набор **4/4 PASS**, install/upgrade **10+10 PASS**, targeted unit **170 PASS**, strict lint **16 files / 0 violations**, общий WebExtensions module для iOS Simulator **BUILD SUCCEEDED**. На тех же бинарниках с выключенными flags **4/4 функциональных negative controls FAIL**, без deallocation/infrastructure errors. Коммитов нет, scratch не изменён, ZIP/schema/dependencies не менялись. Сохраняется исходный cap **5 s**: startup fixture 5000 ms с WK overhead даёт callback после cap и может потерять первый ответ; этот режим остаётся воспроизводимым известным пределом. Подробности, история красных прогонов и machine summary — в конце [[cpm-status-2026-10-15]]. @@ -267,3 +269,29 @@ Local app suite, setup и dedicated scheme/README помечены **`to-be-disa ### GitHub checks после push Финальная сверка CI для `aec5be9a83`: основные jobs ещё IN_PROGRESS/QUEUED; **Danger — FAILURE**, точная причина — новые pixels требуют label **`privacy review required`**, который создаёт privacy-review task в Asana. Label в этой работе не менялся. Дополнительно Danger предупреждает об отсутствующем Asana Feature Flags project task link для `cpmLateBackgroundDocumentRecovery` в macOS/iOS enum comments и размере PR; это warnings, не причина функциональных app failures. Значения flags и локальные ON/OFF результаты выше подтверждены независимо. Evidence: `/private/tmp/cpm-pr7379-final-20261016/danger-comment.md`, `ci-final.json`. + + +## Вынос app harness из PR #7379 — 16 октября 2026 + +По запросу весь local-only app harness вынесен в отдельную review-only ветку **`codex/cpm-fix-init-loss-integration-tests`**, основанную непосредственно на очищенном **`alex/cpm-fix-init-loss`**. Тестовая ветка не предназначена для merge в main, отдельный PR на неё не создавался. + +- Production PR #7379: head **`da126120a94b625cf1d9705302c29099b4dbc62d`**, база #7376 / `713d67419a`, **2 коммита, 21 файл**. `7dbe2a25bb` — P1/P2/install/upgrade; `da126120a9` — late recovery + flags/pixels. Все 21 production/unit/schema файла побайтово совпадают с прежним `aec5be9a83`; поведение и defaults не менялись. +- Harness branch: head **`6e4e39e67c64907127bd17197a932b0117a4cb09`**, parent ровно production head `da126120a9`, **один дополнительный commit, 11 test-only paths**. Это пять Swift app-test files + README, CPM scheme и PBX registrations, DEBUG manager factory/config storage/loopback navigation hooks в AppDelegate, ConfigurationStore, Tab. +- Все app hooks и Xcode project changes исключены не только из финального diff PR, но и из его двух новых коммитов. 18 новых deterministic shared unit methods остаются в production PR; восемь app methods — только в harness branch. +- В harness комментариях прежнее `to-be-disabled before merge` заменено на ясное review-only назначение: эта ветка не идёт в main. Explicit scheme opt-in сохранён. Старые checkpoints и исходная история сохранены; дополнительный backup `codex/cpm-fix-init-loss-before-harness-split-20261016` -> `aec5be9a83`. +- Reviewer instructions в PR: unit suites на PR branch; `git fetch origin`, `git switch --detach origin/codex/cpm-fix-init-loss-integration-tests`; открыть workspace, выбрать **CPM Integration Tests / My Mac**, **⌘U**, ожидать 8 PASS / 0 skips; затем вернуться `git switch --detach origin/alex/cpm-fix-init-loss`. Production description и пользовательские правки сохранены. Исторические intentional-red controls не возвращены в reviewer steps. + +Артефакты разделения: `/private/tmp/cpm-harness-split-20261016/`: manifest с production/harness paths и исходными SHA256, раздельные patches, build/unit/lint/signing logs и snapshots PR description. Точные окончательные результаты новой проверки и remote SHA — ниже. + + +### Проверка после разделения + +- Production `da126120a9`: обычная **macOS Browser Debug app build PASS** без harness; нормальная Apple Development подпись, team `HKE973VLUW`; strict app dylib verification PASS. +- Production shared regressions: **179/179 PASS**, 0 failures/skips; 18 новых unit methods сохранены в PR. +- Review-only harness `6e4e39e67c`: полный **`xcodebuild test`** (эквивалент Product → Test), **8/8 PASS**, 0 failures/skips/expected failures, отдельная подписанная app/XCTest сборка. Все 32 source hashes неизменны во время run; strict dylib/XCTest signature checks PASS. +- Strict lint: **19 production Swift files / 0 violations**, **8 harness Swift files / 0 violations**. PBX syntax и scheme XML валидны; каждый из пяти harness Swift files зарегистрирован ровно по одному разу в обоих native Integration Tests targets. Выполнен normal signed target, не отдельный App Store runtime run. +- Подтверждены remote SHA обоих branches и GitHub PR diff: production `da126120a94b625cf1d9705302c29099b4dbc62d`, harness `6e4e39e67c64907127bd17197a932b0117a4cb09`; parent harness совпадает с production head. Production PR остаётся на базе #7376. В рабочей директории снова `alex/cpm-fix-init-loss`, git status чистый. +- `validation-summary.json`, `pr-after.json`, `remote-heads.txt`, `harness-enabled.xcresult` и JSON evidence находятся в `/private/tmp/cpm-harness-split-20261016/`. Generated Package.resolved side effect сохранён и убран из рабочей копии; production dependencies/ZIP не менялись. +- Новые шесть disabled controls после branch-only split не повторялись: предыдущие **6/6 functional FAIL** на эквивалентном production/harness code остаются историческим evidence в `/private/tmp/cpm-pr7379-final-20261016/`. Нового stress/iOS runtime run не заявляется. P3, прежние P5 app и natural-production/iOS ограничения сохраняются. Remote CI нового head — отдельная незавершённая проверка, snapshot `ci-after-split.json`. + +Ранние формулировки о local-only suite внутри production PR и необходимости disable перед merge описывают прежнюю структуру. В актуальном PR этих файлов и hooks нет; review-only branch целиком остаётся вне main. diff --git a/work/projects/cpm-status-2026-10-15.md b/work/projects/cpm-status-2026-10-15.md index 2669fd0d..c239a898 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 --- +> **Актуально — 16 октября 2026, harness вынесен из PR.** [#7379](https://github.com/duckduckgo/apple-browsers/pull/7379): **`alex/cpm-fix-init-loss` / `da126120a9`**, база #7376, **2 коммита / 21 файл**, production fixes + 18 новых shared unit regressions. Все local-only app tests, Xcode entries и DEBUG app hooks — только в **[`codex/cpm-fix-init-loss-integration-tests`](https://github.com/duckduckgo/apple-browsers/tree/codex/cpm-fix-init-loss-integration-tests) / `6e4e39e67c`**, один дочерний commit от PR head; **эта ветка не идёт в main**. Проверено: production app build PASS, unit **179 PASS**, harness app **8/8 PASS**, strict lint **19+8 / 0**. Reviewer steps в PR обновлены и пользовательские правки сохранены. Ниже сохранена датированная история; прежние 3 commits / 32 files и app harness в PR больше не актуальны. + > **Актуальный итог — 16 октября 2026, после force push.** [PR #7379](https://github.com/duckduckgo/apple-browsers/pull/7379) теперь поверх **#7376** (`alex/cpm-messaging-readiness-telemetry`), head **`aec5be9a83`**, ровно **3 коммита / 32 файла**. Старый worktree `cpm-fix-init-loss` удалён; текущая директория `alex/cpm-fix-p1-p2` теперь на ветке `alex/cpm-fix-init-loss`. Checkpoint **`367759cbc1`** и backup старой истории сохранены. Проверка через production feature flags **без создания/переключения коммитов**: signed app **8/8 PASS ON**, **6/6 функциональных FAIL OFF**, unit **179 PASS**, strict lint **27 / 0**, pixel validators обеих платформ PASS. Новый late-reload flag **default disabled**. Описание PR/шаги и local-only `to-be-disabled before merge` annotations обновлены; GitHub CI ещё не объявляется green. Подробная финальная сверка — в конце документа. **Ниже сохранена датированная история: прежние «не закоммичено», старые head/base и over-budget limitation не являются текущим статусом.** > **Итог замены #7379 — 16 октября 2026 (Бишкек).** В `alex/cpm-fix-p1-p2` исправлены оба замечания: ожидание конкретного нового context при install/upgrade и background guard независимо от diagnostics flag. Финальный signed app-набор **4/4 PASS**, install/upgrade **10+10 PASS**, targeted unit **170 PASS**, strict lint **16 files / 0 violations**, общий WebExtensions module для iOS Simulator **BUILD SUCCEEDED**. На тех же бинарниках с выключенными flags **4/4 функциональных negative controls FAIL**, без deallocation/infrastructure errors. Коммитов нет, scratch не изменён, ZIP/schema/dependencies не менялись. Сохраняется исходный cap **5 s**: startup fixture 5000 ms с WK overhead даёт callback после cap и может потерять первый ответ; этот режим остаётся воспроизводимым известным пределом. Подробности, история красных прогонов и machine summary — в конце [[cpm-status-2026-10-15]]. @@ -54,7 +56,7 @@ tags: |---|---|---|---|---| | [#7378](https://github.com/duckduckgo/apple-browsers/pull/7378) | `alex/cpm-repro-harness` | main | harness (только тесты); 4 быстрых теста в CI около 3 с, остальное локально через `CPM_REPRO=1` | OPEN, head `dfb96279196d`; 37 success / 18 skipped, без failure/pending; REVIEW_REQUIRED. Предыдущее Danger-предупреждение о 1570 строках сохранено как историческое; в ветке есть коммит другой сессии «Require initResp in the page…» | | [#7379](https://github.com/duckduckgo/apple-browsers/pull/7379) | `alex/cpm-fix-init-loss` | harness | фикс A: ожидание первой загрузки background после установки/апгрейда посреди сессии | OPEN, head `7ad771e227bb`; 35 success / 20 skipped, без failure/pending; прежние красный и зелёный прогоны сохраняются | -| [#7379 — актуально 16 Oct](https://github.com/duckduckgo/apple-browsers/pull/7379) | `alex/cpm-fix-init-loss`, worktree `alex/cpm-fix-p1-p2` | **#7376 / telemetry** | install/upgrade + P1/P2 + opt-in late GET recovery, 5 fix pixels; local app tests | OPEN, head `aec5be9a83`; 3 commits / 32 files; signed app 8/8 PASS, unit 179 PASS; новый CI ещё выполняется; historical row выше относится к прежнему head | +| [#7379 — актуально 16 Oct](https://github.com/duckduckgo/apple-browsers/pull/7379) | `alex/cpm-fix-init-loss`, worktree `alex/cpm-fix-p1-p2` | **#7376 / telemetry** | production install/upgrade + P1/P2 + late GET recovery, 5 fix pixels, shared unit regressions; app harness в отдельной ветке | OPEN, head `da126120a9`; **2 commits / 21 files**; app build PASS, unit 179 PASS; review-only branch `codex/cpm-fix-init-loss-integration-tests` / `6e4e39e67c`, app 8/8 PASS, не идёт в main | | [#7381](https://github.com/duckduckgo/apple-browsers/pull/7381) | `alex/cpm-fix-network-crash` | фикс A | фикс B: перезапуск background при замене Network-процесса и мёртвом worker'е | OPEN, remote head `39f94e12eaa4`; 28 success / 24 skipped / 6 failure, включая **Test (Non-Sandbox)** и итоговые отчёты. Прежний красный repro `testNetworkProcessCrashKeepsEveryTabWorking` с 3 ретраями подтверждён. Исправление `f1085846e7ff` — единственный локальный commit поверх remote head; в PR его нет, зелёного CI для него нет | | (нет PR) | `alex/cpm-fix-pixels` | фикс B + PR0 | пиксели `background_restart` и `first_load_wait` для измерения эффекта | держим до слияния PR0, A, B | @@ -1073,3 +1075,29 @@ Local app suite, setup и dedicated scheme/README помечены **`to-be-disa ## Уточнение reviewer instructions в #7379 — 16 октября 2026 После пользовательских правок прочитана актуальная PR description; они сохранены. Из Testing Steps удалены внутренние instructions для intentional-red controls, таблица local validation и пространный local-only/cleanup paragraph, а также manual flag step без способа воспроизвести slow startup. Reviewer steps теперь: macOS 15.4+, открыть `DuckDuckGo.xcworkspace`, выбрать `CPM Integration Tests` / My Mac, Product → Test (⌘U), ожидать 8 PASS / 0 skips; затем запустить указанную команду shared unit suites и ожидать PASS. Dedicated scheme сама задаёт opt-in и fixture flags. Проверки OFF/ON и их результаты остаются исследовательским evidence в этом документе, а не заданием reviewer получать красный Test run. Код, annotations и HEAD не менялись. Последний remote текст сверён после записи; snapshots/diff: `/private/tmp/cpm-pr7379-final-20261016/pr-user-edited.json`, `pr-reviewer-steps-20261016.diff`, `pr-reviewer-steps-after.json`. + + +## Вынос app harness из PR #7379 — 16 октября 2026 + +По запросу весь local-only app harness вынесен в отдельную review-only ветку **`codex/cpm-fix-init-loss-integration-tests`**, основанную непосредственно на очищенном **`alex/cpm-fix-init-loss`**. Тестовая ветка не предназначена для merge в main, отдельный PR на неё не создавался. + +- Production PR #7379: head **`da126120a94b625cf1d9705302c29099b4dbc62d`**, база #7376 / `713d67419a`, **2 коммита, 21 файл**. `7dbe2a25bb` — P1/P2/install/upgrade; `da126120a9` — late recovery + flags/pixels. Все 21 production/unit/schema файла побайтово совпадают с прежним `aec5be9a83`; поведение и defaults не менялись. +- Harness branch: head **`6e4e39e67c64907127bd17197a932b0117a4cb09`**, parent ровно production head `da126120a9`, **один дополнительный commit, 11 test-only paths**. Это пять Swift app-test files + README, CPM scheme и PBX registrations, DEBUG manager factory/config storage/loopback navigation hooks в AppDelegate, ConfigurationStore, Tab. +- Все app hooks и Xcode project changes исключены не только из финального diff PR, но и из его двух новых коммитов. 18 новых deterministic shared unit methods остаются в production PR; восемь app methods — только в harness branch. +- В harness комментариях прежнее `to-be-disabled before merge` заменено на ясное review-only назначение: эта ветка не идёт в main. Explicit scheme opt-in сохранён. Старые checkpoints и исходная история сохранены; дополнительный backup `codex/cpm-fix-init-loss-before-harness-split-20261016` -> `aec5be9a83`. +- Reviewer instructions в PR: unit suites на PR branch; `git fetch origin`, `git switch --detach origin/codex/cpm-fix-init-loss-integration-tests`; открыть workspace, выбрать **CPM Integration Tests / My Mac**, **⌘U**, ожидать 8 PASS / 0 skips; затем вернуться `git switch --detach origin/alex/cpm-fix-init-loss`. Production description и пользовательские правки сохранены. Исторические intentional-red controls не возвращены в reviewer steps. + +Артефакты разделения: `/private/tmp/cpm-harness-split-20261016/`: manifest с production/harness paths и исходными SHA256, раздельные patches, build/unit/lint/signing logs и snapshots PR description. Точные окончательные результаты новой проверки и remote SHA — ниже. + + +### Проверка после разделения + +- Production `da126120a9`: обычная **macOS Browser Debug app build PASS** без harness; нормальная Apple Development подпись, team `HKE973VLUW`; strict app dylib verification PASS. +- Production shared regressions: **179/179 PASS**, 0 failures/skips; 18 новых unit methods сохранены в PR. +- Review-only harness `6e4e39e67c`: полный **`xcodebuild test`** (эквивалент Product → Test), **8/8 PASS**, 0 failures/skips/expected failures, отдельная подписанная app/XCTest сборка. Все 32 source hashes неизменны во время run; strict dylib/XCTest signature checks PASS. +- Strict lint: **19 production Swift files / 0 violations**, **8 harness Swift files / 0 violations**. PBX syntax и scheme XML валидны; каждый из пяти harness Swift files зарегистрирован ровно по одному разу в обоих native Integration Tests targets. Выполнен normal signed target, не отдельный App Store runtime run. +- Подтверждены remote SHA обоих branches и GitHub PR diff: production `da126120a94b625cf1d9705302c29099b4dbc62d`, harness `6e4e39e67c64907127bd17197a932b0117a4cb09`; parent harness совпадает с production head. Production PR остаётся на базе #7376. В рабочей директории снова `alex/cpm-fix-init-loss`, git status чистый. +- `validation-summary.json`, `pr-after.json`, `remote-heads.txt`, `harness-enabled.xcresult` и JSON evidence находятся в `/private/tmp/cpm-harness-split-20261016/`. Generated Package.resolved side effect сохранён и убран из рабочей копии; production dependencies/ZIP не менялись. +- Новые шесть disabled controls после branch-only split не повторялись: предыдущие **6/6 functional FAIL** на эквивалентном production/harness code остаются историческим evidence в `/private/tmp/cpm-pr7379-final-20261016/`. Нового stress/iOS runtime run не заявляется. P3, прежние P5 app и natural-production/iOS ограничения сохраняются. Remote CI нового head — отдельная незавершённая проверка, snapshot `ci-after-split.json`. + +Ранние формулировки о local-only suite внутри production PR и необходимости disable перед merge описывают прежнюю структуру. В актуальном PR этих файлов и hooks нет; review-only branch целиком остаётся вне main. 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 0ef7c8fb..16f0c408 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 --- +> **Актуально — 16 октября 2026, harness вынесен из PR.** [#7379](https://github.com/duckduckgo/apple-browsers/pull/7379): **`alex/cpm-fix-init-loss` / `da126120a9`**, база #7376, **2 коммита / 21 файл**, production fixes + 18 новых shared unit regressions. Все local-only app tests, Xcode entries и DEBUG app hooks — только в **[`codex/cpm-fix-init-loss-integration-tests`](https://github.com/duckduckgo/apple-browsers/tree/codex/cpm-fix-init-loss-integration-tests) / `6e4e39e67c`**, один дочерний commit от PR head; **эта ветка не идёт в main**. Проверено: production app build PASS, unit **179 PASS**, harness app **8/8 PASS**, strict lint **19+8 / 0**. Reviewer steps в PR обновлены и пользовательские правки сохранены. Ниже сохранена датированная история; прежние 3 commits / 32 files и app harness в PR больше не актуальны. + > **Актуальный итог — 16 октября 2026, после force push.** [PR #7379](https://github.com/duckduckgo/apple-browsers/pull/7379) теперь поверх **#7376** (`alex/cpm-messaging-readiness-telemetry`), head **`aec5be9a83`**, ровно **3 коммита / 32 файла**. Старый worktree `cpm-fix-init-loss` удалён; текущая директория `alex/cpm-fix-p1-p2` теперь на ветке `alex/cpm-fix-init-loss`. Checkpoint **`367759cbc1`** и backup старой истории сохранены. Проверка через production feature flags **без создания/переключения коммитов**: signed app **8/8 PASS ON**, **6/6 функциональных FAIL OFF**, unit **179 PASS**, strict lint **27 / 0**, pixel validators обеих платформ PASS. Новый late-reload flag **default disabled**. Описание PR/шаги и local-only `to-be-disabled before merge` annotations обновлены; GitHub CI ещё не объявляется green. Подробная финальная сверка — в конце документа. **Ниже сохранена датированная история: прежние «не закоммичено», старые head/base и over-budget limitation не являются текущим статусом.** > **App integration update — 16 октября 2026, 01:48 Бишкек.** В `cpm-e2e-init` добавлены 20 методов настоящего app-hosted CPM suite: финальные **20/20 PASS, 0 failures/skips/expected failures**, группы 18+1+1 на одной signed build. Схема `CPM Integration Tests`; файлы/guards/запуск/ограничения — §5 ниже, полный реестр и история — [[cpm-status-2026-10-15#Финальный app-hosted итог — 16 октября 2026]]. Без commits. Карта остальных worktree/PR ниже сохраняет свою датированную сверку 15 октября. @@ -24,7 +26,8 @@ tags: | `alex/cpm-web-extension-remaining-failures` | та же; `a0717cf098cd` | Основное расследование без A/B watchdog: P1 (3 wake), P2 (9 load failure), P3 (2 cache/cleanup), новые P5/P6 (12 lifecycle + 2 flag). Все 28 repro opt-in; `CPMRepro/` untracked. Production dirty telemetry — прежняя копия, не переносить вместе с тестами | | `cpm-repro-harness` | `alex/cpm-repro-harness`; `dfb96279196d` | PR #7378: базовый harness, быстрые CI-контроли, медленные сценарии и raw WebKit characterization; без новых P5/P6 | | `cpm-fix-init-loss` — историческая строка; worktree удалён 16 Oct | `alex/cpm-fix-init-loss`; `7ad771e227bb` | PR #7379: A, первые init при install/upgrade mid-session; красное/зелёное доказательство отдельно от remaining-failures | -| **`alex/cpm-fix-p1-p2` — актуально 16 Oct** | **`alex/cpm-fix-init-loss`; `aec5be9a83`** | PR #7379 после force-with-lease; база #7376 / `713d67419a`; install/upgrade, P1/P2, late GET recovery + pixels; 8 app methods, 18 новых unit methods; прежний #7378 harness исключён | +| **`alex/cpm-fix-p1-p2` — актуально 16 Oct** | **`alex/cpm-fix-init-loss`; `da126120a9`** | PR #7379: база #7376 / `713d67419a`; 2 commits / 21 files, production fixes/pixels + 18 новых shared unit methods; local-only app harness и hooks исключены | +| — (отдельная ветка, без своего worktree) | **`codex/cpm-fix-init-loss-integration-tests`; `6e4e39e67c`** | Один дочерний commit от `da126120a9`: 8 app methods + scheme/PBX + 3 DEBUG app hooks; 11 test-only paths; не идёт в main; reviewer checkout/run steps в #7379 | | `cpm-fix-network-crash` | `alex/cpm-fix-network-crash`; local `f1085846e7ff` | B поверх A; 5 network/termination сценариев в FullFailure + 11 watchdog unit tests. Remote PR #7381 остаётся на `39f94e12eaa4`, красный Non-Sandbox; локальный fix не запушен | | `cpm-fix-pixels` | `alex/cpm-fix-pixels`; `d6d800846d1f` | A/B + PR0, измерение `first_load_wait`/`background_restart`; отдельный PR не зарегистрирован в текущем статусе | | `alex/cpm-messaging-readiness-telemetry` | та же; `619869ee84c6` | PR0 #7376: readiness/failure/recovery параметры, CI без failure/pending, review required | @@ -356,3 +359,29 @@ Local app suite, setup и dedicated scheme/README помечены **`to-be-disa ### GitHub checks после push Финальная сверка CI для `aec5be9a83`: основные jobs ещё IN_PROGRESS/QUEUED; **Danger — FAILURE**, точная причина — новые pixels требуют label **`privacy review required`**, который создаёт privacy-review task в Asana. Label в этой работе не менялся. Дополнительно Danger предупреждает об отсутствующем Asana Feature Flags project task link для `cpmLateBackgroundDocumentRecovery` в macOS/iOS enum comments и размере PR; это warnings, не причина функциональных app failures. Значения flags и локальные ON/OFF результаты выше подтверждены независимо. Evidence: `/private/tmp/cpm-pr7379-final-20261016/danger-comment.md`, `ci-final.json`. + + +## Вынос app harness из PR #7379 — 16 октября 2026 + +По запросу весь local-only app harness вынесен в отдельную review-only ветку **`codex/cpm-fix-init-loss-integration-tests`**, основанную непосредственно на очищенном **`alex/cpm-fix-init-loss`**. Тестовая ветка не предназначена для merge в main, отдельный PR на неё не создавался. + +- Production PR #7379: head **`da126120a94b625cf1d9705302c29099b4dbc62d`**, база #7376 / `713d67419a`, **2 коммита, 21 файл**. `7dbe2a25bb` — P1/P2/install/upgrade; `da126120a9` — late recovery + flags/pixels. Все 21 production/unit/schema файла побайтово совпадают с прежним `aec5be9a83`; поведение и defaults не менялись. +- Harness branch: head **`6e4e39e67c64907127bd17197a932b0117a4cb09`**, parent ровно production head `da126120a9`, **один дополнительный commit, 11 test-only paths**. Это пять Swift app-test files + README, CPM scheme и PBX registrations, DEBUG manager factory/config storage/loopback navigation hooks в AppDelegate, ConfigurationStore, Tab. +- Все app hooks и Xcode project changes исключены не только из финального diff PR, но и из его двух новых коммитов. 18 новых deterministic shared unit methods остаются в production PR; восемь app methods — только в harness branch. +- В harness комментариях прежнее `to-be-disabled before merge` заменено на ясное review-only назначение: эта ветка не идёт в main. Explicit scheme opt-in сохранён. Старые checkpoints и исходная история сохранены; дополнительный backup `codex/cpm-fix-init-loss-before-harness-split-20261016` -> `aec5be9a83`. +- Reviewer instructions в PR: unit suites на PR branch; `git fetch origin`, `git switch --detach origin/codex/cpm-fix-init-loss-integration-tests`; открыть workspace, выбрать **CPM Integration Tests / My Mac**, **⌘U**, ожидать 8 PASS / 0 skips; затем вернуться `git switch --detach origin/alex/cpm-fix-init-loss`. Production description и пользовательские правки сохранены. Исторические intentional-red controls не возвращены в reviewer steps. + +Артефакты разделения: `/private/tmp/cpm-harness-split-20261016/`: manifest с production/harness paths и исходными SHA256, раздельные patches, build/unit/lint/signing logs и snapshots PR description. Точные окончательные результаты новой проверки и remote SHA — ниже. + + +### Проверка после разделения + +- Production `da126120a9`: обычная **macOS Browser Debug app build PASS** без harness; нормальная Apple Development подпись, team `HKE973VLUW`; strict app dylib verification PASS. +- Production shared regressions: **179/179 PASS**, 0 failures/skips; 18 новых unit methods сохранены в PR. +- Review-only harness `6e4e39e67c`: полный **`xcodebuild test`** (эквивалент Product → Test), **8/8 PASS**, 0 failures/skips/expected failures, отдельная подписанная app/XCTest сборка. Все 32 source hashes неизменны во время run; strict dylib/XCTest signature checks PASS. +- Strict lint: **19 production Swift files / 0 violations**, **8 harness Swift files / 0 violations**. PBX syntax и scheme XML валидны; каждый из пяти harness Swift files зарегистрирован ровно по одному разу в обоих native Integration Tests targets. Выполнен normal signed target, не отдельный App Store runtime run. +- Подтверждены remote SHA обоих branches и GitHub PR diff: production `da126120a94b625cf1d9705302c29099b4dbc62d`, harness `6e4e39e67c64907127bd17197a932b0117a4cb09`; parent harness совпадает с production head. Production PR остаётся на базе #7376. В рабочей директории снова `alex/cpm-fix-init-loss`, git status чистый. +- `validation-summary.json`, `pr-after.json`, `remote-heads.txt`, `harness-enabled.xcresult` и JSON evidence находятся в `/private/tmp/cpm-harness-split-20261016/`. Generated Package.resolved side effect сохранён и убран из рабочей копии; production dependencies/ZIP не менялись. +- Новые шесть disabled controls после branch-only split не повторялись: предыдущие **6/6 functional FAIL** на эквивалентном production/harness code остаются историческим evidence в `/private/tmp/cpm-pr7379-final-20261016/`. Нового stress/iOS runtime run не заявляется. P3, прежние P5 app и natural-production/iOS ограничения сохраняются. Remote CI нового head — отдельная незавершённая проверка, snapshot `ci-after-split.json`. + +Ранние формулировки о local-only suite внутри production PR и необходимости disable перед merge описывают прежнюю структуру. В актуальном PR этих файлов и hooks нет; review-only branch целиком остаётся вне main.