reviewer(ET): auto-commit from reviewer run_id=178
All checks were successful
CI / test (push) Successful in 13s
CI / test (pull_request) Successful in 13s

This commit is contained in:
2026-06-06 15:05:26 +00:00
parent f81715bd39
commit be64761654

View File

@@ -0,0 +1,70 @@
---
type: review
work_item_id: ORCH-040
verdict: APPROVED
version: 1
---
# Review ORCH-040
## Summary
Фикс переводит оба compose-сервиса (`orchestrator`, `orchestrator-staging`) на
`user: "1000:1000"` (Вариант 1 из ADR-001 / adr-0005), чтобы артефакты конвейера
создавались как `slin:slin` и git на хосте работал без ручного `chown`. Реализация
точно соответствует ТЗ и ADR, документация (INFRA.md, CHANGELOG.md, work-item ADR-001,
глобальный adr-0005) обновлена в том же PR, host-prerequisites (P-1…P-4) задокументированы.
Полный прогон `pytest tests/ -q`**501 passed**. Блокеров и must-fix нет.
## Findings
### P0 — Blocker
- нет
### P1 — Must fix
- нет
### P2 — Should fix
- нет
### P3 — Nice to have
- [ ] (опц.) AC-1/2/3/4/5 — это runtime/host-критерии; их фактическое PASS подтверждается
на стадиях `testing` и `deploy-staging` (`15-staging-log.md`, `staging_status:`), а не
ревью кода. Зафиксировано как ожидание к следующим стадиям, не как замечание к PR.
## Проверка по осям
**1. Соответствие ТЗ (02-trz.md §4):**
- §4.1 `docker-compose.yml`: оба сервиса получили `user: "1000:1000"` ✅; `group_add: ["999"]`
сохранён (МИНА 1 — не удалён) ✅; SSH-маунт target `/root/.ssh``/home/slin/.ssh` ✅;
claude-маунты (`/home/slin/.claude`, `.claude.json:ro`) не тронуты ✅.
- §4.3 `src/agents/launcher.py` не менялся; `HOME=/home/slin` остаётся на стр. 326 и 513
(подтверждено grep) — согласован с новым SSH target ✅.
- §4.4 `Dockerfile` не менялся (numeric uid не требует записи в `/etc/passwd`,
`safe.directory '*'` уже есть) — в полном соответствии с решением ADR ✅.
- §5/§6/§7: изменений API/БД/QG нет — подтверждено ✅.
**2. Соответствие ADR (ADR-001 + global adr-0005):**
- Выбран и реализован Вариант 1 ровно как описано в ADR (compose-only, без нового кода
в launcher и Dockerfile) ✅.
- Host-prerequisites P-1…P-4 из ADR перенесены в INFRA.md как обязательная процедура Owner ✅.
- Нарушений глобальных ADR нет; связи с adr-0003 (staging-гейт как страховка) учтены ✅.
**3. Качество кода:**
- Изменения декларативные, с поясняющими комментариями и ссылкой на ADR ✅.
- Тесты `tests/test_orch040_compose.py` содержательные: проверяют `user`, сохранение
`group_add 999`, SSH target под HOME и согласованность HOME launcher'а с маунтами
(TC-01…TC-04, привязаны к AC) — не тривиальные ✅.
- Регресс отсутствует: `pytest tests/ -q` → 501 passed ✅.
## Документация
Обновлена корректно и в том же PR (golden source соблюдён, AC-8 PASS):
- `docs/operations/INFRA.md` — добавлен блок «Рантайм-uid (ORCH-040)», host-prerequisites,
блок volumes/SSH target приведён к `/home/slin/.ssh` ✅;
- `CHANGELOG.md` — запись в разделе Fixed ✅;
- `docs/work-items/ORCH-040/06-adr/ADR-001-run-agents-as-host-uid.md` — выбор варианта +
обоснование + P-1…P-4 ✅;
- глобальный `docs/architecture/adr/adr-0005-container-runs-as-host-uid.md` (+ запись в
`adr/README.md`) — сквозное решение зафиксировано ✅.
Изменения `src/` Python-кода нет (правка только в `docker-compose.yml` + тесты), но
документация всё равно обновлена — требование §2 CLAUDE.md выполнено с запасом.