121 lines
30 KiB
Markdown
Executable File
121 lines
30 KiB
Markdown
Executable File
---
|
||
title: Virfield
|
||
namespace: personal
|
||
updated: '2026-10-14'
|
||
status: release-hardening-waiting-lease
|
||
tags:
|
||
- virfield
|
||
- macos
|
||
- vm
|
||
- go
|
||
- infrastructure
|
||
---
|
||
# Virfield — текущее состояние
|
||
|
||
Актуально на 2026-10-14. Поддерживаемый checkout: `/Users/admin/Developer/virfield`. Ветка `codex/retire-lume-release-hardening` опубликована по разрешению пользователя, current source `624bdfa7a88738809729e6889c679eaf0241eb78`; `main` ещё не обновлён. Установлен `aee89c1`: node resource/cache quotas и source-prefetch. Новый source также содержит HTPC `vms.storage_dir`, строгий Tart clone routing, отказ от неполных inventory snapshots при отмене проверки, native GUI/SSH keychain readiness, постоянный 1920×1080 Tart desktop, SSH banner budget 45 s и macOS 27 ASIF Recovery keep. Установка последнего кандидата ждёт освобождения чужой lease по решению пользователя. 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. Установленный `aee89c1` prefetches source в retryable resolve и отключает implicit pruning. Factory golden `image-5387f340da4ae093162383c18449c592` rebuilt/qualified, generic automation прошёл post-reboot проверку; два последовательных клона прошли SSH/cross-key/host-key isolation, exact OS/build/SIP, desktop и artifact export, затем оба released. Private GHCR publication требует idle pool и пока не запускалась; полный roundtrip не принят. Текущие исходники, установленный daemon и published archive нельзя считать одним артефактом.
|
||
|
||
Installed MCP прошёл HTTP и fresh stdio discovery/help/status с 18 tools, HTTP 401 без авторизации и ещё два полных fresh stdio acquire/replay → SSH/workload/artifact/desktop → release цикла на собственных factory-клонах. Оба дополнительных клона удалены. Live discovery gate исправлен: проверяет обязательные имена вместо устаревшего hardcoded count 17. Source MCP metadata теперь соответствует Tart/node budgets, approved bases и unlocked APFS/FileVault policy. Ventura `TestLiveLeaseSSH` прошёл exact Xcode 15.2/15C500b, Swift workload, SCP, cross-key/image-key rejection, desktop/tunnel revocation, cleanup и рестарт daemon с сохранением lease SSH identity. Signed installed archive `aee89c1`: SHA-256 `2313602b2c380e5e74640c47ee6ad50d9c10d750f856a0949833a4489803cf35`; хеши трёх подписанных бинарников сохранены в `~/.virfield-v2/upgrades/20261014-aee89c1/installed.json`. Полный локальный make check, Staticcheck, Gitleaks и регрессионные race-тесты нового inventory fix прошли. Clean archive exact source `8a297748eac5035fa0f0453aa51e11e9cb77d4e4`: `/private/tmp/virfield-release-candidate-20261014/virfield-v0.0.0-candidate-darwin-arm64.tar.gz`, SHA-256 `e2efde0214c7f4967528308b850575baac4a464e4e6c86425e871e11b8879488`; extraction, все binary checksums, native browser signature и действующий config-check проверены. Idle-only installer `/private/tmp/virfield-install-8a29774.py` подготовлен, не запускался; включает три бинарника и актуальный native Apple browser, rollback backup и повторную проверку свободного pool. Fresh MCP из этого clean archive прошёл discovery/help/status и проверку исправленных metadata.
|
||
|
||
Ожидаем освобождения `lease-6fde5d2f33c234f2e885583fb6a8fd34` (`macos27`). На 2026-10-14 13:56 UTC API показывал `needs_attention`/`vm_drift`, VM в Tart running; чужую аренду/VM не меняли. Причина drift не установлена. Lease TTL — до 2026-10-15 13:20:23 UTC (19:20 по Бишкеку), она может быть released владельцем раньше. Heartbeat `virfield-lease` проверяет ожидание каждые 15 минут. Пользователь 2026-10-14 явно подтвердил однократное продолжение: «Продолжай доделывать до готовности»; automation обновлена и ACTIVE. После освобождения этой lease и остальных чужих VM/jobs она продолжит безопасную установку актуального проверенного кандидата, installed Tart/node/MCP live-приёмку, factory/private GHCR roundtrip, локальные CI, исправления, документацию и push рабочей ветки; после подтверждённого завершения отключится. Пока pool занят, установка и рестарт не выполняются. Прежний отказ auto-review из-за отсутствия согласия относится к историческому запросу; это согласие теперь получено. Отдельно тестами доказан и исправлен дефект canceled inventory: прерванный адресный/container probe больше не превращается в успешный неполный snapshot; Control сохраняет последнее полное inventory и закрывает admission. Этот fix пока не установлен.
|
||
|
||
Offline restore `backup-5cdef526c555f6a53ed5f565c6e2edaf` в отдельный private каталог прошёл: 18 файлов, SQLite integrity, пять active image identities/credentials/verification, тот же node management key, новый operator token и config-check. Restored daemon не запускался; live restore/rollback остаются gates.
|
||
|
||
Ранее принятые срезы сохраняют свои даты:
|
||
|
||
- 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 probe корректно отказал в 100 GiB VM на home NVMe с 99 GiB free и reserve 20 GiB. `d2daf4e` добавляет private storage root для HDD (2.7 TiB free); новые пустые owner-only directories подготовлены, deployment config ещё не переключён. Новый live node suite ещё нужен; права существующих HTPC goldens не менялись без отдельного разрешения. Read-only namei подтвердил 0444 у двух старых secured qcow2/OpenCore файлов и traversable directories; migration к 0400 остаётся permission/release gate. Будущий v3 capability API, grants, node-agent, Access/noVNC, VS Code extension и расширенный fleet/hardening остаются roadmap. Опубликованный v2.0.0 — исторический Lume-релиз 2026-09-30.
|
||
|
||
## DDG macOS UI tests: проверенные проблемы и исправления (2026-10-14)
|
||
|
||
Сессия Claude Code (`apple-browsers.git/fix-macos-ui-test-failures`) держит `lease-6fde5d2f33c234f2e885583fb6a8fd34` (`macos27`, TTL до 2026-10-15 13:20 UTC). Установленный daemon `aee89c1` и эта рабочая VM ещё не обновлялись: пользователь выбрал дождаться освобождения lease. Исправления опубликованы в source `624bdfa7a88738809729e6889c679eaf0241eb78`.
|
||
|
||
- **Locked keychain — исправлен и live-проверен в source.** DDG CI вызывает `create_keychain_ui_tests` в `macOS/fastlane/Fastfile`: DefaultKeychain/`default`, default + unlock, timeout 54000, без lock on sleep. DDG EncryptionKeyStore хранит encryption key через native generic-password SecItemAdd с WhenUnlocked. GUI и каждое SSH-подключение имеют отдельную Security audit session, поэтому разблокировка только одного контекста недостаточна. Кандидат готовит private per-image/lease default keychain через Aqua LaunchAgent и разблокирует его непосредственно перед каждой исходной SSH-командой через VM-only ForceCommand. Native запись/чтение/сравнение данных/удаление проверяются в обоих контекстах, после reboot — с новым boot UUID и nonce. Публичный/пустой пароль не используется.
|
||
- **Старый login keychain и ScopedBookmarkAgent — тоже закрыты.** Одной смены default keychain оказалось мало: OS service продолжает обращаться к login и оставляет модальный password dialog над браузером. Новый preparer сохраняет его items, меняет пароль на текущий private VM password, проверяет native доступ после lock/unlock новым паролем и сохраняет login в search list. Старый image password не остаётся в worker identity. Ручное убийство SecurityAgent не является частью нового readiness.
|
||
- **Дисплей — исправлен в source.** Старый установленный golden отдаёт 1024×768 pt / 2048×1536 px и список преимущественно 4:3 режимов; workaround владельца на нём — 1920×1440 1x. Новые Tart recipes/clones задают 1920×1080 logical и запрещают refit окна. Host-side hint сам по себе недостаточен: Aqua agent выбирает native режим через CGBeginDisplayConfiguration → CGConfigureDisplayWithDisplayMode → CGCompleteDisplayConfiguration(permanently). Временный CGDisplaySetDisplayMode откатывается при выходе процесса. Новые isolated factory и worker подтвердили actual GUI frame 1920×1080 после reboot.
|
||
- **SSH banner после boot — исправлен в source:** 45 секунд в daemon handshake и generated CLI config; timeout до выполнения команд классифицируется как retryable connection failure. Host pin/auth failures не повторяются. Regression test прошёл.
|
||
- **macOS 27 factory / ASIF — дополнительно найден и исправлен:** отсутствие recovery_partition выбирало Packer default deletion, оставляя открытый/заблокированный ASIF file и вызывая Virtualization.framework startup failure. Все macOS 27 recipes теперь явно keep Recovery. Полный новый source resolve → Packer build → qualify/reboot → stop прошёл.
|
||
- **vm_tunnel backend_unavailable / vm_drift — installation gate остаётся.** Прямой SSH рабочей lease отвечает, API считает её needs_attention. Canceled inventory regression исправлен в source и проверен тестами; это не доказывает единственную причину drift этой конкретной чужой lease. Повтор live tunnel acceptance нужен после безопасной установки.
|
||
- **VMShare отсутствует по текущему контракту:** checkout и DerivedData копируются pinned SSH/SCP/rsync с сохранением путей, нужных pre-actions. Общий host каталог автоматически не монтируется.
|
||
- **macOS UI Tests CI ожидает prebuilt products.** CI скачивает notarized Review app; для локального запуска нужны отдельно собранные macOS Browser Review и macOS tests-server. Сам VM manager не угадывает build scheme.
|
||
- **Xcode 27.1 products → guest Xcode 27.0:** два реальных запуска DownloadsUITests.testDownloadFinishesThenPopupIsShown прошли (1 test / 0 failures каждый), включая browser startup и Settings/General clicks. Второй запуск выполнен после source guest agent/reboot без ручного unlock. Это single-test smoke, а не приёмка всей UI-suite или всех minor version сочетаний.
|
||
|
||
Дополнительная приёмка: Ventura native GUI key I/O/reboot; macOS 27 native GUI и SSH key I/O/reboot; source macOS 27 factory; два source Prepare-клона нового factory golden с SSH identity isolation, login rekey и real worker reboot — PASS. SCP upload/download с SSH bridge — PASS. Все четыре isolated VM этой проверки подтверждённо удалены; две неудачные old-daemon factory записи удалены через exact-name journaled recovery после проверки отсутствия процессов/VM. Production goldens и чужие leases не менялись.
|
||
|
||
Private evidence: `/private/tmp/virfield-keychain-macos27-standalone-20261014`, factory image `image-3ded21740aa5ee237b85aac1fc8bbe52`, source recipe SHA-256 `38a47b46c05c906e3b104d7c6a9d83479047213deaf3002b93f2e2af6debd6ae`. Exported DDG xcresult archive `ddg-final-xcresult.zip`, SHA-256 `cfe8100c567effaed5271f8b32f819b372ea2a22f65c7794e2013a0351555b76`. Local make check (docs, Python, vet, full race), Staticcheck и Gitleaks прошли. GitHub CI не использовался как acceptance.
|
||
|
||
## Каноническая документация
|
||
|
||
- [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]].
|
||
|
||
## iPad Markdown editors: Monterey build (2026-10-14)
|
||
|
||
Работа: [[personal/how-to/ipad-ios935-build-deploy]]. Цель — сборка открытых редакторов на `monterey-xcode-13.4.1`, armv7/iOS 9.3.5, fake sign и установка на подключённый iPad mini 1.
|
||
|
||
Наблюдения этой сессии:
|
||
|
||
- В 21:53–21:56 (Asia/Bishkek) admission сначала был занят 2/2: чужой `lease-6fde5d2f33c234f2e885583fb6a8fd34` и quarantined image `image-2ec1111415abc0c1e1e66a8e293b14db` / job `job-9f321bedd55313ed859c8eaa9844c3ce` (`image_command_failed`). Чужие записи и VM не менялись. Позднее статус показал освобождение image reservation и один свободный слот.
|
||
- Первый `vm_acquire` для Monterey с default storage вернул `resource_exhausted`: `No eligible clone storage has enough free disk for reserved VM growth and host safety reserve: samsung-tart`. При этом status показывал `capacity.available=1` и около 251 GB физически свободного места на Samsung; admission дополнительно учитывает полные reservations и safety reserve. Это ограничение ресурса, не доказанный дефект.
|
||
- Новый запрос с явным `destination_location=release-check` принят: lease `lease-9e65ca2f956c0f061eb3ac021d9f6b6f`, prepare job `job-ee57f1c483518f251f1bcd095621e6e9`, VM `vf-9e65ca2f956c0f061eb3ac021d9f6b6f`. Тело и idempotency key сохранены в `~/Developer/ipad-editors/virfield-acquire-release-check.json`.
|
||
- Job через ~2 секунды перешёл в `needs_attention`, phase `clone_dispatched`, error `clone_outcome_unknown`; lease — `quarantined`, `clone_confirmed=false`. Events 840–842 не сохраняют исходную ошибку backend, только общий текст `Runtime create did not return confirmed success. Automatic replay and deletion are blocked.`
|
||
- Установленный Operations runbook прямо предупреждает: `Local Tart cannot clone a local golden across TART_HOME containers; do not configure a cross-container fallback for such templates.` Исходники `internal/tart/client.go:414–422` отклоняют такой cross-container clone ДО вызова Tart. Здесь golden находится в `samsung-tart`, а выбран destination `release-check`; это соответствует запрещённому пути. Controller (`internal/control/controller.go:1050–1063`) превращает любое Clone error в неоднозначный outcome и quarantine. Следствие: детерминированный preflight rejection занимает reservation и требует operator recovery, а исходная причина не видна в job/events. Это найденная проблема интерфейса admission/диагностики, не исправленная в этой сессии.
|
||
- Повтор acquire, resolve/release и обход journal не выполнялись. Для восстановления нужен exact-name operator resolve после подтверждения отсутствия операции, с отдельным подтверждением пользователя: команда recovery может навсегда удалить собственную VM. Чужая работа не затрагивается.
|
||
|
||
Сборка ещё не запускалась: готового Monterey lease нет. TTL quarantined lease — до 2026-10-15 00:58:14 Asia/Bishkek; истечение TTL само по себе не доказывает cleanup.
|
||
|
||
### Recovery approval review, 2026-10-14 22:18 Asia/Bishkek
|
||
|
||
После пользовательского «Да» выполнены повторные read-only status/job проверки: собственный lease по-прежнему quarantined, job needs_attention, runtime inventory не содержит собственной VM; никаких running/queued операций для неё нет. Попытка штатного CLI resolve с exact lease/VM и CONFIRM-NO-OPERATION-IN-FLIGHT остановлена automatic approval review ДО запуска команды. Reason: transcript does not contain a clear user approval for this exact irreversible lease deletion. Recovery не выполнен, slot reservation остаётся. Нужен однозначный ответ пользователя с разрешением удалить только `lease-9e65ca2f956c0f061eb3ac021d9f6b6f` / `vf-9e65ca2f956c0f061eb3ac021d9f6b6f`. Это approval blocker, не новый сбой Virfield backend.
|
||
|
||
### Recovery и новый образ, 2026-10-14 22:30 Asia/Bishkek
|
||
|
||
После явного ответа пользователя «Разрешаю recovery и удаление указанной VM» повторно проверен остановленный prepare job, затем выполнен штатный exact-target CLI `resolve`. Cleanup `job-1fe239f3064566b2a4b3f75ebce13813` завершился `succeeded` в 16:29:45 UTC. Предыдущий approval blocker снят; освобождена только собственная аренда Monterey. Работающая macOS 27 VM `vf-6fde5d2f33c234f2e885583fb6a8fd34` не менялась.
|
||
|
||
Чтобы избежать cross-container clone, запущен новый `image_create` непосредственно в `release-check`: template/VM `ipad-editors-monterey-xcode-1341-20261014`, image `image-f8c888fcafbd1a2df2a3b9a02821685d`, job `job-076452fa609adc3e6d4093a8e047a693`. Exact profile: macOS 12.7.6/21H1320, Xcode 13.4.1/13F100, SIP enabled, тот же approved digest-pinned Tart upstream. Образ пока строится; это не подтверждение готовности worker или успешной сборки приложения.
|
||
|
||
### Cross-container admission fix: source versus installed (2026-10-14)
|
||
|
||
Monterey rejection выше относится к установленному `aee89c1`. В опубликованном source `624bdfa` проверка `Controller.cloneLocationCandidates` возвращает `invalid_request` при explicit wrong container для local Tart golden ДО reservation/job; `TestLocalTartGoldenRejectsWrongStorageBeforeReservation` проверяет отсутствие записанной lease. Без явного destination несовместимые default/fallback locations также отфильтровываются. Это уже исправлено в source, установка ещё ждёт освобождения рабочей macOS 27 lease. Cross-container golden copy не реализован; новый image в нужном container — допустимый отдельный workflow. Чужая iPad-сессия и её journal не менялись этой проверкой.
|
||
|
||
### Новый clean candidate: keychain/UI readiness (2026-10-14 16:49 UTC)
|
||
|
||
Published source `624bdfa7a88738809729e6889c679eaf0241eb78`, branch `codex/retire-lume-release-hardening`; clean worktree и remote branch совпадают. Актуальный package `/private/tmp/virfield-release-keychain-624bdfa-20261014/virfield-v0.0.0-keychain-candidate-darwin-arm64.tar.gz`, SHA-256 `be29654ef02f4ab6cd747b1815c2a72532717aaf2d423a2a4d8a93e4013634bb`. Проверены extraction, все manifest binary hashes, native browser signature и deployment config-check. Idle-only installer `/private/tmp/virfield-install-624bdfa.py` подготовлен, не запускался; прежний installer/archive `8a29774` — исторический срез. Установлен по-прежнему `aee89c1`. На 16:49 UTC рабочая macOS 27 VM всё ещё running, её lease needs_attention; также работает отдельный image build `job-076452fa609adc3e6d4093a8e047a693` чужой iPad-сессии. Установка требует idle pool и ждёт выбранного пользователем освобождения рабочей lease. Полный GHCR roundtrip/node acceptance/live restore остаются release gates.
|
||
|
||
Fresh stdio MCP из clean package `624bdfa` также прошёл initialize/discovery (18 tools), актуальный embedded runbook, read-only status и проверку новых native GUI/SSH keychain + 1920×1080 descriptions. Во время smoke VM/lease mutations не выполнялись.
|