[2026-10-26] eagle: personal/projects/virfield.md
This commit is contained in:
1 parent
1ad80abdc7
commit
916e13757c
1 file changed
+23
@@ -146,3 +146,26 @@ Broker reviewer исправление уже входит в запушенны
|
||||
Польза возможна для долговечных физических Mac: централизованные настройки и аудит, управляемые приложения, отдельные PPPC разрешения (например Full Disk Access и PostEvent). Для краткоживущих VM цена — внешний сервис, сертификаты, сеть/APNs, регистрация и очистка каждого worker. Главное ограничение для UI-тестов: Apple не разрешает MDM-профилем заранее дать ScreenCapture; только запретить. На macOS 27 старый PPPC grant для Accessibility убран; новый declarative AppSettings предлагает пользователю запрос согласия, но не выдаёт доступ без него. Поэтому MDM не заменяет наши UI-readiness проверки, настройку Automation Mode и человеческое согласие там, где его требует macOS.
|
||||
|
||||
Источники Apple: [MDM enrollment](https://developer.apple.com/documentation/devicemanagement/deploying-device-management-enrollment-profiles), [инфраструктура/APNs](https://support.apple.com/en-gb/guide/deployment/depceaf9c713/web), [PPPC и ScreenCapture](https://developer.apple.com/documentation/devicemanagement/privacypreferencespolicycontrol/services-data.dictionary), [macOS 27 AppSettings](https://developer.apple.com/documentation/devicemanagement/appsettings). Проверка текущего кода: `internal/qualify/automation.go`, `internal/guestscripts/security.sh`, `internal/guestscripts/provision27.sh`, `internal/config/config.go`.
|
||||
|
||||
|
||||
## Баг: ложная занятость VM при отключённом Tart storage (2026-10-26)
|
||||
|
||||
**Причина подтверждена по коду и текущему статусу Virfield.** Когда все настроенные Tart storage недоступны (сейчас `samsung-tart` сообщает `volume_unmounted`), `internal/tart/client.go` подставляет `HostUsed = HostMax`, чтобы закрыть запуск. Контроллер затем считает это реальными неизвестными VM: `capacityOn` показывает два «дополнительных слота», а `resources()` выставляет `resource_unknown: An active VM is missing from inventory`. Это не две реальные VM и не нехватка CPU/RAM; это синтетическое значение, ошибочно использованное как счётчик.
|
||||
|
||||
### Путь исправления
|
||||
|
||||
- Оставлять `HostUsed` и `UsedVMs` счётчиками фактически наблюдаемых VM; не использовать их для кодирования запрета.
|
||||
- Закрывать локальную capacity отдельно, когда ни один primary Tart storage недоступен, и показывать конкретный blocker, например `storage container samsung-tart unavailable: volume_unmounted`.
|
||||
- Передавать тот же blocker в ошибку acquire, чтобы объяснение не говорило о занятых слотах, если слоты фактически свободны.
|
||||
- Сохранить fail-closed поведение: недоступный storage не должен позволять запуск/сборку, а доступный другой primary storage не должен блокироваться без необходимости.
|
||||
- Регрессии: все storage отключены → фактическое `used=0`, `available=0`, причина — storage; нет ложной ошибки про отсутствующую активную VM. Также проверить смешанный случай с одним доступным storage и обычный доступный Tart путь.
|
||||
|
||||
### Текущее состояние
|
||||
|
||||
В `~/Developer/virfield` создан незакоммиченный локальный черновик: удалена подстановка `HostUsed = HostMax`; storage blocker перенесён в расчёт capacity; сообщение отказа включает blockers; добавлены regression tests. Прошли `go test ./internal/tart ./internal/control ./internal/domain` и `git diff --check`. Полные проверки `make check`/build, deployment и production-проверка ещё не выполнены. Изменения не закоммичены и не запушены; локальная `main` уже содержит 10 коммитов сверх `origin/main`, поэтому перед push нужно проверить полный набор коммитов.
|
||||
|
||||
### Приёмка после деплоя
|
||||
|
||||
1. На действующем статусе при отключённом диске увидеть фактическое число VM, `available=0` и точную причину storage; ошибка «active VM is missing from inventory» отсутствует.
|
||||
2. Убедиться, что lease/build не стартует через недоступное хранилище.
|
||||
3. После монтирования диска дождаться свежего inventory и проверить доступность шаблонов и нормальное распределение слотов.
|
||||
Reference in new issue
Block a user