fix(core): keep launchd service logs outside protected Downloads
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
# Core и Worker · восстановление запуска 22 сентября
|
||||
|
||||
После перезапуска Mac штатные LaunchAgents Core и двух старых Worker-туннелей
|
||||
завершались до запуска приложения с EX_CONFIG/78. Журнал macOS показал
|
||||
`xpcproxy deny file-read-data` для startup-журналов внутри Downloads и затем
|
||||
`posix_spawn Operation not permitted`. Фоновые элементы при этом были enabled/allowed.
|
||||
Это отдельный сбой запуска операторского контура, не ошибка навигации Isaac.
|
||||
|
||||
Исправление вынесло только launchd stdout/stderr в
|
||||
`~/Library/Logs/NODE.DC/MissionCore/`. Исходные журналы и evidence оставлены на месте.
|
||||
Путь checkout, данные, env, SSH arguments/ports и полномочия не менялись.
|
||||
Разрешения macOS не расширялись. Tailscale включил владелец; после этого SSH
|
||||
к Worker 006 снова заработал. Применение выполнено с проверкой обеих идентичностей
|
||||
plist, резервной копией и ожиданием полного bootout перед bootstrap.
|
||||
|
||||
Версионированная реализация: `src/k1link/launchd_logs.py`,
|
||||
`local_service_launchd.py`, `observatory/worker_tunnel_launchd.py`,
|
||||
`scripts/manage_mission_core_launch_agent.py`, `scripts/migrate_worker_tunnel_logs.py`.
|
||||
Планирование не создаёт файлы; apply создаёт только новый приватный журнал,
|
||||
отклоняет symlink и не обнуляет существующее содержимое. Старый Core startup-log
|
||||
остаётся в `.runtime/mission-core/k1link-serve-launchd.log` как исторический файл.
|
||||
|
||||
| Служба | Предыдущий plist SHA-256 | Применённый plist SHA-256 |
|
||||
|---|---|---|
|
||||
| Core | `5d7a58122c016f8021fede27d1b21891ee20238fc38c281e5b33574ff8204e3f` | `182a87853bc363555edea6af5911c288ec2e83e45354ba2e22a4090d50064486` |
|
||||
| Observatory tunnel | `db1df305e9ca135218e782b57e59a0ebb354c5267fdfe8a2379a1f4bc1a82880` | `1449901c566f576ca7a21accc60d12012c4f0a1c5d7f380c72e7b9210297b31b` |
|
||||
| Gaussian tunnel | `88d5672b1a3620e68e0d622e00ebc22ee04aba5d774ed92dd84ed580d9ce3fad` | `3ac365e2cd173283d30c85dac38585440849e47ebbe9cd6b153778095adf6b80` |
|
||||
|
||||
Проверки: 16 focused launchd/tunnel tests прошли. Core health вернул
|
||||
`ok=true`, `status=ok`, `service=mission-core-control-plane`, `operational=true`.
|
||||
Единственный Python listener — 127.0.0.1:8000; на8765 слушателя нет.
|
||||
Оба прежних SSH-туннеля имеют устойчивые launchd PID. Каталог AI-полигона
|
||||
подтвердил `runtime.available=true`, активных заездов нет.
|
||||
|
||||
С задачей «Mission Core - PC - SINHRON» согласован один владелец запуска:
|
||||
эта задача восстанавливает службы, соседняя не выполняет параллельных рестартов.
|
||||
Готовность передана туда после health/worker проверки. Повторный reboot-drill
|
||||
не проводился; подтверждён именно текущий штатный запуск после исправления.
|
||||
@@ -151,3 +151,21 @@ and PGID `42895` produced a new LaunchAgent PID `42942` and exact health in
|
||||
operator-station evidence only. An onboard Linux deployment must express the
|
||||
same contract in its init system and pass its own power-loss, crash, hang and
|
||||
durable-state reconciliation qualification.
|
||||
|
||||
## Startup journals outside Downloads
|
||||
|
||||
Launch-time stdout/stderr now live in
|
||||
`~/Library/Logs/NODE.DC/MissionCore/k1link-serve-launchd.log`.
|
||||
The application's own evidence and watchdog journals remain in their configured
|
||||
private data directory. launchd/xpcproxy opens stdout before application folder
|
||||
permissions apply; putting this startup journal in a Downloads checkout caused
|
||||
EX_CONFIG/78 after the 22 September restart. Do not broaden privacy permissions
|
||||
or start a duplicate backend to mask this failure.
|
||||
|
||||
The normal hash-bound Core plan/apply prepares this private log. For the two
|
||||
existing Worker SSH declarations, use `scripts/migrate_worker_tunnel_logs.py`
|
||||
`plan observatory` / `plan gaussian`, review hashes, then `apply` with the two
|
||||
`--expected-…-sha256` arguments. The migration changes only stdout/stderr paths,
|
||||
preserves every SSH option, retains a backup and checks a stable exact PID.
|
||||
Confirm Worker registration in the Core catalog after tunnel recovery.
|
||||
See `docs/audits/2026-09-22-core-launch-recovery.md` for the observed incident.
|
||||
|
||||
Reference in New Issue
Block a user