work_item: ORCH-040 description: > Инфра-фикс: контейнер/агенты не плодят root-файлы в хостовом репо. Часть проверок автоматизируема через pytest (валидация compose-конфига), часть — обязательные ops/integration проверки на staging и хосте (manual), т.к. касаются прав файловой системы хоста и рантайма docker. tests: # --- Автоматизируемые (pytest, парсинг docker-compose.yml) --- - id: TC-01 type: unit description: > docker-compose.yml: оба сервиса (orchestrator, orchestrator-staging) имеют user: "1000:1000" (при выборе Варианта 1). module: tests/test_orch040_compose.py expected: PASS - id: TC-02 type: unit description: > docker-compose.yml: оба сервиса сохраняют group_add со значением "999" (доступ к docker.sock не потерян — МИНА 1). module: tests/test_orch040_compose.py expected: PASS - id: TC-03 type: unit description: > docker-compose.yml: SSH-маунт согласован с HOME агента — target каталога .ssh лежит под /home/slin (а не /root/.ssh), для обоих сервисов. module: tests/test_orch040_compose.py expected: PASS - id: TC-04 type: unit description: > launcher: HOME, форсимый в окружении агента и git_env, указывает на каталог, совместимый с SSH/claude-маунтами (/home/slin) — нет рассинхрона HOME vs uid. module: tests/test_orch040_compose.py expected: PASS # --- Регресс существующего поведения --- - id: TC-05 type: unit description: > Весь существующий набор тестов зелёный (нет регресса логики конвейера/launcher). module: tests/ # pytest tests/ -q expected: PASS # --- Integration / ops (staging 8501, затем хост) --- - id: TC-06 type: integration description: > На staging (8501) прогнать тестовую задачу конвейером end-to-end; артефакты worktree и docs создаются под 1000:1000 (НЕ root:root). Проверка AC-1. module: scripts/staging_check.py # + ls -ld на хосте expected: PASS - id: TC-07 type: integration description: > После staging-прогона на хосте под slin: git -C /home/slin/repos/orchestrator pull/status/reset без Permission denied. Проверка AC-2. module: manual/host-check expected: PASS - id: TC-08 type: integration description: > claude preflight/auth проходит под новым uid: агент стартует и завершается exit_code=0 (creds /home/slin/.claude читаются). Проверка AC-3 (МИНА 2). module: manual/staging-agent-run expected: PASS - id: TC-09 type: integration description: > docker.sock доступен из контейнера под uid 1000 (docker ps работает) и ssh-деплой-хук выполняется. Проверка AC-4, AC-5 (МИНА 1 + SSH). module: manual/staging-deploy-path expected: PASS