[2026-10-16] eagle: personal/plans/balda-callee-prism-plan.md personal/projects/balda/execution-broker.md personal/projects/virfield.md 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 21:03:05 +06:00
1 parent e4b1607d24
commit a7f1b3587a
6 files changed
+91 -10

No files matched your search

@@ -283,3 +283,18 @@ Worktree `cpm-e2e-init`, HEAD всё ещё `46f25175c7c42766cab23ea39f447f075c7
Пять новых dailyAndCount pixels различают install readiness, upgrade readiness, idle background wake, error-6 background retry и late document reload. `background_ready` — факт успешного WK callback после использованного navigation wait (для error-6 retry — любого успешного retry), не доказательство initResp; `reload_started` — принятый WK reload; `response_received` — однозначно атрибутированный dashboard response после reload, не ACK content script. App tests отдельно требуют настоящий page initResp. macOS names заканчиваются `_macos`, iOS — стандартные platform/form-factor suffixes. Только outcome, appVersion и стандартные platform parameters, без URL/tab ID/form values/raw error.
На данном этапе: targeted unit suite **178 PASS**, strict lint **17 Swift / 0 violations**, pixel definitions + wide-event consistency/immutability validators обеих платформ PASS. Подписанная app-сборка и реальные install/upgrade 8000 ms regression runs ещё не завершены; over-budget failure пока НЕ объявлен исправленным. Новые артефакты: `/private/tmp/cpm-late-recovery-20261016/`.
## Итог late background recovery и fix instrumentation — 16 октября 2026
Актуальный стейт: checkpoint **`dff29dfb1e`** сохранён до новых изменений; новый код/tests/pixels в `alex/cpm-fix-p1-p2` остаются **незакоммиченными**. Новый flag **`webExtensions.cpmLateBackgroundDocumentRecovery` default disabled**, динамически проверяется до попытки и после async safety check; remote config не менялась. Navigation cap по-прежнему **5 s**.
Новый `CPMBackgroundReadinessRecovery.swift` в shared Autoconsent получает startup UUID manager, commit/failure/response/navigation events monitor и зарегистрированный GET WKWebView от platform tabs. Документ должен commit во время известного unfinished startup; только genuine missing-response timeout вместе с successful public background callback допускают одну GET-перезагрузку в пределах 30 s startup. Изменённый/loading/closed/failed document, main-document form edits/contenteditable, background app state, flag OFF и context replacement запрещают reload. Идентичность проверяется после async JS. Результат — replacement document на том же URL, сохранённый extension context; P2 background-only recovery исходного документа остаётся отдельным механизмом. Safety check использует настоящий async WK API label `contentWorld:`; ранние красные app runs поймали ошибочный callback overload с Void, и вся история сохранена.
Пять отдельных dailyAndCount pixels с prefix `web_extension_cpm_`: `install_readiness`, `upgrade_readiness`, `background_wake`, `background_load_retry`, `late_document_reload`. macOS suffix `_macos`, iOS standard suffixes. Первые четыре: `background_ready` после использованного slow navigation wait (для P2 любого successful retry), без page-ACK claim; последний: `reload_started` и однозначный dashboard `response_received` после replacement navigation. Ответ исходного документа во время safety check не получает credit. Только outcome и стандартные параметры, без URL/tab IDs/field values/raw errors. Injection + PixelKitMock adapter test, definitions/validators обеих платформ PASS. Existing episode contract сохранён; document reload даёт `failed_tab_response`, extension `reload_state=none`.
**Проверено на одной финальной подписанной сборке:** общий набор **8/8 PASS** (7 app/WebKit scenarios + adapter test); новые 8-second install/upgrade **2/2 PASS**, затем **10/10 repetitions PASS**; новый flag OFF **2/2 функционально FAIL**, 0 skips/expected failures/teardown errors. Во всех 14 positive over-budget executions первая загрузка **5.085–5.328 s**, затем ровно один reload, настоящий page initResp + native dashboard, URL/context сохранены. Edit-veto app test PASS; прежние P1/P2/install/upgrade PASS. Targeted units **179 PASS** (9 новых recovery; всего 18 новых unit methods в ветке), lint **17 files / 0 violations**, новый recovery без compiler warnings. Shared iOS Simulator и FeatureFlags-iOS builds PASS; полный iOS app/runtime не запускался.
Code entry points: manager background startup callback/typed fix marker; monitor `backgroundReadinessRecovery` и `registerReadinessRecoveryDocument`; macOS PrivacyDashboardTabExtension weak view + real initiating request method; iOS TabViewController main-frame GET tracking; platform factories dedicated provider; PixelFiring adapters + platform JSON5 definitions. Все 8 app methods остаются в существующем CPM file/scheme; SharedPackages files подхватывает SwiftPM без pbxproj изменений.
Все facts/history/guards/pixel semantics: [[cpm-status-2026-10-15]], `/private/tmp/cpm-late-recovery-20261016/validation-summary.json`. Source/app/test binary hashes стабильны; bundled ZIP равен checkpoint; package pin side effect убран; scratch/#7379 не менялись. Это opt-in bounded GET recovery, не универсальное исправление permanent background failures/unsafe documents. Прежние P3/P5 и natural-production/iOS suspension ограничения не сняты; 22 historical research methods отдельно.