[2026-10-16] eagle: 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 01:43:28 +06:00
1 parent 903c55e7e8
commit fbfe69c5fe
2 files changed
+16 -2

No files matched your search

+13 -2
View File
@@ -7,11 +7,13 @@ tags:
- status
---
# CPM Web Extension: единый статус на 15 октября 2026
# CPM Web Extension: единый статус, обновление 16 октября 2026
Внутренний документ. **Цифры из ClickHouse, в публичные PR, комментарии и issues не переносить** (репозитории `duckduckgo/apple-browsers` и `duckduckgo/duckduckgo-privacy-extension` публичные). Заменяет заметку `cpm-telemetry-data-requirements-2026-10-15` (теперь ссылка сюда). Исторические срезы с собственными датами и знаменателями: [[cpm-web-extension-public-attribution-2026-10-05]], [[cpm-web-extension-data-analysis-summary-2026-10-08]], [[cpm-web-extension-repro-and-fix-2026-10-08]]. Актуальная карта worktree и точек входа добавлена в [[cpm-web-extension-code-guide-2026-10-09]]; её прежние разделы сохранены как карта на 9 октября.
**Актуализировано 15 октября, 17:26 UTC / 23:26 Бишкек.** Разделы 1–9 — сводный статус; §10–11 — сохранённая хронология экспериментов, где «пока», «не найдено» и красные ожидания относятся к моменту записи. Текущий итог всех 14 P5/P6-проверок, границы доказательства и команды — §12. PR/CI сверены read-only через GitHub; результаты локальных тестов сверены с существующими логами и исходниками, в этом документационном проходе тесты и ClickHouse-запросы заново не запускались.
**Дополнение 16 октября: app-hosted integration tests.** Добавлены 20 методов в `cpm-e2e-init`, схема `CPM Integration Tests`, штатная Apple Development signing, без commits. Все результаты, включая красные совместные прогоны, отрицательный P3 и ограничение app P5, находятся в §13. Финальную сводку §13 считать текущей; ранние «пока нет результатов» — сохранённая хронология. PR/CI и ClickHouse в рамках app-тестов заново не запрашивались.
**Предыдущая сверка — 15 октября, 17:26 UTC / 23:26 Бишкек.** Разделы 1–9 — сводный статус; §10–11 — сохранённая хронология экспериментов, где «пока», «не найдено» и красные ожидания относятся к моменту записи. Текущий итог всех 14 P5/P6-проверок, границы доказательства и команды — §12. PR/CI сверены read-only через GitHub; результаты локальных тестов сверены с существующими логами и исходниками, в этом документационном проходе тесты и ClickHouse-запросы заново не запускались.
## 1. Коротко
@@ -630,3 +632,12 @@ The app P5 method is now deliberately limited to **one** real failed navigation
`signed-pinned-single-probe.xcresult`: **PASS, 73.806 s**, no skip, signed final build. Two healthy page/native handshakes with real idle unloads establish background creation count 2. The real first-window close leaves the shared pinned Tab in the app but removes it from WebKit: the next real navigation receives no initResp, triggers the production failure (`init_stage=none`, `tab_in_context=false`, matching controller, creation count 2). The surviving regular tab and a newly created tab both receive page initResp and forwarded native dashboard. JSON attachment saved in `signed-pinned-single-probe-evidence/`.
The earlier longer attempts remain **red** and are not reclassified: this app method proves one lost navigation and unaffected controls, not two app failures/stuck. The DEBUG guard stays enabled. Combined with the separate successful persistent-cache characterization, all **20 distinct methods now have corresponding signed passes**, but the final shared 18-method regression and a current-source cache rerun are still running. No single combined 20-method run is claimed.
### Final combined regression was red: do not claim 20/20 together
`signed-regression-final.xcresult`: **18 methods, 16 passed, 2 failed, 0 skipped** (XCTest summary, not just stdout). All ten core diagnostics methods passed again. Signed P1/P2/flag/crash controls preceding Network also passed, including the real WebKit timeout in 68.464 s. Network termination produced real failure in **4/4 tabs across two windows**, but explicit recovery threw `extensionNotFound` for its owned extracted extension. The shared TestRunHelper subsequently timed out waiting for view deallocation; the next slow-wake method crashed with signal INT before it could attach evidence. Therefore those two latest combined outcomes are red, despite their earlier isolated passes. Exported 17 JSON reports and the summary remain in `signed-regression-final-evidence/` and `signed-regression-final-summary.json`.
Source check: production `WebExtensionLoader.loadWebExtension` throws this error when `storageProvider.resolveInstalledExtension` returns nil, after the context unload. Harness resources used the **globally swizzled** `FileManager.temporaryDirectory/com.duckduckgo.macos.tests`; TestRunHelper initialization and test-bundle completion delete that shared root. The deleting actor for this run was **not identified**, so this is an isolation hazard, not yet a proven cause. Harness extraction is now placed under unswizzled `NSTemporaryDirectory()/cpm-app-UUID`, outside the helper's global cleanup folder; resolution still delegates to the production storage implementation and logs folder/root existence on failure. No browser reload/failure expectation is weakened. A new signed build/retest is required.
`signed-large-cache-final.xcresult`: **PASS, 47.232 s** on the preceding final build, owned store `AFFE4DCD-59E5-4DFC-9D2C-6874C2FE498C` removed successfully. P3 remains negative. These cache and P5 passes do not make the red combined run green.
@@ -214,3 +214,6 @@ Worktree `/Users/admin/DuckDuckGo/apple-browsers.git/cpm-e2e-init`, branch `scra
Запускать с **project signing defaults**, как в Xcode; unsigned override оказался ошибкой bootstrap и удалён. CLI run recipe находится в README. Для реального 30s WebKit timeout нужен test-host env `CPM_APP_INTEGRATION_EXPENSIVE=1`; для persistent cache — `CPM_APP_INTEGRATION_CACHE=1`, при необходимости `CPM_APP_INTEGRATION_CACHE_ENTRIES`, execution allowance 2400 s. Cache case лучше выбирать отдельно; этот opt-in включает fresh persistent UUID configuration в harness. Обычные запуски используют nonpersistent stores.
Артефакты `/private/tmp/cpm-app-integration-20261015/`: signed `.xcresult`, logs, exported JSON, `app-test-results.json` (история результатов и hashes исходников). **Финальные результаты сверять с §13 [[cpm-status-2026-10-15]], не считать каждый characterization test доказательством воспроизведения причины.** P3 может пройти с отрицательным outcome; background crash может самоизлечиться. App P5 ограничен одной потерянной навигацией и контролями: более длинная попытка прерывалась DEBUG guard закрытого окна в XCTest. Persistent P5/stuck доказан отдельно SPM, что не превращает app attempt в green. iOS/device-only причины и естественная потеря listener metadata этим suite не доказаны.
App harness isolation follow-up: extension resources now use an owned UUID directory under **unswizzled `NSTemporaryDirectory()`**, outside `com.duckduckgo.macos.tests`. The latter is a shared FileManager swizzle target that TestRunHelper removes on host initialization/bundle completion. A preceding joint run passed 16/18 but lost its Network-test extension resource before reload (`extensionNotFound`), then the next wake test hit INT. The deleter was not identified; latest status must include that red run and the resource-isolation recheck, rather than treating prior isolated passes as a green combined suite. `CPMAppExtensionStorage.resolveInstalledExtension` still delegates to production and adds only missing-folder/root logging.