[2026-10-16] eagle: work/projects/cpm-status-2026-10-15.md
This commit is contained in:
1 parent
0128529427
commit
ec56849012
1 file changed
+8
@@ -736,3 +736,11 @@ Interpretation unchanged: this rerun demonstrates test repeatability in the inst
|
||||
Пользователь разрешил локальные фиксы и проверку регрессионными тестами, **без коммитов**. В последнем запросе написано `p0/1`; в существующей классификации P0 нет, поэтому работа относится к двум обсуждавшимся картинам **P1 (slow idle wake)** и **P2 (wake → error 6)**. Worktree `cpm-e2e-init`, исходный HEAD `46f25175c7c42766cab23ea39f447f075c7bdd24`; прежние dirty-изменения сохранены. Снимок исходников до работы: `/private/tmp/cpm-p1-p2-fixes-20261016/before-changes.tar.gz` и `before-source-hashes.json`.
|
||||
|
||||
Добавлены app-регрессии `testSlowBackgroundWakeKeepsFirstNavigationHealthy` (первый документ после реального idle + 8 s startup должен получить page initResp и native dashboard без detector failure) и `testFrozenBackgroundRecoversAutomaticallyForNextNavigation` (реальный WebKit error 6 после SIGSTOP, затем SIGCONT; автоматическая замена контекста без второй сломанной навигации, существующие tabs в двух окнах и новая tab здоровы). Начинается прогон **до production-фикса**; результат ещё не получен. SIGSTOP/JS delay остаются принудительными условиями, не доказательством естественной iOS-причины. Старые 20 зелёных characterization methods не считаются проверкой этих новых исправлений.
|
||||
|
||||
### Первый красный app-прогон и реализация кандидатов
|
||||
|
||||
`/private/tmp/cpm-p1-p2-fixes-20261016/red.xcresult`: обе новые проверки красные на исходном production-коде. **P1 действительно дал detector timeout и отсутствие page/native ответа в момент проверки.** Дополнительно teardown попал в DEBUG deallocation deadline, поскольку тест завершался до позднего ответа; добавлено ожидание его завершения после функционального assertion. **P2 пока не считается чистым red-доказательством recovery:** тест ждал error 6, пока процесс был SIGSTOP; в этом запуске WebKit сообщил error 6 лишь после SIGCONT из defer. Исправлен порядок: держать процесс 32 s, отправить SIGCONT, наблюдать реальное error-notification (сохранённое до возможного unload), затем требовать автоматическую замену контекста. Исторический первый красный результат не удалён.
|
||||
|
||||
Локально добавлен кандидат P1: перед каждой HTTP(S) main-frame navigation подготовка background через публичный `loadBackgroundContent`, совместная задача для параллельных навигаций одного context; ожидание ограничено прежними 5 s и отменяется независимо от WebKit. При этом прямой `withTimeout { await Task.value }` не годится для неотменяемого callback: task group ждёт завершения дочерней операции. Использован отменяемый AsyncStream, добавлены отдельные unit tests deadline/cancellation. Старый P1 characterization сохранён с `webExtensionStateRestorationGate=false`.
|
||||
|
||||
Кандидат P2: текущий, а не уже заменённый context при настоящем `backgroundContentFailedToLoad` запускает штатный context reload через существующий recovery kill switch. Общий in-progress guard с M4 и 60 s cooldown для load-error recovery; после reload явно запускается background. При известном app_state=background восстановление не выполняется. Приватные process SPI в production-фикс не добавлены; SIGSTOP остаётся только способом воспроизведения. Оба кандидата ещё собираются/проверяются; зелёный результат пока не заявляется. Добавлен disabled-fix режим только новых app-tests для сравнения того же бинарника с явно заданными флагами.
|
||||
Reference in new issue
Block a user