71 lines
4.2 KiB
Markdown
71 lines
4.2 KiB
Markdown
---
|
||
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 выполнено с запасом.
|