[2026-09-26] eagle: personal/plans/balda-mm-phase4-agents.md personal/tech/macos-docker-virtiofs-mount-limits.md

This commit is contained in:
Alexey Martemyanov committed 2026-09-26 19:40:54 +06:00
1 parent 1eecc3011e
commit 5163c1c251
2 files changed
+149 -247

No files matched your search

@@ -208,6 +208,39 @@ docker buildx build --builder arm64builder --platform linux/arm64 \
`docker-compose up` (это формат swarm). Лимит создаёт ложное ощущение защиты —
что-то ограничивать нужно иначе (cgroups напрямую или `mem_limit`, зависят от версии).
### Проверено 2026-09-26 (сборка `balda-executor`)
Дополнения по факту сборки Фазы 4:
| Факт | Значение |
|---|---|
| Сборка образа | `docker buildx build --builder arm64builder --platform linux/arm64 --provenance=false --load -t balda-executor:0.1.0 .` — прошла, ~1 мин |
| `compose.override.yaml` при `mounts: []` | должен существовать обязательно: compose подхватывает его автоматически, а без файла `up` падает на монтировании |
| Имя каталога в выводе | `docker-compose` пишет путь через **нижний регистр** (`/Users/admin/docker/...`) — macOS ФС регистронезависима, для человека разницы нет |
| Пересоздание контейнера | `docker-compose up -d` после правки манифеста: `Recreate` → `Started`, 2-3 сек, `--privileged` не нужен |
| Отвязка проекта | убрать запись из манифеста → `render-mounts.py` → `up -d`. Файлы на хосте целы (проверено: `ls` на хосте после отвязки) |
| Hardlink в тот же том | `ln -F` даёт `links=2` и **одинаковый inode** — проверено через `stat -f "%l %i"` |
| Hardlink на каталог | API возвращает 400 до вызова `ln` (проверка `is_dir()`), ядро тоже откажет |
### Питфолл: `psutil` отсутствует в venv Eagle Dashboard
`process/terminate`-операции процесса Hermes (`process kill`) падают с
`No module named 'psutil'`. Из-за этого supervisor **не может трекать мост по PID**,
и для сервиса моста выбран health `type: http`, а не `type: process` —
иначе карточка в дашборде всегда показывает «down», хотя сервис жив.
### Проверка, что сервис под launchd действительно автозапускается
```bash
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.agents.bridge.plist
launchctl list | grep agents.bridge # pid + last exit code
curl -s http://127.0.0.1:8790/healthz # сервис отвечает
```
`KeepAlive: true` + `RunAtLoad: true` в plist → сервис переживает падение и перезагрузку.
Требовать `PATH` в `EnvironmentVariables` обязательно: под launchd PATH минимальный,
и `/opt/homebrew/bin/docker` иначе не находится.
---
## Связанные заметки