[2026-10-16] eagle: 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:
1 parent
f2d4c4efd0
commit
c19514e1ab
4 files changed
+70
-4
No files matched your search
@@ -12,17 +12,17 @@ tags:
|
||||
---
|
||||
# Virfield — текущее состояние
|
||||
|
||||
Актуальный checkpoint 2026-10-16: установлен и запушен код `a45655ff78d5b124ed938ef6ea244ba84a819d72`, версия `0.0.0-local-golden-sparse`, daemon PID81129. Ветка `codex/retire-lume-release-hardening`; main/tags/release не менялись, push проверенных результатов разрешён пользователем на сессию. Archive SHA256 `010c278a61ef211b252b3e0cee67ca67ea3627729b191d00b86dde6af65910d6`. Signing/FDA, config/keys, schema8 и все8 baseline manifests сохранены. Local CI/race, Staticcheck0.7.0, Govulncheck1.6.0/0reachable, Gitleaks8.30.1/tree+239commits, Linux cross-build, archive MCP PASS. Exact installed HTTP/freshstdio/all4runbooks/resources/status/anonymous401 PASS0.853sec. F4 исправлен и принят: source44805877760bytes, destination44794757120bytes при logical120000000000bytes; полные hashes до/после двух native/reboot/workload/release циклов совпали, source/privateidentity/8baseline неизменны. Принятый новый golden сохранён девятым. Journal `/private/tmp/virfield-local-golden-sparse-live-20261016/journal.json`, final `verified-transfer-native-accepted`. Не replay завершённые installer/driver. Фактический owning MCP всё ещё PID66295 со старым executable inode; config path верный. Пользователь сейчас не может Restart; gate открыт, adapters не убивались. F3 resource arithmetic проверяется в source, ещё не установлен.
|
||||
Актуальный checkpoint 2026-10-16: установлен и запушен код `a45655ff78d5b124ed938ef6ea244ba84a819d72`, версия `0.0.0-local-golden-sparse`, daemon PID81129. Ветка `codex/retire-lume-release-hardening`; main/tags/release не менялись, push проверенных результатов разрешён пользователем на сессию. Archive SHA256 `010c278a61ef211b252b3e0cee67ca67ea3627729b191d00b86dde6af65910d6`. Signing/FDA, config/keys, schema8 и все8 baseline manifests сохранены. Local CI/race, Staticcheck0.7.0, Govulncheck1.6.0/0reachable, Gitleaks8.30.1/tree+239commits, Linux cross-build, archive MCP PASS. Exact installed HTTP/freshstdio/all4runbooks/resources/status/anonymous401 PASS0.853sec. F4 исправлен и принят: source44805877760bytes, destination44794757120bytes при logical120000000000bytes; полные hashes до/после двух native/reboot/workload/release циклов совпали, source/privateidentity/8baseline неизменны. Принятый новый golden сохранён девятым. Journal `/private/tmp/virfield-local-golden-sparse-live-20261016/journal.json`, final `verified-transfer-native-accepted`. Не replay завершённые installer/driver. Фактический owning MCP всё ещё PID66295 со старым executable inode; config path верный. Пользователь сейчас не может Restart; gate открыт, adapters не убивались. F3 `a2aab208f74e320e8343d2a2a0d41a2cd8da8231` проверен/запушен/упакован; archive SHA256 `7c51880aca65673d8e7cd0736f418779406be1521d87d38118fe14aa9f39a3d1`, exact fresh stdio19tools/all4packagedrunbooks/resources PASS. F2 `89344ef84ab30e728dd40ca4c877cb5feaab0903` также проверен и запушен: bounded typed drift/endpoint/backend/listener/stream diagnostics,32/kind/lease, restart/cleanup persistence, privacy/EOF/race tests; fullCI, finalaffectedAPI/MCP, Staticcheck/Govulncheck0reachable/Gitleaks241commits PASS. F2+F3 ещё не установлены; пакет `0.0.0-drift-diagnostics` собран, production Story с живым worker пока блокирует idle upgrade.
|
||||
|
||||
**Реализовано и проверено:** random VM-account rotation удалена, новые аккаунты `admin/admin`; стандартный пароль не меняется. Известный legacy пароль переводится в стандартный только внутри нового disposable clone; source credentials/golden не перезаписываются, unknown login-keychain не сбрасывается. Samsung Monterey12.7.6/Xcode13.4.1 на0f8:2/2полных nativeGUI/newSSH/standard-password до-после actualreboot/newUUID/1920/workspace checksum/Swift compile-run/artifact/RFB/cross-key/release/revocation PASS. Новый exact macOS27 `uitest-27-v1` golden квалифицирован с actualreboot/native/Xcode27.0(27A266a); наa1a6 его2/2полныхworkercycles со standard-password/nativeGUI/newSSH/reboot/1920/Swift/workspace/artifact/RFB/release PASS. Кандидат `image-f11d9a1ee2991eada08c4f734c33df6d`, template/name `release-check-macos27-standard-v1` retained stopped/image_ready. Все исходные7 manifests сохранены. Старый macos27 golden всё ещё отклоняет login-copy auth(-25293); его own8d99fixture released после bounded evidence, причина исторического пароля/повреждения не установлена. Успех freshgolden не объявлен исправлением старых items.
|
||||
|
||||
**ASIF defect доказан и исправлен:** старый runtime кэшировал disk_bytes0 при неизменномconfig, хотя freshstopped `tart get` давал140GB. A1a6 кэширует только положительный размер; zero/absent red→green и positive-cache reuse tests PASS. Новый public-base factory на установленномa1a6 реально наблюдалzero→140000000000bytes безрестарта daemon, прошёл qualification и2полныхnative/reboot/workload/artifact/RFBworkercycles; собственныеfactory/workers удалены, исходные8manifests совпали. Журналы `/private/tmp/virfield-standard-uitest-macos27-20261015/journal.json` и `/private/tmp/virfield-inventory-factory-a1a6bd9-20261015/journal.json`; не replaybuild/reboot/driver. Прежний security-v1 factory0f8 был успешно квалифицирован, затем sourceunknown-size отказ до workerallocation, после чего временный factory удалён; это не registry roundtrip.
|
||||
|
||||
**Production Broker/Prism candidate script-only: PASS.** Поддерживаемый per-run `image_id` выбрал новый UI-test кандидат через реальные production Broker/Prism MCP в Balda network; default template/config не менялись. Run `run-059b42d6cdc515123aa7dc3e973f96bb`; exact Story binding/keys в `/private/tmp/virfield-broker-candidate-xctest-a1a6bd9-20261015/journal.json`. Actual bootstrap/Callee/XCTest:1test/0fail, `.xcresult`, artifactSHA256, Storycomplete и cleanupdone PASS; providers/Human/chatmessages не запускались. Это не fullCodexStory/denied-write/credential settlement acceptance. После точного согласия пользователя стандартный `macos27` переключён на новый принятый golden; старый golden и все8 manifests сохранены, duplicate candidate template удалён, daemon87631. Затем default production Broker/Prism без per-run image override прошёл actualXCTest1/0, xcresult, artifactSHA256, Storycomplete и cleanupdone: run `run-fac6b0cde10fec26450dc38c4694d5ff`, journal `/private/tmp/virfield-broker-default-xctest-a1a6bd9-20261015/journal.json`. Full Codex Story/denied-write ещё открыты. Пользователь явно разрешил запуск и Telegram-запрос; production run `run-de5f0928d21f97428502519aab3438d1` дошёл до approval и ожидает решения владельца в Telegram. Driver не отвечает Human автоматически. Journal `/private/tmp/virfield-broker-codex-sparse-20261016/journal.json`; два новых stdlib Python-файла в disposable checkout, без push.
|
||||
**Production Broker/Prism candidate script-only: PASS.** Поддерживаемый per-run `image_id` выбрал новый UI-test кандидат через реальные production Broker/Prism MCP в Balda network; default template/config не менялись. Run `run-059b42d6cdc515123aa7dc3e973f96bb`; exact Story binding/keys в `/private/tmp/virfield-broker-candidate-xctest-a1a6bd9-20261015/journal.json`. Actual bootstrap/Callee/XCTest:1test/0fail, `.xcresult`, artifactSHA256, Storycomplete и cleanupdone PASS; providers/Human/chatmessages не запускались. Это не fullCodexStory/denied-write/credential settlement acceptance. После точного согласия пользователя стандартный `macos27` переключён на новый принятый golden; старый golden и все8 manifests сохранены, duplicate candidate template удалён, daemon87631. Затем default production Broker/Prism без per-run image override прошёл actualXCTest1/0, xcresult, artifactSHA256, Storycomplete и cleanupdone: run `run-fac6b0cde10fec26450dc38c4694d5ff`, journal `/private/tmp/virfield-broker-default-xctest-a1a6bd9-20261015/journal.json`. Full Codex Story/denied-write ещё открыты. Пользователь разрешил запуск и Telegram-запрос; production run `run-de5f0928d21f97428502519aab3438d1` ожидает owner approval. Доставка сообщения/кнопок независимо подтверждена safe metadata snapshot; в19:44:08UTC Telegram options истекли, Broker предлагает владельцу обновить тот же запрос. Driver не отвечает и не обновляет Human автоматически. Исходный run deadline2026-10-15T21:12:19UTC сохраняется. Journal `/private/tmp/virfield-broker-codex-sparse-20261016/journal.json`; два новых stdlib Python-файла в disposable checkout, без push.
|
||||
|
||||
**HTPC blocker и рост лога устранены (2026-10-16).** Исходный `/run/user/1000/speech-dispatcher/log/speech-dispatcher.log`3357126656bytes заполнил tmpfs и блокировал Podman metadata при свободном HDD; own Sequoia9a9partial штатно resolved/released, clone не replay. Сначала exact log был сохранен на HDD, SHA256 `90664f48489073a9f2e2b587433ebabeed337dff3f8b6af3e6af0895d0d6840d` сверен перед truncate. Повторный рост исследован по прямому поручению пользователя: 1687960строк `LINE here` занимали155685558из155836077bytes(99.9%),38запусков. Установленный speech-dispatcher0.12.1-6.fc44 и upstream output_get_voices содержат debugdump всех LIST VOICES на уровне1; waitpid shutdown errors не причина объема. Создан private user config на основе текущего distribution config: изменены только LogLevel3→0 и LogDir→`~/.local/state/speech-dispatcher/log` внеPodman tmpfs; /etc config, TTS/modules/autospawn сохранены. Три свежих default spd-say -O/autospawn/espeak-ng/natural idle exit PASS, новые логи0bytes. По явному указанию «снеси его, включая его бэкап» удалены original155836077bytes и backup3357126656bytes, суммарно3512962733bytes; провереныinode/owner/noopenFD, backupdirectory удалён. Дополнительный defaultautospawn+espeak-ng LIST VOICES послеудаления PASS14806tablelines, originalpath не recreated, новые логи0bytes. Независимая проверка через 133сек: старый лог и каталог бэкапа отсутствуют, все4новых файла0bytes, Podman info PASS, runroot free3357126656bytes. Receipt `/private/tmp/virfield-htpc-speech-log-final-20261016.json`, node `virfield/diagnostics/speech-log-fix-20261016/report.json`; речевойтекст не сохранялся, audibleTTS не тестировался. Fresh standard-policy Sequoia2/2 **и Sonoma2/2** наa1a6 полностью PASS(nativeGUI/newSSH/adminadmin/reboot/newUUID/1920/workspace/workload/artifact/RFB/crosskey/release/revocation), все4workersreleased. Root `/private/tmp/virfield-htpc-standard-after-runroot-a1a6bd9-20261015`. Успешные новые циклы не устанавливают причину исторического Sonoma1200sec stall. Первый F4 transfer job `job-b610b65830c57353f079229d30de7295` завершился, но acceptance отклонён из-за allocation106.4GB; ownedcopy штатно удалён durablejob `job-c118887cc056917a94363a9126a684d4`. Исправленный a45655f transfer `job-bae1394eea3855fd52ab9b24dc16c58e`, новый image `image-445bf1f13caf092c5afa9f594c8f3f86` прошли hashes, sparseallocation и2полных iPadMonterey циклов; source и8baseline сохранены.
|
||||
|
||||
**Полная приемка НЕ завершена.** Открыты фактическая owning-MCP acceptance (пользователь сейчас не может Restart), production full Codex Story/denied-write/credential lifecycle, F1/F2/F5 и оставшиеся maintained-plan hardening gates. F4 и iPad repeat приняты; F3 source implementation/tests в работе, не installed acceptance. Canonical private checkpoint `/private/tmp/virfield-release-current-state.json`. Automation PAUSED по прежнему «Затем стоп»; работа продолжается по прямому поручению, новое расписание не создавалось.
|
||||
**Полная приемка НЕ завершена.** Открыты фактическая owning-MCP acceptance (пользователь сейчас не может Restart), production full Codex Story/denied-write/credential lifecycle (ожидает Telegram owner), F1/F5 и оставшиеся maintained-plan hardening gates. F4/iPad repeat приняты; F2+F3 source проверены и запушены, installation/live acceptance пока открыты. Canonical private checkpoint `/private/tmp/virfield-release-current-state.json`. Automation PAUSED по прежнему «Затем стоп»; работа продолжается по прямому поручению, новое расписание не создавалось.
|
||||
|
||||
## Предыдущие checkpoints (история)
|
||||
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
> **Local app validation complete — 16 Oct 2026, 01:48 Bishkek / 15 Oct 19:48 UTC.** Twenty app-hosted methods passed with **0 failures, skips or expected failures** in three invocations of the same signed build: 18 together, P5 separately, persistent cache separately. This validates the requested slow-load, one-navigation/recovery, single-tab, several-tabs/one-window and all-windows diagnostics scenarios. Source-linked app P1/P2/P5/P6 and Network paths are covered; P3 was **not reproduced** with 20,000 cached resources, background SIGKILL self-healed, and app P5 proves one lost navigation plus controls. The earlier red joint run and long P5 attempts remain documented. See [[cpm-status-2026-10-15#Финальный app-hosted итог — 16 октября 2026]] for the full matrix, evidence and limits. No commits, PR changes or telemetry schema changes. PR/CI and production-data statements below retain their original dated provenance.
|
||||
|
||||
# TD: Pixel Definition: CPM Readiness Telemetry (macOS/iOS)
|
||||
|
||||
> **Internal documentation update — 2026-10-15, 17:26 UTC.** Current evidence, unresolved review decisions and PR stack: [[cpm-status-2026-10-15]]. This update does not approve or implement the proposed schema changes.
|
||||
@@ -148,3 +150,8 @@ The known-path methods also execute the real AppDelegate main/embedded flag tran
|
||||
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.
|
||||
|
||||
|
||||
### Final current-source verification
|
||||
|
||||
The final build uses owned UUID extension resources under unswizzled `NSTemporaryDirectory()`, outside TestRunHelper's shared cleanup root. The same 18-method selection that previously failed now passes completely (`signed-isolated-regression.xcresult`): actual Network termination fails 4/4 tabs across two windows and explicit reload/readiness restores all four; the following slow-wake test also passes. The prior deleting actor remains unidentified. Final P5 passes separately in 72.644 s; persistent cache passes separately in 43.053 s, records `p3NoBackgroundFailure=false`, and removes its own UUID store. All three XCTest summaries have zero failures, skips and expected failures. The 20 exported reports, source hashes and trial history are indexed by `/private/tmp/cpm-app-integration-20261015/app-test-results.json`. Strict SwiftLint on all 11 changed Swift files has zero violations; both Integration Tests targets contain the six new test files. Main app/XCTest use normal Apple Development signing; no unsigned or SecureVault bypass remains. The nested VPN Debug packaging deep-verify limitation is recorded in the main status and is not claimed fixed.
|
||||
@@ -11,12 +11,13 @@ tags:
|
||||
|
||||
Внутренний документ. **Цифры из 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 октября.
|
||||
|
||||
**Дополнение 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-тестов заново не запрашивались.
|
||||
**Дополнение 16 октября: app-hosted integration tests.** Добавлены 20 методов в `cpm-e2e-init`, схема `CPM Integration Tests`, штатная Apple Development signing, без commits. Финальный результат — **20/20 PASS в группах 18+1+1**, 0 failed/skipped/expected failures. Все результаты, включая красные совместные прогоны, отрицательный P3 и ограничение app P5, находятся в §13 и [[#Финальный app-hosted итог — 16 октября 2026]]. Финальную сводку §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. Коротко
|
||||
|
||||
- **App integration, 16 октября: 20/20 PASS, 0 failed/skipped/expected failures**, на одной signed build в группах **18 + 1 P5 + 1 cache**. Отдельные тесты slow load, one-navigation recovery, persistent one-tab, several-tabs/one-window и all-windows реализованы и прошли. Реальные app/WebKit пути, полный реестр, отрицательный P3, ограничение app P5 и сохранённые красные прогоны — [[#Финальный app-hosted итог — 16 октября 2026]]. Коммитов нет.
|
||||
- Фикс **B** (падение Network-процесса) проверен локально и красным прогоном на CI. **Основание в данных есть, но неполное:** обогащение в stuck есть, а доказать, что строки это именно мёртвый worker, нельзя (не хватает `network_replaced_since_view`).
|
||||
- Фикс **A** (первая загрузка посреди сессии) реален, но мелкий: около 1% stuck на iOS, на macOS почти не виден, чаще самоизлечивается.
|
||||
- Три самые крупные production-группы фиксами A и B **не закрыты**: пробуждение после idle, error 6 (iOS), «нет background view» на запуске (iOS). В новых signed app integration tests macOS теперь проверены рычаги P1 (slow idle wake) и P2 (остановка worker → настоящий WebKit error 6 около 30 s). P3 на 20 000 cacheable ресурсов не воспроизведён. Это локальные macOS-механизмы, а не доказательство причин iOS production-групп (§13).
|
||||
@@ -648,3 +649,56 @@ Source check: production `WebExtensionLoader.loadWebExtension` throws this error
|
||||
`signed-isolated-regression.xcresult`: **TEST EXECUTE SUCCEEDED**, 18/18 methods passed, 0 failures, 0 skipped, on signed `build-signed-resource-isolation.log`. This repeats the same selection that previously went red, with extension files outside the helper's global cleanup root. There are **zero** `CPM APP STORAGE MISSING` messages. The Network method now completes its real 4-tab fault/reload recovery in **21.692 s**, and the next slow-wake method completes in **49.651 s**, without the earlier INT. Real WebKit load-timeout method passes in **68.303 s**. All ten core scope/diagnostics methods pass in the same invocation.
|
||||
|
||||
This verifies the new isolation under the observed conditions; it does not identify the actor that deleted files in the previous run. The prior 16/18 red result remains part of the record. P5 and cache are being repeated separately against this exact build, and will be included in the final matrix rather than described as a single 20-method invocation.
|
||||
|
||||
|
||||
### Финальный app-hosted итог — 16 октября 2026
|
||||
|
||||
**Проверено 15 Oct 19:48 UTC / 16 Oct 01:48 Бишкек: 20/20 методов PASS, 0 failures, 0 skipped, 0 expected failures в трёх запусках одной окончательной signed build.** Это **18 вместе + P5 отдельно + cache отдельно**, а не один 20-method invocation.
|
||||
|
||||
- `signed-isolated-regression.xcresult`: 18/18, включая все 10 основных scope/diagnostics tests, P1/P2, first install/flags и Network recovery.
|
||||
- `signed-isolated-pinned.xcresult`: 1/1, 72.644 s, настоящий app P5 в явно ограниченном one-navigation scope.
|
||||
- `signed-isolated-cache.xcresult`: 1/1, 43.053 s; 20 000 ресурсов за 39.113 s, post-reload probe примерно 0.900 s, `p3NoBackgroundFailure=false`. Собственный persistent store удалён через WebKit; дополнительно проверено отсутствие его каталога.
|
||||
|
||||
Сводки получены через `xcresulttool get test-results summary`, все 20 JSON reports экспортированы. Корень артефактов: `/private/tmp/cpm-app-integration-20261015/`; актуальные evidence directories — `signed-isolated-regression-evidence/`, `signed-isolated-pinned-evidence/`, `signed-isolated-cache-evidence/`. `app-test-results.json` содержит per-method latest result, сохранённую историю красных/зелёных попыток, summaries трёх финальных групп и SHA-256 исходников. Старые красные logs/results сохранены, включая joint 16/18 и длинные P5 attempts.
|
||||
|
||||
Worktree `/Users/admin/DuckDuckGo/apple-browsers.git/cpm-e2e-init`, branch `scratch/cpm-e2e-init`, **HEAD неизменён `46f25175c7c42766cab23ea39f447f075c7bdd24`, commits нет**. macOS 26.7.1 (25G241), Xcode 27.1 (27A9275), system WebKit 21624.5.1.11.3, arm64, GUI session. Финальная сборка — `build-signed-resource-isolation.log`. Apple Development: Alexey Martemyanov (9SAT8X9S84), team HKE973VLUW, hardened runtime; normal project signing defaults. `final-signing.txt` содержит цепочку сертификатов; app debug dylib и XCTest bundle проходят strict signature verification. Весь Debug app имеет отдельно описанное выше ограничение deep verify вложенного VPN Subscription.framework; distribution-валидность не заявляется. Unsigned/vault-bypass workaround в окончательном коде отсутствует.
|
||||
|
||||
#### Полный реестр 20 app methods
|
||||
|
||||
Первые 10 методов — `CPMAppIntegrationTests.swift`, остальные 10 — `CPMAppKnownFailureIntegrationTests.swift`, оба в `macOS/IntegrationTests/CPM/`.
|
||||
|
||||
| Метод | Финальный результат | Что проверено |
|
||||
|---|---|---|
|
||||
| `testHealthyBaselineUsesRealTabsAndNativeDashboard` | PASS · 1.131 s | Baseline: реальные page initResp и native dashboard; tab/controller/handler/readiness/tabs |
|
||||
| `testDiagnosticProxyFlagCanChangeWithoutBreakingMessaging` | PASS · 1.705 s | Proxy flag off/on через macOS adapter: readiness исчезает/возвращается, messaging healthy |
|
||||
| `testSlowHTTPDocumentDoesNotProduceCPMFailure` | PASS · 8.883 s | Медленная HTTP-загрузка (8 s image): handshake healthy, ложного failure нет |
|
||||
| `testSlowNativeSettingsProducesReceivedStageThenSameDocumentRecovery` | PASS · 8.964 s | Медленный native settings (8 s): received → timeout → same-document recovery |
|
||||
| `testOneNavigationFailureRecoversOnNextNavigation` | PASS · 5.307 s | Одна потерянная навигация: none → healthy на следующей, later_navigation, без stuck |
|
||||
| `testPersistentFailureOfOneTabLeavesOtherTabsAndWindowsHealthy` | PASS · 11.167 s | Persistent одна таба: два failure/stuck; same-window/other-window/new-tab controls healthy; clear → recovery |
|
||||
| `testPersistentFailureOfSeveralTabsInOneWindowLeavesControlsHealthy` | PASS · 19.657 s | Две табы одного окна: persistent failure/stuck; оставшаяся таба/другое окно healthy; clear → recovery |
|
||||
| `testPersistentFailureAcrossAllWindowsIncludesNewTabsAndRecoversAfterClear` | PASS · 24.966 s | Все окна: 4 табы и новая таба fail; clear → recovery во всех |
|
||||
| `testAutomaticHangRecoveryReloadsExtensionAndRestoresMessaging` | PASS · 12.870 s | Настоящий M4 после подтверждения hang заменяет context; messaging и recovered_after_reload |
|
||||
| `testDashboardTransportLossIsDistinguishableFromMissingInitResponse` | PASS · 5.293 s | Потеря dashboard confirmation при полученном page initResp: response_sent, затем recovery |
|
||||
| `testMainFeatureOffOnRetainsOldControllerAndBreaksExistingTabs` | PASS · 14.562 s | P6: реальные main-flag off/on callbacks; старый controller у existing tabs, новая таба healthy |
|
||||
| `testFirstMainFeatureEnableLeavesExistingTabsWithoutController` | PASS · 9.137 s | Первое main enable: existing tabs с nil controller fail; новая таба healthy |
|
||||
| `testEmbeddedOnlyFlagCyclePreservesControllerAfterReadiness` | PASS · 1.256 s | Embedded-only cycle сохраняет controller; healthy после readiness |
|
||||
| `testSharedPinnedTabSurvivesClosingWindowButDisappearsFromWebKit` | PASS · 72.644 s | P5: реальное shared-pin window close → один failure/tab_in_context=false; regular/new-tab healthy |
|
||||
| `testNetworkProcessTerminationRecordsActualCrossWindowOutcome` | PASS · 21.692 s | Реальный Network SIGKILL → 4/4 tabs fail в двух окнах; explicit reload/readiness → все healthy |
|
||||
| `testBackgroundProcessTerminationRecordsCrashAndCanRecoverAfterReload` | PASS · 2.518 s | Реальный background SIGKILL: died_crash/dealloc/new view; в этом WebKit самоизлечился; reload healthy |
|
||||
| `testFirstEmbeddedInstallDuringSessionRecordsStartupRace` | PASS · 11.882 s | Реальный first embedded install с 6 s startup delay: первый init потерян/pending; следующий healthy |
|
||||
| `testLargePersistentCacheRecordsContextReloadInjectionGap` | PASS · 43.053 s | P3 experiment: 20k persistent-cache resources + baseURL-changing reload; P3 НЕ воспроизведён; cleanup/recovery healthy |
|
||||
| `testSlowBackgroundWakeReportsPendingThenRecovers` | PASS · 49.651 s | P1: реальный idle unload + 8 s wake delay; pending/none → timeout → поздний ответ/recovery |
|
||||
| `testFrozenBackgroundHitsWebKitLoadTimeout` | PASS · 68.303 s | P2: новый worker SIGSTOP → настоящий WebKit error 6 около 30 s (25s_to_35s); SIGCONT в cleanup |
|
||||
|
||||
#### Границы доказательства и окончательная реализация
|
||||
|
||||
- **Зелёный characterization test не означает исправление CPM или доказанную production-причину.** Scoped drops/delays действуют только на extracted test copy и проверяют диагностику/масштаб отказа. Навигации, app window/tab callbacks, native provider/delegate, monitor и recorder настоящие; прямые `didCloseTab`/synthetic monitor events для получения failure не вызываются.
|
||||
- **P3 не воспроизведён** на этой машине/20k cache; этот результат не исключает другие размеры, timing или iOS. Background SIGKILL здесь самоизлечился — зафиксирован crash/recovery, не выдуман persistent failure.
|
||||
- App **P5 доказывает одну** потерянную навигацию после реального закрытия окна и здоровые controls. Две app-навигации/stuck не объявляются зелёными: прежние попытки достигали DEBUG MainWindow lifetime guard, который остаётся включён. Persistent P5/stuck проверен отдельными SPM methods (§12).
|
||||
- P1/P2 — управляемые macOS-механизмы. Естественная потеря listener metadata, P5 с tab_in_context=true, iOS suspend/resume/device-only ошибки и production main-flag transitions всё ещё не доказаны.
|
||||
- Устранён риск общего test temp root: extension resources теперь в `NSTemporaryDirectory()/cpm-app-UUID` вне глобального swizzled `com.duckduckgo.macos.tests`, который очищает TestRunHelper. Старый deleting actor не установлен; после изоляции тот же joint selection прошёл 18/18, missing-resource logs нет. Это не выдаётся за установленную внешнюю причину прежнего удаления.
|
||||
- Teardown закрывает только окна своего host, восстанавливает pinned mode/flags, возобновляет остановленные PID и удаляет собственные extension files. Для cache сначала сохраняет evidence, очищает owned website/controller data, завершает Network session этого test host через test-only SPI, освобождает refs и удаляет только свежий UUID store с bounded retry. Пользовательский browser process не выбирается; глобального `killall`/Review-profile wipe нет.
|
||||
- Минимальные seams: optional `controllerConfiguration` с прежним production default; guarded DEBUG AppDelegate factory; собственный ConfigurationStore directory; loopback-only opt-in exception в Tab; internal macOS diagnostics flag adapter для `@testable`. Новая pixel schema/production fix не добавлялись. Шесть новых Swift files включены в **оба Integration Tests targets**, scheme XML/PBX валидны.
|
||||
- Strict SwiftLint **11 Swift files: 0 violations**, `git diff --check` чистый. Прежний dirty bundle сохранён (2026.10.14, SHA-256 `4254967bb447aa45deb371b26fea1dd93850a8e6a654f8ebecd70fccc3859936`) вместе с прежними untracked SPM files. Другой remaining-failures worktree не менялся.
|
||||
|
||||
Повторение: схема **CPM Integration Tests** с project signing defaults; полная инструкция в `macOS/IntegrationTests/CPM/README.md`, карта файлов — [[cpm-web-extension-code-guide-2026-10-09#5. App-hosted CPM integration tests — 16 октября 2026]]. Default scheme пропускает два expensive opt-ins. Реальный timeout включать test-host env `CPM_APP_INTEGRATION_EXPENSIVE=1`. Cache выбирать **отдельным методом** с `CPM_APP_INTEGRATION_CACHE=1`, execution allowance 2400 s (count override `CPM_APP_INTEGRATION_CACHE_ENTRIES`); cache switch применяется ко всем harness instances выбранного invocation. Финальные `.xctestrun` планы сохранены в `DerivedData/Build/Products/CPM-App-Final.xctestrun` и `CPM-App-Cache.xctestrun`. PR/CI/ClickHouse snapshot выше не обновлялся этим локальным тестовым проходом.
|
||||
@@ -6,6 +6,8 @@ tags:
|
||||
- cpm
|
||||
- webkit
|
||||
---
|
||||
> **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 октября.
|
||||
|
||||
|
||||
# CPM Web Extension — карта кода по worktree и строкам
|
||||
|
||||
@@ -217,3 +219,6 @@ Worktree `/Users/admin/DuckDuckGo/apple-browsers.git/cpm-e2e-init`, branch `scra
|
||||
|
||||
|
||||
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.
|
||||
|
||||
|
||||
Финальная сверка §5: `signed-isolated-regression` **18/18**, `signed-isolated-pinned` **1/1 (72.644 s)**, `signed-isolated-cache` **1/1 (43.053 s)**. Все summaries: 0 failures, 0 skipped, 0 expected failures. В последнем cache run 20k ресурсов за 39.113 s, post-reload probe 0.900 s, P3 не воспроизведён, UUID store удалён. Все 20 JSON exported в одноимённые `*-evidence/` directories; `/private/tmp/cpm-app-integration-20261015/app-test-results.json` содержит текущие hashes исходников и всю per-method историю. HEAD `46f25175c7c42766cab23ea39f447f075c7bdd24` сохранён, исходный dirty ZIP не менялся. Финальный strict lint: 11 Swift files, 0 violations; PBX и scheme XML валидны. Предыдущие red attempts сохранены, не превращены в pass; единый invocation всех 20 не выполнялся.
|
||||
Reference in new issue
Block a user