diff --git a/docs/work-items/ORCH-040/01-brd.md b/docs/work-items/ORCH-040/01-brd.md index 22aeafd..59453d4 100644 --- a/docs/work-items/ORCH-040/01-brd.md +++ b/docs/work-items/ORCH-040/01-brd.md @@ -91,3 +91,16 @@ docker.sock. Любой рестарт контейнера под новым ui - Хост-каталоги `/app/data` и `/repos` уже `1000:1000` (запись под uid 1000 пройдёт). - Dockerfile уже содержит `git config --system --add safe.directory '*'`. - Окно тишины для рестарта контейнера согласуется с Owner. + +## 8. Host-prerequisites (предусловия на стороне Owner) +Часть фикса невозможно закрыть только кодом — есть действия на хосте mva154, +которые выполняет Owner (в гит не коммитятся, фиксируются в ADR/INFRA). Это +обязательные предусловия Варианта 1; без них переход на uid 1000 ломает конвейер: +- **P-1 (блокер, МИНА 2):** обеспечить чтение `/home/slin/.claude/.credentials.json` + под uid 1000 (рекомендация — `chown -R 1000:1000 /home/slin/.claude`). Способ + выбирает ADR; анализ фиксирует факт предусловия. +- **P-2:** ssh-ключи (`/home/slin/.orchestrator-ssh`) читаемы uid 1000. +- **P-3:** подтверждение `slin = uid 1000 gid 1000` (подтверждено разведкой). +- **P-4:** рестарт прод-self только в окно тишины (`GET /status` без активных задач). + +Детализация и команды — в `02-trz.md` §10. diff --git a/docs/work-items/ORCH-040/02-trz.md b/docs/work-items/ORCH-040/02-trz.md index 8e1082a..1b19481 100644 --- a/docs/work-items/ORCH-040/02-trz.md +++ b/docs/work-items/ORCH-040/02-trz.md @@ -84,3 +84,29 @@ claude-auth, git, ssh-деплоя и docker.sock. 2. Применить и проверить на **staging (8501)** end-to-end. 3. Прод-рестарт контейнера под новым uid — только в окно тишины (нет активных задач). 4. Регресс на хосте: новые tracked-артефакты `1000:1000`, `git pull` под slin без ошибок. + +## 10. Зависимости и host-prerequisites (действия на хосте, вне кода) + +Эти пункты — предусловия для Варианта 1; их выполняет Owner на хосте mva154 (в гит +не коммитятся, но фиксируются в ADR/INFRA как обязательная процедура). Без них +переход контейнера на uid 1000 ломает конвейер (МИНА 2 — блокер). + +| # | Предусловие | Команда / проверка | Зачем | +|---|-------------|--------------------|-------| +| P-1 | Доступ uid 1000 к claude creds | `chown -R 1000:1000 /home/slin/.claude` (вкл. `.credentials.json`); проверка `sudo -u '#1000' test -r /home/slin/.claude/.credentials.json` | МИНА 2: без доступа preflight ORCH-044 завернёт весь конвейер | +| P-2 | SSH-ключи в HOME нового uid и читаемы | ключи в `/home/slin/.orchestrator-ssh` читаемы uid 1000; маунт ведёт в `/home/slin/.ssh` (см. §4.1) | деплой по ssh (DEPLOY_SSH_*) | +| P-3 | Подтверждение uid:gid рантайма | `id slin` → `uid=1000 gid=1000`; `/repos` и `/app/data` уже `1000:1000` (подтверждено разведкой) | целевые файлы создаются под slin | +| P-4 | Окно тишины для рестарта self | `GET /status` → нет активных задач перед рестартом прод-контейнера | self-hosting: общий инстанс с enduro-trails | + +> **Открытый выбор для ADR (не решается анализом):** способ обеспечения P-1 — +> `chown` creds (рекомендация разведки) vs. ослабление read-прав vs. отказ от +> Варианта 1 в пользу Варианта 3 (chown-хук). Анализ фиксирует P-1 как +> обязательное предусловие при любом из вариантов 1/2; для Варианта 3 — неактуально. + +## 11. Подтверждённые факты текущего рантайма (anchor для Dev) +Сверено с веткой `feature/ORCH-040-root-git` на 06.06: +- `docker-compose.yml`: оба сервиса имеют `group_add: ["999"]` (МИНА 1 — НЕ удалять); + SSH-маунт обоих = `/home/slin/.orchestrator-ssh:/root/.ssh:ro` (требует правки target); + claude-маунты = `/home/slin/.claude` и `/home/slin/.claude.json:ro`. +- `src/agents/launcher.py`: `HOME="/home/slin"` форсится в env Popen (стр. 326) и в + git_env (стр. 513); `CLAUDE_BIN="/opt/claude-code/bin/claude.exe"` (стр. 187). diff --git a/docs/work-items/ORCH-040/03-acceptance-criteria.md b/docs/work-items/ORCH-040/03-acceptance-criteria.md index ffa72dc..e9a7a50 100644 --- a/docs/work-items/ORCH-040/03-acceptance-criteria.md +++ b/docs/work-items/ORCH-040/03-acceptance-criteria.md @@ -53,3 +53,10 @@ Work Item: **ORCH-040** - **PASS**: рестарт self выполнен без активных задач; конвейер enduro-trails не пострадал. - **FAIL**: рестарт во время активных задач / падение прод-инстанса. + +## AC-10 — Host-prerequisites зафиксированы и выполнены +- **PASS**: предусловия P-1…P-4 (TRZ §10 / BRD §8) описаны в ADR/INFRA как + обязательная процедура Owner; P-1 (доступ uid 1000 к claude creds) фактически + обеспечен — подтверждается прохождением AC-3. +- **FAIL**: фикс применён без обеспечения доступа к creds (P-1) → preflight/конвейер + падает; либо предусловия нигде не задокументированы.