[2026-10-01] eagle: personal/plans/balda-callee-prism-plan.md personal/projects/virfield.md work/wiki/apple-browsers/vm-ui-testing.md
This commit is contained in:
1 parent
7bab36d2df
commit
e7da5190e9
3 files changed
+108
-40
No files matched your search
@@ -1,7 +1,7 @@
|
||||
# Balda + Prism/Beads + Execution Broker + Callee + Codex / Claude / OpenCode
|
||||
|
||||
> Обновлено: 2026-10-01
|
||||
> Статус: Virfield v2.0.0 опубликован. Broker 0.1.0-rc.4 подготовлен как приватный draft с чистой публикационной историей и полным CI. Managed plugin установлен в рабочую Balda. Общий production/stable acceptance ещё не закрыт: сохраняются ограничения Docker Codex, OAuth Docker/remotes, реальных managed hosts и официальной публикации.
|
||||
> Статус: Базовый релиз Virfield v2.0.0 опубликован; текущий versioned-images/GHCR кандидат, незакрытые release gates и план продолжения — в [[personal/projects/virfield]]. Broker 0.1.0-rc.4 подготовлен как приватный draft с чистой публикационной историей и полным CI. Managed plugin установлен в рабочую Balda. Общий production/stable acceptance ещё не закрыт: сохраняются ограничения Docker Codex, OAuth Docker/remotes, реальных managed hosts и официальной публикации.
|
||||
> Текущий проект и runbook: [[personal/projects/virfield]].
|
||||
|
||||
## 1. Цель
|
||||
@@ -61,7 +61,7 @@ Codex
|
||||
|
||||
Production/stable release остаётся незакрытым: полный Claude Story/inference, реальный refresh и повторная VM без входа; OpenCode chat auth/inference; Docker/remotes credential lifecycle; provider-side expiration/revocation; ранее перечисленные full-stack gates. Credentials и login capabilities в этой заметке не сохраняются.
|
||||
|
||||
Virfield v2.0.0 опубликован: Go daemon, leases/images, аутентифицированные HTTP/MCP, SSH isolation, tunnels и embedded console. Live golden/clone E2E и release CI прошли в объёме [[personal/projects/virfield]]. Установленные сервисы используют deployment вне checkout; публикация нового архива не обновляет runtime автоматически.
|
||||
Базовый релиз Virfield v2.0.0 опубликован. На Mac установлен более новый versioned-images/GHCR кандидат, который ещё не принят как production release. Актуальные Git/runtime, матрица golden/clone E2E и полный оставшийся план поддерживаются только в [[personal/projects/virfield]]. Сервисы используют deployment вне checkout; публикация архива и коммит исходников не обновляют runtime автоматически.
|
||||
|
||||
Локально подтверждено 2026-09-30:
|
||||
|
||||
|
||||
+103
-35
@@ -1,58 +1,126 @@
|
||||
---
|
||||
title: Virfield
|
||||
namespace: personal
|
||||
updated: '2026-09-30'
|
||||
status: released
|
||||
updated: '2026-10-01'
|
||||
status: candidate-not-production-accepted
|
||||
tags: [virfield, macos, vm, go, infrastructure]
|
||||
---
|
||||
# Virfield
|
||||
# Virfield — текущий статус и продолжение
|
||||
|
||||
**Релиз:** [v2.0.0](https://github.com/mallexxx/virfield/releases/tag/v2.0.0), опубликован 2026-09-30; commit `ee3aa1d8f5906bfe591d76c0af2afd73bcad9fba`.
|
||||
**Репозиторий:** [mallexxx/virfield](https://github.com/mallexxx/virfield). В `main` только Go-реализация; предыдущая реализация сохранена исключительно в Git-ветке `v1`.
|
||||
**Следующее действие:** прочитать эту заметку и локальный `docs/VERIFICATION.md`, проверить свежие Git/runtime/inventory, затем продолжить GHCR publish → pull-back на свободном пуле.
|
||||
|
||||
## Что работает
|
||||
**Остановлено по просьбе пользователя после успешного E2E двух клонов и их удаления. Новый кандидат ещё не production-ready.** Новые VM, публикация, релиз и подключение клиентов после этой проверки не запускались. Продолжение — в новом чате.
|
||||
|
||||
Virfield — host control plane для одноразовых macOS VM: подготовка и проверка golden image, leases, clone/start/SSH readiness, отдельные SSH credentials для каждого lease, tunnels, expiry и cleanup. Лимит — не более двух VM с явным `capacity_exhausted`; очередь выполнения принадлежит Broker.
|
||||
Эта заметка содержит только актуальное состояние, оставшийся план и действующие pitfalls. История изменений — в Git; API/команды/runbook — в документации репозитория.
|
||||
|
||||
Четыре бинарника: `virfieldd`, `virfield`, `virfield-mcp`, `virfield-lume`. Web console встроена в daemon. CLI, stdio/HTTP MCP и UI обращаются к единому аутентифицированному API. Произвольного shell API и доступа к личным SSH-ключам нет.
|
||||
## 1. Точка остановки
|
||||
|
||||
## Источники истины
|
||||
|
||||
Obsidian хранит статус проекта и связи. Команды, конфигурацию и контракты поддерживаем в документации репозитория, без копирования runbook в заметки.
|
||||
|
||||
| Документ | Назначение |
|
||||
| Что | Значение |
|
||||
|---|---|
|
||||
| [README](https://github.com/mallexxx/virfield/blob/main/README.md) | Входная точка, структура и сборка |
|
||||
| [Operations](https://github.com/mallexxx/virfield/blob/main/docs/OPERATIONS.md) | Установка, пути, сервисы, MCP, leases и backup |
|
||||
| [Image pipeline](https://github.com/mallexxx/virfield/blob/main/docs/IMAGE-PIPELINE.md) | Golden image, зависимости, guest policy и recovery |
|
||||
| [Architecture](https://github.com/mallexxx/virfield/blob/main/docs/ARCHITECTURE.md) | Модули, границы API и инварианты |
|
||||
| [Verification](https://github.com/mallexxx/virfield/blob/main/docs/VERIFICATION.md) | Подтверждённые проверки и оставшиеся ограничения |
|
||||
| Репозиторий | `/Users/admin/Developer/virfield`, [mallexxx/virfield](https://github.com/mallexxx/virfield) |
|
||||
| Рабочая ветка / HEAD | `codex/versioned-images` / `a6cc966` |
|
||||
| Рабочее дерево / публикация | Чистое; локально 14 коммитов поверх `origin/codex/versioned-images` (`58c56db`) на момент проверки. Новые изменения не пушились, не сливались в main и не выпускались |
|
||||
| Опубликованная база | `main` / `v2.0.0`, commit `ee3aa1d`; это не текущий установленный кандидат |
|
||||
| Установленный runtime | `9d0860ed9568b73e7fa83e1972ff3894c801dbc4`, `registry_candidate_pending_live_acceptance`, SQLite schema 6 |
|
||||
| Deployment / VM storage | `/Users/admin/.virfield-v2` / `/Users/admin/.lume`; локальный выбор оператора, не встроенные требования проекта |
|
||||
| API / Lume | `127.0.0.1:7780` / `127.0.0.1:7777` |
|
||||
| Сервисы | `ai.virfield.virfieldd`, `ai.virfield.lume`; запущены от владельца VM |
|
||||
| Hypervisor | Patched Lume `0.5.3-virfield1`; установлен в deployment `tools/lume-0.5.3-virfield1/lume` |
|
||||
| Пул после E2E | `used: 0`, `available: 2`, активных jobs нет. Другие задачи могут занять пул позднее — проверять заново |
|
||||
|
||||
## Развёртывание и переносимость
|
||||
Фактическую версию сервиса проверять по `/Users/admin/.virfield-v2/release.json` и hashes. Коммит checkout сам по себе сервис не обновляет. После runtime `9d0860e` были только документальные коммиты: встроенный в установленный MCP Verification ещё не содержит последний результат двух клонов; актуальная приёмка — в локальном checkout. При следующей сборке/установке обновить и встроенные документы.
|
||||
|
||||
VM-хостинг требует Apple Silicon Mac, patched Lume 0.5.3 и документированных image tools. Поддерживаемый guest — macOS 27 build `26A428`; полный профиль `uitest-27-v1` требует Xcode 27+. Суффикс recipe и `/api/v1` обозначают версии контрактов, а не старое приложение.
|
||||
Схема 5 → 6 уже обновлена с разрешения пользователя и проверенным backup. Старый бинарник со schema 5 нельзя просто вернуть поверх schema 6. Предшествующий snapshot: `backup-ff4570a85e703b595b92a9c2606cf3f3`; снимки каждой замены runtime — в deployment `upgrades/registry-*`. Процедуру backup/restore брать из Operations. Не повторять одноразовые `/private/tmp/virfield-install-*.py` из предыдущего чата.
|
||||
|
||||
Каталог deployment задаётся оператором вне checkout. `deploy/prepare-services.py` берёт реального пользователя, HOME, пути и порты из конфигурации; токены не встраиваются в MCP-файлы. По умолчанию console/API — `127.0.0.1:7780`, Lume — `127.0.0.1:7777`; удалённое/container подключение требует отдельного TLS/routing setup.
|
||||
## 2. Подтверждённое состояние
|
||||
|
||||
На текущем Mac deployment расположен в `~/.virfield-v2`, VM-диски — в `~/.lume`. Это выбранные локальные пути, не требования к другой установке. System LaunchDaemons `ai.virfield.virfieldd` и `ai.virfield.lume` работают от владельца VM. По проверенному `release.json` установленный runtime остаётся на `44a1c15`; публикация `v2.0.0` сама по себе не обновляла сервис. Установку/обновление выполняем по Operations, не из каталога исходников.
|
||||
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 и 17 MCP tools. Это реализованные возможности, а не утверждение о проверке каждой версии macOS/Xcode. MCP содержит `virfield_help` и четыре документационных ресурса; агентский workflow не должен требовать чтения исходников или Obsidian.
|
||||
|
||||
[GitHub Actions Linux/macOS](https://github.com/mallexxx/virfield/actions/runs/36675247578) прошёл для релизного коммита. Подтверждены сборка с пустыми HOME/Go caches, deployment smoke с другими путями/портами, проверки зависимостей, секретов всей истории и релизного архива. Архив содержит четыре бинарника, source/docs, dependency notices и checksums; бинарники ad-hoc signed, без Apple notarization.
|
||||
### Образы и приёмка
|
||||
|
||||
На одном физическом Mac пройдены реальный IPSW download/resume, полный golden build с Assistant/Recovery/SIP/provisioning, два изолированных clone, отказ третьему, SSH/tunnels и cleanup. Второй физический хост, длительный soak, оставшиеся crash points и восстановление VM-дисков пока не приняты. Проверки snapshot не заменяют VM-disk disaster recovery.
|
||||
| Объект | Текущий результат |
|
||||
|---|---|
|
||||
| `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 сохранён |
|
||||
| `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 | Каталог/совместимость разрешаются; реальная установка ещё не принята. В `Downloads` и deployment `imports` точного `.xip` при последней проверке нет; требуется авторизованный Apple archive/доступ |
|
||||
|
||||
## Pitfalls
|
||||
Sequoia golden получен с диагностикой и operator recovery, **не полностью чистым end-to-end прогоном финального кода**. Чистый новый import/portable round-trip остаётся обязательным перед release acceptance. Два worker-клона после исправлений прошли без ручной починки.
|
||||
|
||||
- `acquire` принимает job; работать по SSH можно только после lease `ready`.
|
||||
- Running external VM и незавершённый cleanup занимают capacity; освобождать слот ручным редактированием SQLite нельзя.
|
||||
- Неизвестный результат мутации требует inspection/recovery; повторный start/clone/delete вслепую недопустим.
|
||||
- `release` удаляет disposable VM: результаты нужно выгрузить заранее.
|
||||
- State backup не содержит VM-диски и IPSW cache; восстановление дисков проверяется отдельно.
|
||||
Идентификаторы для поиска доказательств:
|
||||
|
||||
## Связь с другими проектами
|
||||
- Golden: image `image-d99fdbe7a626a10f84a265ab297b38b5`, job `job-6706c89cabe70b931d162903b6f89ff1`; `verified_at: 2026-10-01T08:21:19Z`.
|
||||
- Удалённые E2E-клоны: `lease-54c01094abd7c71b4bde58c715ce0095`, `lease-568d0c97a002f56a81fadeea55c2373b`.
|
||||
- Приватные доказательства: `/Users/admin/.virfield-v2/images/image-d99fdbe7a626a10f84a265ab297b38b5/verification.json` и `/Users/admin/.virfield-v2/acceptance-sequoia-clones-20261001.log`. Не копировать credential files в заметки/репозиторий.
|
||||
|
||||
Целевая цепочка: `Balda → Execution Broker → Virfield → VM → Runner/Callee`. Virfield владеет VM, Broker — очередью и run lifecycle, Runner/Callee — выполнением внутри VM. Полный сценарий из Balda не подтверждён релизом Virfield; состояние остальных проектов проверяется отдельно.
|
||||
`make check` (race/vet, 21 Python regression checks, deployment checks, docs), build, staticcheck, `go mod verify` прошли. Установленный HTTP/stdio MCP: 17 tools/help/status работают, anonymous доступ отклоняется. Gitleaks текущих исходников — без находок. Govulncheck: нет уязвимостей в используемом коде и импортируемых пакетах; одна advisory относится к неиспользуемому пакету требуемого модуля. Ранее были проверки release archive/full Git history/пустого HOME; повторить их для финального релиза.
|
||||
|
||||
- [[personal/plans/balda-callee-prism-plan]] — целевая интеграция и оставшаяся приёмка.
|
||||
- [[work/wiki/apple-browsers/vm-ui-testing]] — применение VM leases для UI-тестов.
|
||||
### 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 в этом acceptance run не опубликовано. Планируемый отдельный тестовый package — `mallexxx/virfield-e2e-sequoia152`. Использовать новый уникальный tag, проверить отсутствие перед стартом; не перезаписывать уже существующий. Видимость пакета инструмент не меняет.
|
||||
|
||||
`image_publish` **пересобирает закреплённый recipe в новой portable VM**, а не выгружает текущий диск golden. Ручные изменения/рабочие файлы исходного golden не экспортируются. Portable build использует публичный bootstrap `lume/lume`, очищает гостевые SSH identities/history, проверяет диск, штатно останавливается, публикует и удаляет собственную временную VM. Import снова изолирует credentials. Публикация текущего приватного managed disk не поддерживается.
|
||||
|
||||
Virfield MCP в Codex и Claude Code ещё не зарегистрирован; это отложено до приёмки кандидата. Balda/Broker могут использовать тот же пул: их состояние и задачи проверять отдельно, чужие VM не останавливать.
|
||||
|
||||
## 3. Полный оставшийся план
|
||||
|
||||
### 1. Закрыть GHCR round-trip и чистую сборку
|
||||
|
||||
На свежем idle inventory продолжить от сохранённого `vf-ghcr-sequoia152`. Опубликовать portable recipe в push-enabled `personal-ghcr` с новым tag. Проверить job `succeeded`, полученный digest и удаление временной export VM/её private files. При ошибке/неизвестном результате inspect exact job/tag; не повторять публикацию вслепую.
|
||||
|
||||
Импортировать опубликованный tag в новое имя, проверить совпадение digest, полный автоматический setup/security/reboot без ручного восстановления, FileVault/Encryption/Locked=false на обоих томах. Получить обычные клоны; проверить workload, credentials/isolation, artifact export и cleanup. При регрессии исправить код, добавить осмысленную проверку и повторить соответствующий чистый workflow. Записать результат в repository Verification. Разрешение прошлого чата покрывало уже удалённые два клона; scope новых destructive cleanups подтвердить заранее по правилу пользователя.
|
||||
|
||||
### 2. Закрыть Monterey и реальный Xcode workflow
|
||||
|
||||
Найти и воспроизвести подготовку Monterey с **реально незашифрованными System и Data**, а не только FileVault Off. Затем выполнить нормальное клонирование с новой 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» без проверенной совместимости.
|
||||
|
||||
### 3. Завершить 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/обновление с учётом schema 6. Повторить 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.
|
||||
|
||||
### 4. Подключить 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 должен содержать все 17 tools, inputs, job polling, security/version selection, GHCR contract, operator recovery boundary, SSH/SCP и cleanup — так, чтобы агенту не приходилось читать исходники или Obsidian. Проверить взаимодействие с Balda/Broker через их собственную актуальную документацию и реальную сквозную приёмку.
|
||||
|
||||
### 5. Зафиксировать и выпустить принятый результат
|
||||
|
||||
Перед 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 объявлять только с перечислением реально прошедшей матрицы и оставшихся ограничений.
|
||||
|
||||
## 4. Действующие 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 и оставить старый пароль. Текущий код записывает guest `kcpassword` root:wheel/0600 и loginwindow preference, затем проверяет decoded password по pinned SSH без вывода секрета. Реальный reboot/Finder обязателен; проверка одного exit code не годится.
|
||||
- Неизвестный исход мутации — `needs_attention` и inspection exact VM/job. Не повторять clone/start/delete/upload вслепую. Работать только после lease `ready`, выгружать артефакты до `release`. Приватные logs могут содержать чувствительный контекст; не копировать их целиком. `/private/tmp/virfield-lume-source` содержит отклонённые экспериментальные изменения: не собирать оттуда зависимость, использовать pinned recipe репозитория.
|
||||
|
||||
## 5. Где читать дальше
|
||||
|
||||
Каноническая текущая документация находится в локальном checkout (новые коммиты ещё не запушены):
|
||||
|
||||
| Источник | Назначение |
|
||||
|---|---|
|
||||
| `/Users/admin/Developer/virfield/docs/AGENT-GUIDE.md` | Полный workflow агента и контракты 17 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.
|
||||
@@ -2,12 +2,12 @@
|
||||
source: https://github.com/mallexxx/virfield/tree/v2.0.0
|
||||
confidence: 1.0
|
||||
namespace: work
|
||||
last_updated: 2026-09-30
|
||||
last_updated: 2026-10-01
|
||||
tags: [ui-testing, vm, virfield, xcode]
|
||||
---
|
||||
# VM UI Testing — Virfield
|
||||
|
||||
Текущий host manager — Virfield v2.0.0 на Go. Карточка проекта: [[personal/projects/virfield]]. Эта заметка описывает границу UI-test integration; установка, API/MCP и команды поддерживаются в [Operations](https://github.com/mallexxx/virfield/blob/main/docs/OPERATIONS.md).
|
||||
Host manager — Virfield v2 на Go. Опубликованный релиз, установленный кандидат, проверенная матрица OS/Xcode и незакрытые release gates различаются; их актуальный статус — только в [[personal/projects/virfield]]. Эта заметка описывает границу UI-test integration; установка, API/MCP и команды поддерживаются в [Operations](https://github.com/mallexxx/virfield/blob/main/docs/OPERATIONS.md).
|
||||
|
||||
## Поток UI-теста
|
||||
|
||||
@@ -23,7 +23,7 @@ Virfield управляет VM и соединением, а не выполня
|
||||
- Максимум две macOS VM с учётом внешних VM и reservations; `capacity_exhausted` — повод поставить run в очередь Broker.
|
||||
- Успешный acquire означает принятый job, не готовность гостя. Использовать lease только после `ready`.
|
||||
- Recipe не монтирует host shared folders. Build workspace находится в VM; личные host SSH keys и provider credentials не запекаются в golden.
|
||||
- Поддерживается macOS 27 build `26A428`; full UI-test profile требует Xcode 27+. Совместимость этого guest/toolchain с конкретной веткой apple-browsers проверяется отдельно.
|
||||
- Full UI-test profile `uitest-27-v1` проверен на macOS 27 build `26A428` и требует Xcode 27+. Кандидат поддерживает выбор версий через каталог; реально принятые сочетания перечислены в карточке Virfield и Verification. Совместимость с конкретной веткой apple-browsers проверяется отдельно.
|
||||
- Реальный golden/clone E2E Virfield прошёл на одном Mac. Это не подтверждение XCUITest run для apple-browsers через новый Broker/Runner.
|
||||
|
||||
## Ссылки
|
||||
|
||||
Reference in new issue
Block a user