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

This commit is contained in:
Alexey Martemyanov committed 2026-10-15 23:16:22 +06:00
1 parent 9067cb8097
commit 7c5ce2dc10
2 files changed
+24 -4

No files matched your search

+16
View File
@@ -316,3 +316,19 @@ CPM_REPRO=1 CPM_REPRO_P5_P6=1 swift test --disable-automatic-resolution --filter
| MainActorStallDelaysActualFailureSnapshots | pass, 71.027; matchesP5=false | p5-p6-final-regressions-and-stall.log |
Зелёный результат characterization-теста означает, что проверенное условие и ожидаемый исход подтверждены. Он не означает исправление CPM или доказательство естественного production-триггера.
## 11. Привязка P5/P6 к достижимым production-путям
Продолжение после замечания: положительный test-only fault доказывает механизм, но не объясняет его возникновение у пользователя. Дальше нужны конкретные caller → browser state → WebKit side effect.
### Найден кандидат P5: закрытие окна с shared pinned tab
Проверено в исходниках текущего repro-worktree и macOS release tag `1.210.0+macos`:
- `MainWindowController.windowWillClose` отфильтровывает сохранённые общие pinned tabs перед явными `didCloseTab`, но после `windowControllersManager.unregister(self)` всё равно вызывает `eventsListener.didCloseWindow(self)`.
- `MainWindowController+WKWebExtensionWindow.tabs(for:)` возвращает `loadedPinnedTabs + loadedTabs`; `MainViewController.windowWillClose` и `WindowControllersManager.unregister` эти коллекции не очищают.
- В локальном WebKit checkout `99051d5d08cd9f19ec76ce599f7539d070b1ae09`, `WebExtensionContextCocoa.mm:1351–1367`, `didCloseWindow` вызывает `didCloseTab` для **каждого** элемента `window.tabs()`. Фильтрация явных callbacks браузером не предотвращает этот внутренний вызов.
- `didCloseTab` удаляет tab из `m_tabMap`; `runtimeSendMessage` проверяет tab до пробуждения background и при отсутствии возвращает `tab not found`. Это возможная связь с P5/tab_in_context=false.
Начат эксперимент на системном WebKit: один и тот же живой tab в двух windows; закрыть одну через production `WebExtensionEventsListener.didCloseWindow`, сохранить tab в другой, без прямого `didCloseTab`, изменения listener или выгрузки context. До выполнения это **кандидат**, не подтверждённое воспроизведение.
Проверка истории также отсекла старые объяснения: исправление `Close Other Tabs` и фильтр shared pinned tabs уже находятся в `1.210.0+macos`; синхронное создание manager до state restoration существует с февраля 2026. Их прежние версии нельзя выдавать за текущий production-триггер.