23 KiB
Executable File
title, namespace, updated, status, tags
| title | namespace | updated | status | tags | |||||
|---|---|---|---|---|---|---|---|---|---|
| Virfield | personal | 2026-10-02 | candidate-not-production-accepted |
|
Virfield — текущий статус и продолжение
Следующее действие: закрывать release scope вокруг Monterey/Xcode: не ретраить job-057b0898f3746df8b12fb8b5c4c34c1c как будто это transient. Зафиксировать, что macOS 12.6 / 21G115 на этом host заблокирована default disk gate (disk_encrypted) даже при FileVault Off. Дальше выбрать один из двух путей: найти supported setup с реально unencrypted System/Data или реализовать отдельный Monterey legacy mode — full VM identity bundle copy, golden stopped, max one running worker, cleanup deletes copied bundle, registry publish disabled until separate contract. Heartbeat virfield-xcode удалён как устаревший.
Текущий результат (2026-10-02 13:40 UTC): Apple Developer sign-in через native VirfieldAppleBrowser прошёл; Xcode 13.4.1 archive скачан, SHA-1 совпал, host-side xip/Apple signature path исправлен и прошёл дальше. Setup Assistant Monterey завершился, но disk policy остановил publication: FileVault=false, Encryption=true, Locked=false на System и Data. Image image-aca7f16a2a59918c661f8c470f3d1b58 quarantined, VM macos-12.6-xcode-13.4.1 stopped, ordinary clone не выполнялся. Sequoia 15.2 ранее прошла clean GHCR publish → pull-back → два обычных клона/workload → cleanup.
Статус выпуска: кандидат не production-ready. Текущий checkout codex/versioned-images / 340c6f9 содержит незакоммиченные изменения по аудиту, Apple auth, Balda watches и disk-policy документации; они ещё не опубликованы. Установлен локальный кандидат с native browser и Broker plugin, live image-job notification route доставлял фазу и ошибки в Mattermost. release.json указывает фактические бинарники и hashes. Установленный Lume service/CLI обновлялся до patched 0.5.3-virfield6 для headless audio на image setup; проверять фактический runtime по manifest перед claims. Хранение завершённой истории jobs/events — 30 дней в текущем кандидате.
| Что | Где проверить |
|---|---|
| Репозиторий | /Users/admin/Developer/virfield, mallexxx/virfield |
| Runtime / storage | /Users/admin/.virfield-v2 / /Users/admin/.lume; API 127.0.0.1:7780, Lume 127.0.0.1:7777 |
| Точный статус job | virfield -url http://127.0.0.1:7780 -token-file /Users/admin/.virfield-v2/token job job-057b0898f3746df8b12fb8b5c4c34c1c |
| Текущая приёмка и открытые риски | docs/VERIFICATION.md и аудит 1-virfield-v2-audit-2026-10-02.md |
| Выпущенная база | main / v2.0.0 — не текущий кандидат |
Фактическую версию сервиса проверять по release.json и hashes. Checkout сам по себе сервис не обновляет. Не повторять одноразовые скрипты из /private/tmp. Старые SQLite binaries нельзя возвращать поверх новой схемы без процедуры backup/restore из Operations.
1. Подтверждённое состояние
Virfield v2 — Go control plane для golden images и одноразовых macOS VM: durable jobs/events, leases, лимит 2 VM, SSH isolation/tunnels, expiry/cleanup, CLI, аутентифицированные HTTP/stdio MCP и встроенная web console. Четыре бинарника: virfieldd, virfield, virfield-mcp, virfield-lume. В текущем коде нет v1; архивная реализация хранится только в Git-ветке v1.
Кандидат добавляет каталог версий macOS/Xcode, GHCR resolve/pull/portable publish, security profiles и 18 MCP tools. Это реализованные возможности, а не утверждение о проверке каждой версии macOS/Xcode. MCP содержит virfield_help и четыре документационных ресурса; агентский workflow не должен требовать чтения исходников или Obsidian.
Образы и приёмка
| Объект | Текущий результат |
|---|---|
vf-ghcr-sequoia152 |
image_ready, штатно выключен и сохранён. macOS 15.2 / 24C101, security automation, Xcode не выбран |
| GHCR source | ghcr.io/trycua/macos-sequoia-vanilla:15.2; digest sha256:781469ea44dd687f5cfbb130131ea2efee799e34b0fe2a297a0ecab013427266; 17,818,752,054 compressed bytes |
| Golden proof | System/Data: FileVault=false, Encryption=false, Locked=false. Ротация пароля, Secure Token, key-only SSH, автологин, Finder, SIP disabled, Gatekeeper/AMFI/TCC и System Events после reboot подтверждены |
| Два обычных Sequoia-клона | TestLiveLeaseSSH: PASS, 55.36 s. Точная OS/build, незашифрованные тома, Finder/SIP/Gatekeeper/AMFI, отдельные host keys, отказ image/cross-lease keys, SSH tunnel, idempotency, отказ третьей VM при 2/2, реальный SCP artifact export |
| Cleanup этих клонов | Оба удалены через API; private identities и tunnels удалены. Пул освободился, golden сохранён |
| Portable GHCR export | Новый clean job job-4a0f22bf6531f77de5669742ae476442 опубликовал r2; digest sha256:d9a22e89fef5c73f9ed3241b48e1b40b4ff9eb383a152cce7684b6a4d7b41e72. Все 160 частей по 512 МиБ покрывают 80 ГиБ; временная VM удалена. Старый tag с 7/80 ГиБ не использовать |
| Pull-back | Clean job job-5c0bf72ab62c50355e7eaf94184013b3 закрепил r2 digest и создал vf-e2e-sequoia152-r2-20261002, image_ready; System/Data unencrypted/unlocked, SIP/SSH/Finder после reboot прошли |
macos-27-golden |
Сохранён. Ранее принят полный uitest-27-v1 с Xcode 27.2 beta / 27B5019j на macOS 27 / 26A428; результаты относятся к указанному в Verification кандидату, не заменяют новые versioned/GHCR проверки |
| Monterey 12.6 / 21G115 | Принятого golden нет. При FileVault=false оба тома оставались Encryption=true, обычные клоны не доходили до SSH. Неудачный encrypted golden и его два клона удалены |
| Xcode 13.4.1 / 13F100 | Authenticated Apple archive downloaded, SHA-1/signature path passed, host-side cache usable. Guest install blocked before Xcode copy by Monterey APFS disk_encrypted; установка и clone не приняты |
Первый vf-ghcr-sequoia152 был получен с operator recovery. Новый r2 golden прошёл полностью clean round-trip без ручного восстановления. Два его обычных клона прошли TestLiveLeaseSSH за 67.27 s; оба удалены через API, источник и новый golden сохранены.
Идентификаторы для поиска доказательств:
- Golden: image
image-d99fdbe7a626a10f84a265ab297b38b5, jobjob-6706c89cabe70b931d162903b6f89ff1;verified_at: 2026-10-01T08:21:19Z. - Удалённые r2 E2E-клоны:
lease-a4a01025e370187507229df4996e4460,lease-af2861ac848aca915a42aaa1ff21f7e4. Ранние клоны:lease-54c01094abd7c71b4bde58c715ce0095,lease-568d0c97a002f56a81fadeea55c2373b. - Приватные доказательства:
/Users/admin/.virfield-v2/images/image-d99fdbe7a626a10f84a265ab297b38b5/verification.jsonи/Users/admin/.virfield-v2/acceptance-sequoia-clones-20261001.log. Не копировать credential files в заметки/репозиторий.
make check (race/vet, 23 Python regression checks, deployment checks, docs), build, staticcheck, go mod verify прошли. После 04c9f13 повторно прошли make check, Go build, Swift registry-integrity test, clean pinned Lume build/checksums/signature и live public GHCR metadata test. Установленный HTTP/stdio MCP: 18 tools/help/status работают, anonymous доступ отклоняется. Gitleaks текущих исходников — без находок. Govulncheck: нет уязвимостей в используемом коде и импортируемых пакетах; одна advisory относится к неиспользуемому пакету требуемого модуля. Ранее были проверки release archive/full Git history/пустого HOME; повторить их для финального релиза.
GHCR и клиенты
Настроены public-cua (organization trycua, read-only) и personal-ghcr (organization/user mallexxx, authenticated, allow_push: true). GitHub согласие на packages уже получено. Существующий приватный token file: /Users/admin/.virfield-v2/registry-credentials/ghcr-mallexxx.token, mode 0600; содержимое не печатать и не переносить в Obsidian/MCP-конфиги. Проверка доступа GHCR прошла; действительность credentials проверять перед новым запуском.
Принят ghcr.io/mallexxx/virfield-e2e-sequoia152:e2e-20261001-165cef8-r2, digest sha256:d9a22e89fef5c73f9ed3241b48e1b40b4ff9eb383a152cce7684b6a4d7b41e72. Прямое чтение GHCR подтвердило 160 последовательных частей и 80 ГиБ. Старый tag e2e-20261001-1200-a6cc966 неполон (7/80 ГиБ): не использовать и не перезаписывать. Видимость пакета инструмент не меняет.
image_publish пересобирает закреплённый recipe в новой portable VM, а не выгружает текущий диск golden. Ручные изменения/рабочие файлы исходного golden не экспортируются. Portable build использует публичный bootstrap lume/lume, очищает гостевые SSH identities/history, проверяет диск, штатно останавливается, публикует и удаляет собственную временную VM. Import снова изолирует credentials. Публикация текущего приватного managed disk не поддерживается.
Virfield MCP зарегистрирован и включён в Codex CLI; полный workflow там ещё не принят. Регистрацию Claude Code и его workflow проверить отдельно после приёмки образа. Balda/Broker могут использовать тот же пул: их состояние и задачи проверять отдельно, чужие VM не останавливать.
3. Хэндоф: Apple Developer → Xcode download (обновлено 2026-10-02)
image_createсоздаёт durable job с точными macOS/Xcode build и security profile; каталог иimage_apple_authдоступны через MCP. Для неавторизованной загрузки daemon выдаёт одноразовый 15-минутныйdeep_linkприложения и HTTP fallback. Balda plugin rc.15 должен показывать прямую кликабельную ссылку и ссылку fallback.- Native
VirfieldAppleBrowserсразу открывает Apple Developer в WebKit. Вход и 2FA проходят на сайте Apple, без локальной формы пароля. Приложение передаёт daemon только ограниченные download cookies, автоматически закрывает окно после успеха и завершает процесс после закрытия последнего окна. Окно ограничено экраном, меню Edit содержит Cmd+V. - Реальный вход 2026-10-02 возобновил существующий Xcode job. Он прошёл загрузку и host-side XIP/signature после фикса temp-dir, но остановился на
disk_encryptedпосле Monterey Setup Assistant. Не пересоздавать ВМ ради того же результата без новой гипотезы подготовки диска. Если Monterey остаётся в scope, следующий прогон должен проверять именно supported path кEncryption=false, а не обход disk gate. - Из аудита остаются release gates: Monterey clone при APFS Encryption=true, отдельные source hardening пункты (Recovery VNC password/port, кеш registry layers, crash recovery длительных мутаций), чистый release artifact и acceptance в Codex/Claude/Balda. Подробный статус —
docs/VERIFICATION.md. Не ослаблять disk gate и не объявлять любое сочетание macOS/Xcode проверенным только по каталогу.
4. Полный оставшийся план
1. Закрыть Monterey и реальный Xcode workflow
Найти и воспроизвести подготовку Monterey с реально незашифрованными System и Data, а не только FileVault Off. Apple описывает шифрование APFS на Apple silicon даже при FileVault Off; это согласуется с измеренным Monterey-гостем, но не доказывает, что другой поддерживаемый способ подготовки невозможен. Затем выполнить нормальное клонирование с новой VM identity, SSH/Finder/reboot и security automation. Нельзя снимать disk gate, игнорировать black-screen или возвращать отклонённый пользователем workaround сохранения machineIdentifier. Если сочетание неосуществимо в поддерживаемом VZ/Lume, документировать доказанный предел, а не выдавать его за поддержку.
Дождаться текущей авторизованной загрузки Apple-signed Xcode 13.4.1 / 13F100, проверить digest/signature, установку, first launch/license и реальную сборку Swift/Xcode на совместимой macOS. Провести полный versioned OS + Xcode + security → clone → workload → artifact → cleanup. Для других объявляемых поколений macOS расширять evidence matrix реальными прогонами; наличие версии в каталоге не равно E2E-приёмке. Не обещать «любая macOS/любой Xcode» без проверенной совместимости.
2. Завершить production audit
Провести финальное review модулей, конфигурации, guest bootstrap/recovery, registry boundary, ошибок/idempotency и документации. Проверить все новые автоматические пути на отсутствие локально зашитых HOME/checkout/credentials. Сборка и установка должны проходить из чистого checkout с другой конфигурацией путей/портов; локальные image tool paths допустимы только как operator config.
Закрыть либо явно ограничить в release scope оставшиеся VM-mutation crash points, продолжительный soak и VM-disk disaster recovery; SQLite snapshot не заменяет backup/restore VM-дисков. Проверить live rollback/обновление с учётом текущей SQLite schema. Повторить race/vet/staticcheck/build/dependencies/vulnerability scans, gitleaks всей Git history и чистого release archive. Второй физический Mac ещё не принят. Container routing/TLS/per-principal auth и Broker/Runner/Balda integration — отдельные границы; не приписывать им результаты локального Virfield E2E.
3. Подключить Codex и Claude, принять агентский workflow
После приёмки VM/registry кандидата зарегистрировать установленный virfield-mcp у Codex и Claude Code по Operations; CLI читает token file, токен не вставляется в prompt/config. Обновить установленные embedded docs. В каждом клиенте проверить discovery/help/status и самостоятельный workflow image/create или acquire → ready → pinned SSH workload → artifact export → release. Проверить общий лимит 2 VM, same-key retry и понятные ошибки.
Agent guide должен содержать все 18 tools, inputs, job polling, security/version selection, GHCR contract, operator recovery boundary, SSH/SCP и cleanup — так, чтобы агенту не приходилось читать исходники или Obsidian. Проверить взаимодействие с Balda/Broker через их собственную актуальную документацию и реальную сквозную приёмку.
4. Зафиксировать и выпустить принятый результат
Перед push ещё раз сравнить local HEAD, установленный runtime и фактические evidence; удалить из acceptance claims всё неподтверждённое. Закоммитить итог, запушить только нужные refs, дождаться CI точного commit, слить в main только v2, собрать и проверить portable release archive/checksums, выпустить новую версию. Номер релиза выбрать после финального scope; существующий v2.0.0 не переписывать.
Установить именно выпущенный artifact, проверить hashes/runtime manifest/schema, MCP и короткий smoke. Обновить README/Operations/Image pipeline/Agent guide/Verification и эту заметку так, чтобы published release, checkout и deployment были различимы. Production-ready объявлять только с перечислением реально прошедшей матрицы и оставшихся ограничений.
5. Действующие pitfalls и правила продолжения
- Golden/import/export требует эксклюзивного свободного пула. Другие задачи активно используют Virfield.
capacity_exhaustedпри 2/2 — ожидаемый отказ; очередь принадлежит Broker. Не останавливать чужие VM и не редактировать SQLite ради освобождения слота. - Импортированный native account нельзя перезаписывать offline setup: это ломало credential rotation/Secure Token. Registry imports должны уже иметь SSH и native
lume/lume; готовятся через SSH. Чужой registry config из HOME не должен менять source/storage: настройки Lume изолированы на job. - Recovery должен удерживать курсор на распознанном control до mouse-up; немедленный перенос переключал меню. SIP подтверждается подписанной операцией Recovery и canonical status после нормальной загрузки; одних screenshots недостаточно.
sysadminctl -autologinможет вернуть error:22 с exit code 0 и оставить старый пароль. Текущий код записывает guestkcpasswordroot:wheel/0600 и loginwindow preference, затем проверяет decoded password по pinned SSH без вывода секрета. Реальный reboot/Finder обязателен; проверка одного exit code не годится.- Неизвестный исход мутации —
needs_attentionи inspection exact VM/job. Не повторять clone/start/delete/upload вслепую. Работать только после leaseready, выгружать артефакты доrelease. Приватные logs могут содержать чувствительный контекст; не копировать их целиком./private/tmp/virfield-lume-sourceсодержит отклонённые экспериментальные изменения: не собирать оттуда зависимость, использовать pinned recipe репозитория.
6. Где читать дальше
Каноническая текущая документация находится в локальном checkout (текущие изменения ещё не закоммичены и не запушены):
| Источник | Назначение |
|---|---|
/Users/admin/Developer/virfield/docs/AGENT-GUIDE.md |
Полный workflow агента и контракты 18 MCP tools; также virfield_help после установки актуальной сборки |
/Users/admin/Developer/virfield/docs/VERIFICATION.md |
Доказательства текущей приёмки, live test commands и release gates |
/Users/admin/Developer/virfield/docs/OPERATIONS.md |
Deployment, конфигурация, services/MCP, backup, leases/SSH |
/Users/admin/Developer/virfield/docs/IMAGE-PIPELINE.md |
Catalog/Xcode, golden/security, recovery и зависимости |
/Users/admin/Developer/virfield/README.md и docs/ARCHITECTURE.md |
Сборка, структура модулей и архитектурные инварианты |
Связи: personal/plans/balda-callee-prism-plan — общий стек; work/wiki/apple-browsers/vm-ui-testing — применение VM для UI-тестов. Границы: Virfield владеет VM/SSH leases, Broker — очередью/run lifecycle, Runner/Callee — командами внутри гостя. Provider credentials принадлежат issuer Broker, не golden image.