12 KiB
Executable File
title, namespace, updated, status, tags
| title | namespace | updated | status | tags | |||||
|---|---|---|---|---|---|---|---|---|---|
| Virfield | personal | 2026-10-07 | virfield-3-stage-1-in-progress |
|
Virfield 3.0 — handoff checkpoint — 2026-10-07 15:35 Bishkek
Текущий статус: Stage 1 (Tart/Orchard migration) в работе; продолжать в /Users/admin/Developer/virfield-v3, branch codex/virfield-v3-stage1. Это актуальная запись состояния; ниже сохранена история v2 от 2026-10-03.
Что проверено сейчас
- Worktree: HEAD
8830ad9(Add Tart and Orchard runtime providers), родительский план6013310. Восемь файлов modified и не закоммичены:cmd/virfieldd/main.go,internal/config/config.go,internal/httpapi/server.go,internal/tart/client.go,internal/tart/client_test.go,internal/web/app.js,internal/web/index.html,internal/web/style.css. Не откатывать и не считать эти изменения заведомо своими без проверки. http://127.0.0.1:7780отвечает HTTP 200 и отдаёт v3 UI (Fleet / Images / Activity, Hosts & storage). Факт подтверждён запросом к live-сервису.- Live
virfieldd: launchd labelsystem/ai.virfield.virfieldd, PID 54497 на момент проверки, пользовательadmin; plist/Library/LaunchDaemons/ai.virfield.virfieldd.plistзапускает~/.virfield-v2/bin/virfieldd -config ~/.virfield-v2/config.json. Имяvirfield-v2— legacy путь развертывания, не доказательство версии исходников. - Точная ревизия уже работающего процесса не установлена. Не заявлять, что бинарник на 7780 собран из HEAD
8830ad9. - Текущий dirty source успешно компилируется (
go build -trimpath -o /private/tmp/virfieldd-v3-check ./cmd/virfieldd) и полныйmake checkпрошёл на этом состоянии 2026-10-07: docs links, Python tests, gofmt,go vet ./...,go test -race ./...(включаяinternal/tartиinternal/orchard). Реальный Tart VM lifecycle и live Orchard acceptance не прогонялись.
Следующее действие
-
Разобрать каждое из восьми незакоммиченных изменений и сохранить нужное; проверить владельца/намерение, не затирать.
-
Прогнать
make checkв этом worktree и устранить регрессии. -
Собрать
make build; сохранить копию текущего deployment binary для отката, заменить~/.virfield-v2/bin/virfielddсобранным бинарником. -
Перезапуск текущего launchd job пока не проверен. Для контролируемой проверки после сборки:
pgrep -x virfieldd # Убедиться, что найден ровно один PID текущего сервиса. kill -TERM PID launchctl print system/ai.virfield.virfieldd | rg 'state =|pid =|runs =' curl -fsS http://127.0.0.1:7780/ | rg 'v3|Fleet|Hosts & storage'Причина ожидания автоматического старта: plist имеет
KeepAlive=true, процесс работает отadmin, а deployment directory принадлежитadmin. Это ожидаемый способ безsudo, но пока не подтверждён живой проверкой. Если launchd не поднял новый PID, остановиться и диагностировать; не запускать второй daemon.Сборка/установка (после успешных проверок; перед заменой сохранить бинарник для rollback):
cd /Users/admin/Developer/virfield-v3 make check make build cp -p /Users/admin/.virfield-v2/bin/virfieldd /private/tmp/virfieldd-before-v3 install -m 755 bin/virfieldd /Users/admin/.virfield-v2/bin/virfielddДо live-проверки не объявлять обновление завершённым. Общий install/runbook находится в
docs/OPERATIONS.md; он описывает регистрацию system LaunchDaemon сsudo, но не dev-перезапуск существующего job безsudo. -
После подтверждения записать точный commit/build и результат live-проверки здесь. До этого не создавать второй listener и не менять порт.
План/код — актуальный разбор
Есть в коде: единый provider.Runtime seam; конфиг выбирает Tart либо Orchard для одного процесса; Tart inventory/clone/run/stop/delete и отдельные TART_HOME storage containers с UUID/availability/free-space; Orchard worker/VM inventory, labels, per-host CPU/RAM/VM-slot capacity, offline reasons, create/stop/delete; общий lease/controller; Hosts/storage UI; WoL magic-packet sender; registry credentials передаются только командам Tart с matching registry host. Текущие dirty правки также чинят disk free-space APFS fallback, CSP для нового UI и registry auth. make check прошёл на текущем dirty дереве.
Частично / не принято live: внешний SSD и device groups отражаются из конфига/runtime observations, но отдельная независимая durable device registry в SQLite не добавлена; WoL отправляется самим процессом на configured broadcast, а не через отдельный same-L2 node-agent relay; Tart/Orchard проверены unit tests, но ни Cirrus digest adoption, ни реальная VM lease/clone/boot/SSH/release, ни live Orchard pool не приняты. Один virfieldd выбирает ровно один runtime — смешанный local Tart + remote Orchard/Lume provider routing пока отсутствует.
Не сделано из плана: node-agent и bare-metal lease для Intel Mac/Linux; connection grants/access gateway; VNC/noVNC и единый desktop; v3 API/target capability model; VS Code extension (остаётся генератор workspace/LLDB v2); libvirt/QEMU/OpenCore Hackintosh; Broker contract migration; distributed image worker/promotion; drain, multi-host lifecycle acceptance и production rollout. image_tools pipeline остаётся Lume-only и явно отклоняется при Tart; для Tart нужен отдельный digest-pinned Cirrus adoption/qualification path.
docs/VIRFIELD-3-PLAN.md — целевая архитектура с фазами, не журнал исполнения. Его «First implementation slice» (node-agent + bare-metal Intel + access) расходится с согласованным Stage 1 (Tart/Orchard); план нужно поправить, чтобы порядок совпадал с выбранным.
- Источник кода — worktree
virfield-v3; live deployment —~/.virfield-v2; это разные копии. 7780 показывает v3 UI, но точная ревизия процесса не установлена.
Virfield — статус 2026-10-03
Следующее действие: проверить загрузку, работу и удаление временного клона из нового чистого образа Monterey/Xcode.
Состояние
- Monterey 12.6 + Xcode 13.4.1: образ
image_ready, временный legacy-клон прошёл загрузку, компиляцию Swift, SSH, выгрузку артефакта и очистку. ТестTestLiveLeaseSSHпрошёл за 86,99 с 2026-10-03. - Исходный образ
macos-12.6-xcode-13.4.1остановлен и сохранён. Временный клон удалён; активных заданий и занятых слотов нет. - Release-ready: нет. Чистая сборка прошла; клон нового образа и полный путь Balda/Broker ещё не приняты.
- Ветка
codex/versioned-images: локальный коммит19e01ac; push не сделан.
Установка Xcode и размер диска
- macOS 13+ использует VirtioFS. Monterey не монтирует VirtioFS; его путь передаёт проверенный XIP по закреплённому SSH и сверяет SHA-1 в госте.
- На существующей 80 GB VM
xipотказался распаковываться при ~42 GiB свободного места. Фолбэк передал проверенный Xcode.app по SSH без macOS tar metadata; гостевая подпись Apple и точная версия прошли проверку. - XIP занимает ~10 GB. Кэшированный Xcode.app занимает ~17 GB на хосте; несжатый поток файлов составил ~32 GiB. Готовая 80 GB VM занимает на хосте ~49 GiB.
- Новые macOS 11/12 VM с Xcode получают разреженный виртуальный диск 120 GB. Чистая сборка подтвердила, что XIP распаковывается на нём без фолбэка; готовый новый диск занимает 34,8 GiB на хосте. Существующая 80 GB VM не увеличивалась.
Legacy-клон и проверки
legacy_uuidдопускает APFS encryption at rest при выключенном FileVault и только одного активного worker. Registry publish для этого образа запрещён.- Первый живой клон не загрузился: Lume поменял
machineIdentifierи MAC-адрес. Он был удалён. Virfield теперь восстанавливает оба значения из остановленного образа до запуска копии и проверяет наличие скопированного NVRAM. Обычные клоны сохраняют новую идентичность. - Повторный клон подтвердил Xcode 13.4.1 / 13F100, Swift, SIP, Finder, политику диска, закреплённый SSH, отказ ключу исходного образа, туннель и SCP-артефакт. Второму одновременному legacy worker отказано. После теста исходный образ остался
image_ready. - Чистая сборка
macos-12.6-xcode-13.4.1-clean-20261003завершилась без ручного восстановления: задачаjob-ca072dfb3bfee011bd7ee9fcd28d8f46succeeded, образimage_readyи остановлен. Первый запуск черезimage-createбыл отклонён из-за APFS: эта команда не задаётlegacy_uuid; неудачная VM удалена с разрешения пользователя. Повторная сборка использовала профиль вconfig.jsonс legacy UUID. make checkиmake buildпрошли; установленный менеджер обновлён. Подробные результаты —docs/VERIFICATION.md; контракт установки —docs/IMAGE-PIPELINE.md.