[2026-10-15] eagle: work/projects/cpm-status-2026-10-15.md

This commit is contained in:
Alexey Martemyanov committed 2026-10-15 22:35:53 +06:00
1 parent 33283435b2
commit afa923d2c4
1 file changed
+22
+22
View File
@@ -217,3 +217,25 @@ Harness позволяет отдельно выбирать controller вкла
**P5, забытая живая вкладка — зелёный, 72.744 с.** Два нормальных initResp и две реальные idle-выгрузки, затем test-only `didCloseTab` без удаления WKWebView. Получен actual stuck с `load>view>proxy_on>dealloc>view>proxy_on>dealloc`, creations=2, view=false, context=true, tab=false, controller/scripts=true, errors=none, network_restarted=false. Content script отправляет init и получает init-error. После `didOpenTab` эта же вкладка снова получила initResp. Механизм подходит под P5-подгруппу с tab_in_context=false; его доля в проде и естественное действие приложения, создающее нарушение lifecycle, этим тестом не установлены.
Оба результата находятся в `p5-p6-full.log`; другие сценарии продолжают выполняться.
### Полный первый прогон: положительные и отрицательные результаты
Прогон `p5-p6-full.log` завершён: 7 тестов, 4 зелёных и 3 красных (11 assertions), 273.8 с. Не все красные результаты означают дефект harness:
- **P6 после idle — зелёный, 38.658 с.** Получена цепочка `load>view>proxy_on>dealloc` с исходной сигнатурой controller/scripts=false, tab/context=true. Reload контекста не исправил существующую вкладку; новая правильно подключённая вкладка получила initResp.
- **Потеря runtime listener только на одном wake не воспроизвела P5.** Инъекция действительно потеряла первый init (native dashboard не пришёл), но после восстановления файла и следующего idle новый worker принял следующий init и прислал initResp, stuck=0. Ожидание устойчивого P5 в тесте было неверным; превращаю его в отрицательную characterization-проверку этого результата.
- **Долгий документ:** первый image-subresource действительно удерживался 35 с. Background выгрузился примерно на 32 с, но на finish навигации в 35 с WebKit снова создал background; на failure в 39 с view уже жива. При искусственной потере dashboard получен stuck с живой view, а не P5. Здоровый документ получил initResp и не вызвал failure.
- **Ошибка постановки второго долгого документа:** одинаковый URL image взялся из кэша, поэтому второй load не был долгим. Исправляю уникальный URL на каждую навигацию и повторю оба контроля.
- **Наблюдение о trace:** watcher держал strong reference на view через 50-мс await. При переходе сразу после `context._backgroundWebView=nil` dealloc старой view иногда попадал после создания новой. Убираю удержание через await и буду ждать одновременно отсутствия WebKit background и dealloc в production recorder, чтобы не менять исследуемую последовательность самим наблюдением.
Все неподтверждённые результаты выше остаются отрицательными/ограниченными; совпадение P5 пока подтверждено только для test-only потери регистрации живой вкладки.
### Уточнённые проверки P5 — начат повтор
Теперь 9 тестов. В новом `testNoRuntimeListenerMetadataFromFirstStartupMatchesP5` runtime listener не регистрируется с самого первого старта; затем background явно загружается второй раз и оба раза штатно выгружается. Это отдельно проверяет пустые listener metadata, которые нельзя было получить простым пропуском регистрации на одном wake после здорового старта. Условия искусственные; естественная утрата metadata не доказана. После проверки инъекция снимается, выполняются explicit background load и проверка initResp.
Первоначальный listener-тест переименован в `testMissingRuntimeListenerOnOneWakeRecoversAfterNextIdle` и проверяет реально наблюдённое восстановление, отсутствие stuck и третью view.
Оба 35-секундных документа теперь используют разные URL image. Ожидания изменены по наблюдению первого прогона: здоровый длинный документ — no failure; потеря dashboard — stuck с живой view, не P5. Расширен test-only background trace на все типы autoconsent-сообщений, чтобы установить, какое сообщение повторно будит worker на finish.
Watcher больше не удерживает WKWebView через await, а idle-helper требует и освобождения background в WebKit, и dealloc по recorder. Повтор пяти новых/уточнённых проверок: `p5-refined-and-controls.log`.