From 9067cb8097e4fe600586620d1eb1d3261922bee7 Mon Sep 17 00:00:00 2001 From: Alexey Martemyanov Date: Thu, 15 Oct 2026 22:51:04 +0600 Subject: [PATCH] [2026-10-15] eagle: personal/projects/virfield.md work/projects/cpm-status-2026-10-15.md --- personal/projects/virfield.md | 10 ++++++++ work/projects/cpm-status-2026-10-15.md | 34 ++++++++++++++++++++++++-- 2 files changed, 42 insertions(+), 2 deletions(-) diff --git a/personal/projects/virfield.md b/personal/projects/virfield.md index 1abb4e63..630e8171 100755 --- a/personal/projects/virfield.md +++ b/personal/projects/virfield.md @@ -12,6 +12,16 @@ tags: --- # Virfield — текущее состояние +Актуальный checkpoint 2026-10-15: clean source/пуш/installed `0f8bc20df9f36c372e7fdb405f223b4a37531e30`, версия `0.0.0-standard-account`, ветка `codex/retire-lume-release-hardening`. Случайная смена VM account password удалена: новые credentials используют `admin/admin`; уже стандартный аккаунт не меняется. Старый golden/его credentials сохраняются; известный старый пароль переводится в стандартный только в новом journaled disposable clone, с проверкой результата. Unknown login-keychain не сбрасывается. Local full CI/race, Staticcheck0.7.0, module verify, Govulncheck1.6.0 (0 reachable), Gitleaks8.30.1 PASS; пакет SHA256 `b8805029ef847f28b0eea2d87af36203d480746cf08e6f08fe754ac28ce0d9a5`. Idle install/private backup/прежняя signing-FDA identity/config/keys/семь baseline manifests PASS. Exact installed HTTP/freshstdio version/all4runbooks/resources/status/anonymous401 PASS1.13sec. Owning MCP этого нового чата отвечает, но пока отдает старый guide; запрошен Restart только Virfield. + +**Новая policy live:** Samsung Monterey12.7.6/Xcode13.4.1 прошел2/2 полных nativeGUI/newSSH/standard-password до-после реального reboot/newUUID/1920/workspace checksum/Swift compile-run/artifact/RFB/cross-key/release/revocation циклов. Существующий macos27 golden снова FAIL login copy-unlock-25293 на новой policy, собственный fixture8d99released/revoked, bounded logs сохранены. Fresh same-pinned public-base macOS27/security-v1 factory прошел qualification с actual reboot/nativeGUI/SSH и стандартным паролем; worker acquire отвергнут до dispatch с resource_unknown, свой factory удален, исходные7 сохранены. Готовится отдельный static template `release-check-macos27-standard-v1` с точным исходным `uitest-27-v1` профилем и2worker cycles; production template `macos27` и старый golden не изменены. Журнал `/private/tmp/virfield-standard-uitest-macos27-20261015/journal.json`; исход неизвестных операций проверять до повторов. + +**Новый HTPC blocker доказан:** `/run/user/1000` tmpfs100%, свободно4096bytes; `/run/user/1000/speech-dispatcher/log/speech-dispatcher.log` занимает3357126656bytes. Pinned read-only qemu-img вернул `creating container storage ... no space left on device`; HDD имеет2885316886528 свободныхbytes. Новый Sequoia clone9a9 quarantined с частичным каталогом, без overlay/container/живогоqemu-img; после штатного wake и точного read-only осмотра выполнен journaled resolve→cleanup, lease released, clone не replay. Speech log чужой: запрошено отдельное разрешение сохранить копию на private HDD и обнулить только его; пока без изменений. Новые HTPC Sequoia/Sonoma циклы не приняты; старый Sonoma reboot-defect не считается исправленным. + +Полная приемка **остается открытой**: новый macos27 UI-test golden/workers, HTPC новый standard-policy matrix, iPad storage/verified transfer, актуальный owning-client и Broker production repeat; F1–F5 и остальные gates поддерживаемого плана остаются delivery work. Новый config добавил только отдельный test template с private backup, daemon PID21276; семь исходных goldens и исходный production template сохранены. Автоматизация прежнего чата приостановлена прежним «Затем стоп»; текущая работа возобновлена новым прямым указанием пользователя, новые фоновые расписания не создавались. + +## Предыдущие checkpoints (история) + Актуально на 2026-10-15: installed code `f60efe3310cd3806c18481b5d22089c421849f8b`, version `0.0.0-browser-transport-trace`, daemon PID65903 после подтверждённой миграции службы в Standard. Source/pushed docs HEAD `ea0ba06d68139feaf314101a18ef4484801707b3`, ветка `codex/retire-lume-release-hardening`, clean. Актуализированы все поддерживаемые repo runbooks и план; прежний Verification сохранён без потери evidence в датированном архиве. Для документационного коммита: 27 Markdown files /97 local links, diffcheck, `go test -race ./internal/mcpadapter ./docs` PASS; pinned Gitleaks8.30.1 —233commits/no leaks. Это docs-only revision: установленный f60 по-прежнему содержит прежние embedded runbooks и гостевую password rotation. Установка сохранила private backup, signing/FDA identity, config/keys и семь baseline images/manifests; archive SHA256 `941da8a267107103918ddc553290419f104148f5bebb7503917b130328265c00`. Exact archive stdio и installed HTTP/freshstdio version/all4runbooks/resources/status/anonymous401 PASS; post-Standard smoke0.18sec. Реальный owning-client help повторно возвращает `Transport closed`, несмотря на подтверждённый Restart; этот gate открыт. **Решение пользователя: стандартный VM account `admin/admin`, без автоматической случайной смены пароля.** Удаление rotation явно поручено, но ещё не реализовано ни в source, ни в installed f60. Это первый пункт актуального плана; старые goldens могут всё ещё содержать generated credentials. Сохраняются независимые caller/management SSH keys, fresh host keys/pins, key-only SSH и cross-key rejection. Существующие login-keychain items, workspace и protected goldens не удаляются/не перезаписываются; совместимый переход старых образов должен быть отдельно проверен. Старые PASS относятся к старой password policy и не принимают ещё не написанную новую. diff --git a/work/projects/cpm-status-2026-10-15.md b/work/projects/cpm-status-2026-10-15.md index c7d77a96..00cd4176 100755 --- a/work/projects/cpm-status-2026-10-15.md +++ b/work/projects/cpm-status-2026-10-15.md @@ -82,7 +82,7 @@ tags: | **P3. Контекст загружен, view нет** | `load` / `load>base_url_changed` | 17.1k + 0.9k / 162 + 81 | задержка очистки при смене `baseURL` воспроизведена на macOS при большом кэше (около 10 минут заполнения); iOS-гонка запуска (`bg_view_creations=0`, восстановление сессии, первые 30 с) не воспроизведена: холодный старт в harness'е отвечает за миллисекунды | кандидат: стабильный `baseURL` (ветка `cpm-stable-base-url`: не доведён, меняет URL всем расширениям, не прогнан через harness, старая база). Фикс WebKit 318756@main, номер сборки ОС не проверен | | **P4. Первая загрузка** | `load>view>proxy_on` | 6.8k + 2.3k / 570 | да (фикс A) | фикс A | | **P5. Фон выгружен в момент сбоя** | `proxy_on>dealloc>view>proxy_on>dealloc` | 1.9k / 494 | да: test-only потеря регистрации живой вкладки и пустые runtime listener metadata с первого старта; долгий документ и пауза main actor P5 не дали (§10) | кандидаты: корректный tab lifecycle; при пустых metadata explicit loadBackgroundContent после восстановления listener. Естественный вход не найден | -| **P6. macOS: вкладка без расширения** | `load>view>proxy_on>dealloc` / `load>view>proxy_on`; варианты с `extension_updated` отдельно | iOS ≈0 / 627 + 235 | до idle воспроизведено отсутствием controller; полный прогон см. §10 | гипотеза: view создана без текущего controller или сохраняет controller прежнего менеджера; естественный вход не найден | +| **P6. macOS: вкладка без расширения** | `load>view>proxy_on>dealloc` / `load>view>proxy_on`; варианты с `extension_updated` отдельно | iOS ≈0 / 627 + 235 | да: test-only отсутствие controller до/после idle и сохранение controller прежнего менеджера (§10) | корректно подключать current controller при создании view; reload контекста неверно подключённую view не чинит. Естественный вход не найден | | **Network заменён** | | см. раздел 4 | да (краш, worker мёртв при том же view) | фикс B | | **«Здоровый» остаток, other** | | iOS 12.5%, macOS 22% | нет | нет гипотезы | @@ -143,7 +143,7 @@ tags: 4. **Судьба фикса A:** слабое основание в данных, не совпадает с названием задачи; решить, сливать ли без зелёного измерения эффекта через `first_load_wait`. 5. **P3:** довести стабильный `baseURL` (ограничить встроенными расширениями без `web_accessible_resources`, прогнать harness, перенести на свежий `main`), проверить номер сборки ОС с фиксом 318756@main. 6. **Локальные repro для P1–P3** отдельным PR без фиксов (по образцу harness'а, `requireLocalRun`), чтобы гонять после релизов WebKit. -7. **iOS:** воспроизведение error 6 на реальном устройстве; сценарий «вкладка без расширения» на macOS. +7. **iOS:** воспроизведение error 6 на реальном устройстве. P5/P6 на macOS воспроизведены контролируемыми условиями (§10); остаётся найти естественные входы в потерю регистрации/listener metadata и отсутствующий/прежний controller. 8. Блокеры по ревью: #7376 и #7378 ждут ревью; #7384/#7385 стоят на #7376. ## 9. Методика и инструменты @@ -286,3 +286,33 @@ Watcher больше не удерживает WKWebView через await, а id **Ограничения:** все положительные воспроизведения требуют test-only условия; естественные production-триггеры отсутствующего controller/утраты listener metadata не найдены. Настоящая iOS suspension не проверена. Фиксы поведения приложения этим исследованием не добавлялись. Запущен обычный пакетный прогон `swift test --disable-automatic-resolution --skip-build` без repro-флагов; результат будет записан ниже. Финальный strict SwiftLint семи изменённых файлов: 0 нарушений (`--no-cache`). SHA-1 существующего dirty Package.resolved не изменился: `7ccce20acd452656c9bf2d2fa186d044e4a8185f`. + +### Финальная проверка пакета и файлы + +**Обычный пакетный прогон завершён успешно:** `swift test --disable-automatic-resolution --skip-build`, 474 XCTest, из них 24 opt-in repro пропущены, **0 failures**, 11.344 с. Лог: `/private/tmp/cpm-p5-p6-20261015/package-tests.log`. Отдельный Swift Testing runner: 0 тестов. Длительные эксперименты запускались отдельно с обоими repro-флагами; все 10 текущих методов имеют зелёный результат в сводке. + +**Изменены только тестовые файлы этой работы** внутри выбранного worktree: +- добавлены `CPMRepro/CPMReproLifecycleHypothesisTests.swift` (10 тестов) и `CPMRepro/CPMReproDelayedResource.swift`; +- расширены `CPMReproHarness.swift`, `CPMReproTabs.swift`, `CPMReproSupport.swift`, `CPMReproPrelude.swift`, `CPMReproTestCase.swift`; +- existing dirty production/telemetry changes не включались в эту работу, Package.resolved сохранил первоначальную контрольную сумму. Commit/PR/push не делались. + +Команда полного повторения новых экспериментов из `SharedPackages/WebExtensions`: +```sh +CPM_REPRO=1 CPM_REPRO_P5_P6=1 swift test --disable-automatic-resolution --filter CPMReproLifecycleHypothesisTests +``` +Эта полная команда приведена для повторения: в текущей сессии десять методов проверены раздельными группами, а не одним финальным запуском всех десяти. + +| Текущий тест | Последний результат, с | Лог | +|---|---:|---| +| CurrentControllerBeforeContextLoadRemainsHealthy | pass, 1.190 | p5-refined-and-controls.log | +| TabWithoutControllerMatchesP6BeforeIdleUnload | pass, 8.569 | p5-p6-final-regressions-and-stall.log | +| TabWithoutControllerMatchesP6AfterIdleUnload | pass, 38.543 | p5-p6-final-regressions-and-stall.log | +| ExistingTabKeepsPreviousManagerController | pass, 9.167 | p5-p6-final-regressions-and-stall.log | +| ForgottenLiveTabDoesNotWakeBackgroundAndMatchesP5 | pass, 72.737 | p5-p6-final-regressions-and-stall.log | +| MissingRuntimeListenerOnOneWakeRecoversAfterNextIdle | pass, 62.633 | p5-p6-final-regressions-and-stall.log | +| NoRuntimeListenerMetadataFromFirstStartupMatchesP5 | pass, 70.149 | p5-refined-and-controls.log | +| SlowHealthyDocumentsWakeBackgroundAgainAtFinishWithoutFailure | pass, 70.683 | p5-refined-and-controls.log | +| SlowDocumentsWithLostDashboardDoNotMatchP5 | pass, 80.181 | p5-refined-and-controls.log | +| MainActorStallDelaysActualFailureSnapshots | pass, 71.027; matchesP5=false | p5-p6-final-regressions-and-stall.log | + +Зелёный результат characterization-теста означает, что проверенное условие и ожидаемый исход подтверждены. Он не означает исправление CPM или доказательство естественного production-триггера.