diff --git a/personal/projects/virfield.md b/personal/projects/virfield.md index 33387608..8ce23697 100755 --- a/personal/projects/virfield.md +++ b/personal/projects/virfield.md @@ -12,17 +12,17 @@ tags: --- # Virfield — текущее состояние -Актуальный checkpoint 2026-10-16: installed/pushed code `3d667d27687d58a7f8178feee2f90f5349143323`, version `0.0.0-local-golden-transfer`, daemon PID26451. Документация об устраненном логе и текущих gates проверена и опубликована коммитом `e0c8a9e` (links97, MCP race2.335sec, Gitleaks noleaks). Ветка `codex/retire-lume-release-hardening`, main/tags/release не менялись. Пользователь явно разрешил push проверенных результатов в рабочую ветку на всю сессию. Archive SHA256 `e83d06b3b9fa90c95b69372b20329b5a34ce8fad6d78f4e1be0ae8f30f903efd`; private backup, прежняя signing/FDA identity, config/keys и 8 baseline image manifests сохранены. Schema8 startup создал verified schema7 snapshot; откат старого binary требует совместимого snapshot. Full localCI/race, Staticcheck0.7.0, Govulncheck1.6.0/0reachable, Gitleaks8.30.1/237commits PASS. Exact installed HTTP/freshstdio all4runbooks/resources/status/anonymous401 PASS2.59sec. Пользователь подтвердил Restart Virfield MCP, однако фактический owning adapter этого чата всё ещё возвращает4других runbooks и не имеет image_transfer. Private attestation `/private/tmp/virfield-owning-mcp-3d667d2-20261016.json`. F4 установлен, но НЕ принят: первый livecopy расширяет allocated disk44.8GB→106.4GB при logical120GB; driver остановлен до workers, sourcegolden сохранён. +Актуальный 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, ещё не установлен. **Реализовано и проверено:** 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-запрос для приемочного Story ожидает согласия. +**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. -**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 sparse defect и iPad gate остаются открыты; первый transfer job `job-b610b65830c57353f079229d30de7295`, journal `/private/tmp/virfield-local-golden-transfer-live-20261015/journal.json`; не replay. +**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, iPad/fullBrokerCodexStory/deniedwrite и maintainedplan gates/F1–F5; установленный F4 не liveaccepted из-за sparse-allocation defect. Telegram-разрешение для fullStory пока не получено. Canonical private checkpoint `/private/tmp/virfield-release-current-state.json`. Предыдущая automationPAUSED согласно старому «Затем стоп»; работа продолжена по новому прямому поручению, новые расписания не создавались. +**Полная приемка НЕ завершена.** Открыты фактическая 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 по прежнему «Затем стоп»; работа продолжается по прямому поручению, новое расписание не создавалось. ## Предыдущие checkpoints (история) diff --git a/work/projects/cpm-status-2026-10-15.md b/work/projects/cpm-status-2026-10-15.md index fb71a59a..305c7207 100755 --- a/work/projects/cpm-status-2026-10-15.md +++ b/work/projects/cpm-status-2026-10-15.md @@ -590,3 +590,15 @@ Known-failures suite начат с включённым expensive flag. Перв - `signed-pinned-autorelease.xcresult`: real shared pin + two normal WebKit idle unloads + real window closure again produced `runtime.sendMessage(): Tab not found`, missing page initResp, production timeout `init_stage=none`, `tab_in_context=false`, matching controller and `bg_view_creations=2`. The host still interrupted before the second probe/attachment. Prior LLDB identifies the DEBUG deallocation guard for **MainWindow**, not an assertion from the CPM detector. Wrapping creation/selection in autorelease pools alone did not resolve that retention; the test is still red. - `signed-large-cache.xcresult`: fresh persistent UUID store, **20,000** cacheable loopback resources, actual disk-cache records, fill **42.705 s**. Real extension reload changed baseURL; immediate next navigation succeeded in **1.058 s**, page initResp present, background created once and ready under 1 s. `p3NoBackgroundFailure=false`: **P3 not reproduced in this run**. The readiness control also succeeded. The test failed only in teardown (`WKWebSiteDataStore: Data store is in use (by network process)`), while its own controller/store references were still retained. Cleanup is being corrected before a new run. - These runs use the project's normal **Apple Development** signing. The earlier unsigned CLI workaround was incorrect and removed; no SecureVault bypass remains. Current verified distinct passing methods remain **18/20**, with the two red methods above; there is no combined all-green result. + + +### P5: memory-reference evidence and harness correction + +`pinned-lldb-retainers.log` again stops in `breakByRaisingSigInt` for MainWindow. `leaks --noContent --nostacks --traceTree= ` saved `pinned-window-retainers.txt`: a direct chain is `NSApplication._currentEvent → NSEvent._window → closed MainWindow`. SDK declares `NSApplication.currentEvent` **strong**, and [Apple documents it as the last dequeued event](https://developer.apple.com/documentation/appkit/nsapplication/currentevent). `TestRunHelper.loadedViews` is weak (confirmed in source), not a strong owner. The graph also contains autorelease-pool and system/weak references; not every reported root proves retention. + +The harness now posts and dequeues one neutral application-defined event after window closure, using public AppKit APIs, to advance the event queue while async XCTest is awaiting. It does not disable the DEBUG guard, detach tabs, or send manual extension lifecycle events. Verification is pending. Persistent-store teardown now clears owned website/controller data, releases controllers and the last harness store reference, then retries WebKit's asynchronous removal for at most 10 seconds. The orphan from the first failed cleanup was removed only at its verified fresh UUID `83CBE3E6-4B0E-41F0-B53F-22CD306B8DEE` (creation time and extension State.plist matched that test), after the owner process exited. + + +### Signing verification detail + +The latest signed build (`build-signed-event-loop.log`) invokes codesign with **Apple Development: Alexey Martemyanov (9SAT8X9S84)**, team HKE973VLUW, hardened runtime. `codesign -dvv` with normal keychain access confirms the Apple Development → WWDR → Apple Root CA chain. App debug dylib and `Integration Tests.xctest` independently pass `codesign --verify --strict`. `codesign --verify --deep --strict` on the entire Debug app fails in nested `DuckDuckGo VPN.app/Contents/Frameworks/Subscription.framework`: the seal lists four missing `Modules/Subscription.swiftmodule` artifacts (abi.json/swiftdoc/swiftmodule/Project/swiftsourceinfo). This is a separate nested Debug packaging limitation, **not an unsigned main app or test bundle**. No manual re-signing or production packaging changes were made for it.