[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

This commit is contained in:
Alexey Martemyanov committed 2026-10-16 19:36:08 +06:00
1 parent ed6b085966
commit 2b0c401b6d
3 files changed
+47

No files matched your search

+31
View File
@@ -6,6 +6,8 @@ tags:
- cpm
- status
---
> **Отдельная ветка P1/P2 — финал 16 Oct, 13:33 UTC.** Новый worktree `alex/cpm-fix-p1-p2` от текущего `alex/cpm-messaging-readiness-telemetry` (`01d4a0ec22`): только P1/P2-кандидаты и необходимые тесты. Новых методов **2 app + 4 unit**; **22 — полный старый research app-набор**. На новой signed app-сборке **2/2 PASS**, unit **165 PASS**, strict lint 0; те же два app-теста при выключенных flags дают ожидаемые функциональные FAIL. Текущая база использует episode contract: P2 `failed_measurement_response`, `reload_state=none`, плюс реальная доставка initResp в тот же документ без навигации. История исправленного test teardown сохранена. Коммитов нет; scratch не изменён; подробности и артефакты — в конце документа.
# CPM Web Extension: единый статус, обновление 16 октября 2026
@@ -844,3 +846,32 @@ P2 first pass **85.234 s**, повтор **84.776 s**. Фактический re
`enabled.xcresult`: 1 PASS / 1 FAIL. P1 PASS (49.389 с). P2 функциональные assertions прошли: реальная error 6, first-failure snapshot, восстановление native dashboard и page initResp исходного документа, `web_extension_cpm_episode(outcome=failed_measurement_response,reload_state=none)`, healthy existing tab/new tab/new window. Итоговый P2 FAIL (84.990 с) вызван штатным `TestRunHelper.swift:453` deallocation guard: оставшиеся AppKit window-chrome views. Это не зелёный app-прогон и не считается PASS.
Для исправления fixture добавлены локальные autoreleasepool вокруг проксируемого `collectDiagnostics` и синхронного unload/configuration teardown; deallocation guard не отключён, исключения не добавлены. `build-cleanup.log`: TEST BUILD SUCCEEDED. Повтор обоих app-тестов выполняется в `enabled-cleanup.xcresult`; результат cleanup ещё проверяется. Исходный scratch сверён с сохранёнными hash предыдущего 22/22 прогона: ни один из его файлов не изменён.
### Повтор app-прогона: оба положительных сценария PASS
`enabled-cleanup.xcresult`: **2/2 PASS, 0 skips, 0 failures**, exit 0. P2 84.950 с; P1 49.376 с. Штатные deallocation checks включены и прошли после локальных autoreleasepool в fixture. Production-код с момента успешных 165 unit-тестов не менялся. P2 evidence содержит actualBackgroundLoadError `[6]`, failed first probe, healthy existing/new-window/new-tab probes, terminal `failed_measurement_response` / `reload_state=none`; отдельные assertions проверяют доставку page initResp тому же исходному документу до следующей навигации и тот же context object. P1 evidence: healthy baseline и первый document после idle wake, no failures/episodes. Strict verification финальных app debug dylib и загружаемого XCTest bundle также PASS.
SwiftPM автоматически обновил только package-local content-scope-scripts pin 17.27→17.29 (текущий base `BrowserServicesKit/Package.swift` уже требует exact 17.29 и workspace lock уже имеет 17.29). Этот побочный diff сохранён как `swiftpm-generated-pins.diff` и отменён только в новом worktree; зависимостей в итоговом изменении нет. Baseline ZIP и все исходники финальной сборки сверены по `cleanup-source-hashes.json`: drift отсутствует.
Отрицательный контроль на тех же бинарниках выполняется в `disabled.xcresult`, с единственной дополнительной test-env переменной `CPM_APP_INTEGRATION_DISABLE_P1_P2_FIXES=1`. Финальный итог контроля будет записан отдельно.
### Финальный итог отдельной ветки P1/P2 — 16 октября 2026, 13:33 UTC
**Готово без коммитов:** `/Users/admin/DuckDuckGo/apple-browsers.git/alex/cpm-fix-p1-p2`, branch `alex/cpm-fix-p1-p2`, HEAD/base `01d4a0ec22b4702ca9f9ea37757e060772ec7fa9` из `alex/cpm-messaging-readiness-telemetry`. Шесть новых методов: **2 app + 4 lifecycle unit**, не 22; остальные 20 исследовательских app-кейсов оставлены в исходном worktree.
| Проверка этой ветки | Результат | Артефакт |
|---|---|---|
| Signed app: P2 same-document recovery | PASS, 84.950 с | `enabled-cleanup.xcresult` |
| Signed app: P1 first document after slow wake | PASS, 49.376 с | `enabled-cleanup.xcresult` |
| Lifecycle (включая 4 новых и существующие navigation-gate проверки) | 31 PASS, 0 skips | `unit.log` |
| Существующие manager / background-load / health-monitor tests | 134 PASS, 0 skips | `unit-related.log` |
| Те же бинарники, P2 recovery flag OFF | Ожидаемый functional FAIL, 104.468 с: timeout same-document recovery после реальной error 6 | `disabled.xcresult` |
| Те же бинарники, P1 gate flag OFF | Ожидаемый functional FAIL, 49.933 с: нет своевременных native dashboard/page initResp, есть first failure | `disabled.xcresult` |
| Strict SwiftLint | 14 Swift-файлов, 0 violations | `lint-final.log` |
| Project registration | plutil PASS; 5 файлов по одному разу в каждом из двух Integration Tests targets | `project.pbxproj` |
Итог положительного app-прогона **2/2 PASS**, unit **165/165 PASS**. Отрицательные контроли намеренно обычные красные XCTest runs, `expectedFailures=0`: это проверка чувствительности функциональных assertions, а не инфраструктурное падение. Deallocation checks в финальном положительном прогоне прошли; первая ошибка cleanup сохранена выше как история. Проверки выполнены на текущей базовой episode-телеметрии, без переноса старых pixel cases или более поздних baseline/init-progress слоёв.
Все артефакты: `/private/tmp/cpm-p1-p2-clean-20261016/`; машинная сводка `validation-summary.json`, source hashes `cleanup-source-hashes.json`, JSON evidence в `enabled-cleanup-evidence/` и `disabled-evidence/`. Все 18 зафиксированных файлов (включая unchanged ZIP) неизменны во время финальных прогонов. Исходный scratch также сверён с hash прежнего 22/22 прогона: изменений нет. HEAD не сдвинут, commitsCreated=0, generated package pin diff убран из новой ветки.
Границы доказательства сохранены: P1 проверяет imposed 8 s worker start при gate cap 5 s; P2 — реальную error 6 на macOS с одним начальным window/tab и остановкой только своего PID. Естественный триггер в затронутых production-сессиях и поведение iOS suspension/resume этим не доказаны; отдельный resume recovery не добавлен. P3/P5 и другие research-сценарии не включены в чистую ветку и их прежние ограничения не сняты.