[2026-10-16] eagle: work/projects/cpm-readiness-telemetry-tech-design-2026-10-15.md work/projects/cpm-status-2026-10-15.md
This commit is contained in:
1 parent
c7da49d791
commit
903c55e7e8
2 files changed
+24
-3
No files matched your search
@@ -138,4 +138,13 @@ The ten core methods passed together (`signed-core.xcresult`, 0 failures): healt
|
||||
|
||||
Observed library metadata: message loss gives `init_stage=none`; delayed settings gives `received`, then recovery on `failed_navigation` (`4s_to_10s`); a missing dashboard confirmation despite page receipt gives `response_sent`; later-document recovery is `later_navigation`. These are metadata captured before the platform pixel adapter/daily deduplication, not proof of an actual production HTTP payload or production causal attribution. JSON artifacts contain only owned fixture page URLs and test observations; pixel parameters remain the existing bucketed metadata.
|
||||
|
||||
Additional app/WebKit characterization tests cover real shared-pinned-window closure, main/embedded flag transitions, startup race, process termination, slow idle wake and the real error-6 load timeout. Their final outcomes and the preserved red experiments are tracked in [[cpm-status-2026-10-15#13. Integration tests в настоящем приложении — работа начата]]. iOS lifecycle and natural listener-metadata loss remain unproven by the macOS suite. The initial unsigned CLI workaround was unnecessary; the original project signing configuration builds successfully and is used for the reported results. The temporary vault bypass has been removed.
|
||||
Additional app/WebKit characterization tests cover real shared-pinned-window closure, main/embedded flag transitions, startup race, process termination, slow idle wake and the real error-6 load timeout. Their final outcomes and the preserved red experiments are tracked in [[cpm-status-2026-10-15#13. Integration tests в настоящем приложении — реализация и проверки]]. iOS lifecycle and natural listener-metadata loss remain unproven by the macOS suite. The initial unsigned CLI workaround was unnecessary; the original project signing configuration builds successfully and is used for the reported results. The temporary vault bypass has been removed.
|
||||
|
||||
|
||||
### Scope and source-linked characterization follow-up
|
||||
|
||||
The known-path methods also execute the real AppDelegate main/embedded flag transitions (including a first main enable), actual shared-pin window closure, the owned test host's WebKit process faults and cache reload. P5's final app method passed (`signed-pinned-single-probe.xcresult`, 73.806 s): after two healthy/idle cycles, real window closure causes one failure with no page initResp, `tab_in_context=false`, matching controller and background creation bucket `2`; regular and new-tab controls remain healthy. Longer app attempts reached the enabled DEBUG MainWindow lifetime guard during the second timeout and remain documented as red experiments. Persistent P5/stuck proof belongs to the separate SPM suite, not this narrower app method.
|
||||
|
||||
The persistent-cache characterization now completes cleanup (`signed-large-cache-session-end.xcresult`, 47.519 s). A fresh UUID website/controller profile actually receives 20,000 cacheable resources and has disk-cache records; real reload changes the extension baseURL. In that run, immediate post-reload messaging was healthy and `p3NoBackgroundFailure=false`. Passing this test means the experiment and recovery/cleanup controls succeeded; **P3 itself was not reproduced**. `_terminateNetworkProcess` is used only in teardown of the owned test host, after evidence capture/data clearing, to permit removal of that UUID store. It adds no selector to production diagnostics and changes no telemetry schema.
|
||||
|
||||
P1 slow idle wake and P2 real WebKit load timeout have signed app passes; the latter records actual error 6 near the 30-second deadline after stopping the owned worker. These are macOS mechanisms, not proof of the causal attribution of iOS production groups. Runtime listener-metadata loss, iOS suspend/resume/device errors and actual production flag changes remain unresolved. The final current-source regression outcome will be recorded in the main status; original CI/PR and ClickHouse snapshots above are dated 15 October and have not been refreshed by these local app tests.
|
||||
@@ -507,13 +507,13 @@ Strict SwiftLint запускался для восьми перечисленн
|
||||
|
||||
Эта актуализация — документация. Новые app/WebKit fixes, telemetry/schema changes, commit/push/PR, сообщения ревьюерам, переключения remote flags и новые iOS/device проверки не выполнялись. Старые результаты до исправления ожиданий сохраняются, а causal attribution production-групп не повышена до доказанной.
|
||||
|
||||
## 13. Integration tests в настоящем приложении — работа начата
|
||||
## 13. Integration tests в настоящем приложении — реализация и проверки
|
||||
|
||||
Запрос: без commit добавить app integration tests, по возможности воспроизвести известные сбои, обязательно разделить slow load, одну потерянную навигацию с recovery, persistent single-tab, несколько tabs одного окна и все окна.
|
||||
|
||||
Выбран `cpm-e2e-init` (HEAD `46f25175c7c42766cab23ea39f447f075c7bdd24`): здесь уже PR0/baseline/init_stage и изменённый до этой работы JS bundle для init-progress. Существующие dirty bundle и SPM harness сохраняются. Новый слой — macOS app-hosted `Integration Tests`, реальный DuckDuckGo.app/AppDelegate/Tab/MainWindowController, production navigation/native/diagnostics. Это отличается от прежнего standalone SPM harness с собственными window delegates.
|
||||
|
||||
Планируется отдельная схема без destructive UI-scheme clean-app pre-action. Внешние сервисы/config и pixel transport изолируются, production monitor/navigation callbacks вручную не подделываются. Естественные P5 shared-window / условный P6 flag / process failure и controlled diagnostic scopes будут явно различаться. Начата предварительная сборка в `/private/tmp/cpm-app-integration-20261015/`; результатов новых integration tests пока нет.
|
||||
**Исходная запись перед реализацией (история, не текущий итог).** Планируется отдельная схема без destructive UI-scheme clean-app pre-action. Внешние сервисы/config и pixel transport изолируются, production monitor/navigation callbacks вручную не подделываются. Естественные P5 shared-window / условный P6 flag / process failure и controlled diagnostic scopes будут явно различаться. Начата предварительная сборка в `/private/tmp/cpm-app-integration-20261015/`; результатов новых integration tests пока нет.
|
||||
|
||||
### App integration: реализация, 16 октября
|
||||
|
||||
@@ -618,3 +618,15 @@ WebKit cleanup contract checked against primary sources: [profiles API](https://
|
||||
`signed-pinned-scoped-pools.xcresult` again interrupted after the first lost navigation. The harness printed `currentEventStillOwnsWindow=false`, so advancing the event queue demonstrably does **not** solve the remaining lifetime problem. That neutral-event workaround is removed. The earlier graph also showed the closed MainWindow directly retained in an autorelease pool while the async XCTest was running; the sole original autorelease call site was not established. Synchronous harness navigation/diagnostics/polling remain inside scoped pools as normal lifetime hygiene.
|
||||
|
||||
The app P5 method is now deliberately limited to **one** real failed navigation (`tab_in_context=false`, matching controller, `bg_view_creations=2`) after two healthy/idle cycles and actual shared-pin window closure, followed by healthy regular/new-tab controls. It no longer attempts the second four-second timeout that reaches the app's eight-second DEBUG window guard before XCTest can finish. The guard is not disabled, no controller/tab detach is fabricated, and no claim is made that app-hosted persistent P5/stuck passed. The separate source-linked SPM P5 tests retain the existing two-failure/stuck proof. A new app run is still required for the narrowed method.
|
||||
|
||||
|
||||
### Persistent cache cleanup verified
|
||||
|
||||
`signed-large-cache-session-end.xcresult`: **PASS, 47.519 s**, no skip. The 20,000-resource persistent-cache scenario completed; teardown printed `CPM APP REMOVED PERSISTENT STORE F705D072-DDD7-4ED7-BA23-C57A6193EA7E` after clearing owned data and terminating this test host's Network session. The earlier orphan UUID from the second red cleanup was separately removed only after its owner exited, based on the harness's explicit UUID log. P3 remains a negative reproduction result; this passing characterization is not evidence of the no-background mechanism. There are now 19 distinct passing methods from corresponding signed runs, while P5's narrowed one-navigation method still requires its final run. A final build/regression is starting; it will keep the cache opt-in separate from the ordinary nonpersistent suite.
|
||||
|
||||
|
||||
### P5 one-navigation app characterization verified
|
||||
|
||||
`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.
|
||||
Reference in new issue
Block a user