62 lines
9.0 KiB
Markdown
Executable File
62 lines
9.0 KiB
Markdown
Executable File
---
|
||
title: Virfield
|
||
namespace: personal
|
||
updated: '2026-10-14'
|
||
status: release-hardening-in-progress
|
||
tags:
|
||
- virfield
|
||
- macos
|
||
- vm
|
||
- go
|
||
- infrastructure
|
||
---
|
||
# Virfield — текущее состояние
|
||
|
||
Актуально на 2026-10-14. Поддерживаемый репозиторий: `/Users/admin/Developer/virfield`, `main`; Ветка `codex/retire-lume-release-hardening` опубликована по разрешению пользователя; `09ad696` установлен и прошёл live Tart clone suite. Новый source candidate `aee89c1` добавляет node resource/cache quotas и перенос source transfer в resolve; его установка и расширенная приёмка идут. GitHub CI пока отложен пользователем; проверки выполняются локально. Старый worktree `virfield-v3` и ветка `codex/virfield-v3-stage1` не являются инструкцией для продолжения работы.
|
||
|
||
## Runtime и deployment
|
||
|
||
- Установленный runtime: Tart на Apple Silicon + SSH physical nodes `mbp-2014` и `htpc`. На HTPC macOS lab VM работают через rootless Podman/QEMU/OpenCore.
|
||
- Deployment `~/.virfield-v2`, config `~/.virfield-v2/config.json`, state `~/.virfield-tart`, daemon `~/.virfield-v2/bin/virfieldd`, API `127.0.0.1:7780`, launchd `ai.virfield.virfieldd`.
|
||
- Virfield переключён с Lume на Tart 2026-10-08. В текущем hardening-кандидате удалены Lume backend/factory/wrapper/patch/build/install paths. Неявный legacy runtime и `image_tools` отклоняются. Старые поля профилей читаются только для совместимости журнала; новый Tart builder отклоняет IPSW-рецепты до резервирования build.
|
||
- Старый `ai.virfield.lume` отключён (launchctl disable + bootout) 2026-10-14 после проверки пустого inventory. Служба отсутствует в загруженных system services, порт 7777 закрыт. Plist/бинарники сохранены для отката; Homebrew Lume отсутствует.
|
||
- Не создавать второй manager/listener, не менять порт и не редактировать SQLite/runtime disks в обход журнала.
|
||
|
||
## Реализованные исправления кандидата
|
||
|
||
- Один exclusive physical-host lease независимо от VM slots; VM не занимает host slot; node-side atomic host lock и post-wake проверка boot volume.
|
||
- Общий sleep hold с reference counting и сохранением чужого hold; при ошибке Podman cleanup overlay и hold сохраняются.
|
||
- Node image deletion сохраняет provider/guest identity, защищает backing goldens и проверяет отсутствие контейнера.
|
||
- Tart image_create выбирает approved digest-pinned bases из runtime.tart.bases и настроенных templates; default location соответствует конфигу. Base/developer/automation/macOS 27 recipes; generic automation проверяется после reboot.
|
||
- Shared resumable Xcode archive store, checksum/quarantine, exact-job Apple sign-in recovery в resolve до VM build.
|
||
- Registry resolver принимает Tart flat/ASIF format, image_pull сохраняет pin/provenance. Publish строит новый portable guest с публичным admin/admin, не ставит private golden credentials, sanitizes и подтверждает временный cleanup. Private managed golden не загружается.
|
||
- Init/installer используют три бинарника и только сервис Virfield; отдельный private state-dir и optional native browser. CLI config-check проверил действующий config.
|
||
- Orchard проходит обязательный per-lease SSH preparer; source-only remote template отклоняется до VM creation. Полноценная remote factory/access и live pool acceptance отсутствуют.
|
||
- Pending image build/export резервируют CPU/RAM/disk до dispatch и учитываются вместе с worker leases; для нового macOS 27 base нужен known/declared disk bound. Host IDs не могут совпадать между primary и node inventories.
|
||
- Backup включает node management keys и cached probes, отклоняет symlinks в identity tree.
|
||
- Go 1.26.9, pinned Staticcheck без замечаний, govulncheck: 0 reachable/imported-package vulnerabilities. Module-only notice openpgp относится к неиспользуемому пакету и не имеет fixed version.
|
||
- Удалён источник CI Pillow failure: retired Python image factory/tests и Lume build step. Это исправление workflow, а не результат нового GitHub CI.
|
||
|
||
## Приёмка и релизный статус
|
||
|
||
Кандидат **ещё не принят для релиза**. Установка `09ad696` сохранила signing identity/Team ID E3R68ED529 и все пять image-ready записей. Шесть последовательных Tart clones (по два Ventura/Monterey/macOS 27) прошли SSH/host-key изоляцию, OS/build/SIP, desktop, artifact export и release. External SSD не допускает два диска полного размера с сохранением резерва; concurrent acceptance будет выполняться на отдельном временном внутреннем контейнере. Exact commit `09ad696cacea2ba9cd2245fa76cc599696470d01` прошёл полный make check (docs, 7 Python tests, gofmt/vet/full race), Staticcheck, module verify, Gitleaks (196 commits), govulncheck (0 в используемом коде), действующий config-check и Packer syntax checks. Clean archive/extraction/init/checksums/native signature smoke прошёл: `/private/tmp/virfield-release-check-09ad696/virfield-v0.0.0-localcheck-darwin-arm64.tar.gz`, SHA-256 `f12f2be162cbcfa7688c814a8fcdbb13d17ff028053f878aa27ac1e87e2bbe3c`. Это локальная тестовая упаковка, не опубликованный release. Live public Tart manifest resolution также прошёл. Factory/GHCR roundtrip в работе: отдельный temporary Tart container и push source настроены, разрешён новый private `mallexxx/virfield-hardening-acceptance`. Первый cold Packer build завершился EOF; после проверки отсутствия процессов/VM его собственная запись удалена через journaled recovery. Новый candidate prefetches source в retryable resolve и отключает implicit pruning; roundtrip пока не принят. Текущие исходники, установленный daemon и published archive нельзя считать одним артефактом.
|
||
|
||
Ранее принятые срезы сохраняют свои даты:
|
||
|
||
- Ventura 13.7.4/Xcode 15.2 и Monterey 12.7.6/Xcode 13.4.1: golden qualification и две аренды, 23/23 на каждый golden.
|
||
- macos27 27.0/26A428/Xcode 27.0/uitest-27-v1: Broker v1 smoke passed 2026-10-08.
|
||
- R1: четыре boot volumes MacBook по очереди; HTPC wake-by-lease (27 с).
|
||
- R2: secured Sonoma 14.8.9 и Sequoia 15.8.1 на HTPC, 19/19.
|
||
- R3: Screen Sharing VM lease tunnels, 11/11. Physical desktop и browser noVNC не реализованы.
|
||
|
||
Node VM quotas реализованы в `aee89c1`: CPU/RAM/full disk reservations, pending image builds, cache cap, qcow2/storage probes и post-wake clone/start/commit checks; новый live node suite ещё нужен. Будущий v3 capability API, grants, node-agent, Access/noVNC, VS Code extension и расширенный fleet/hardening остаются roadmap. Опубликованный v2.0.0 — исторический Lume-релиз 2026-09-30.
|
||
|
||
## Каноническая документация
|
||
|
||
- [Operations](https://github.com/mallexxx/virfield/blob/codex/retire-lume-release-hardening/docs/OPERATIONS.md) — config/install/services/recovery.
|
||
- [Image pipeline](https://github.com/mallexxx/virfield/blob/codex/retire-lume-release-hardening/docs/IMAGE-PIPELINE.md) — актуальные Tart/node contracts.
|
||
- [Verification](https://github.com/mallexxx/virfield/blob/codex/retire-lume-release-hardening/docs/VERIFICATION.md) — фактические gates/evidence.
|
||
- [3.0 plan](https://github.com/mallexxx/virfield/blob/codex/retire-lume-release-hardening/docs/VIRFIELD-3-PLAN.md) — реализованное и оставшееся.
|
||
|
||
Ссылки ведут на опубликованную hardening-ветку; `main` ещё не обновлён. Старая история: [[personal/projects/archive/virfield-checkpoints-through-2026-10-08]].
|