--- ## Plane per-agent authorship — ЗАВЕРШЕНО И ПОДТВЕРЖДЕНО (03.06) ### PR #9 `e9fd3052` ЗАМЕРЖЕН + прод пересобран - Код: `config.py` (7 bot-полей), `plane_sync.py` (`PLANE_BOT_TOKENS`, `STAGE_AUTHORS`, `_headers_for(author)` fallback, `add_comment(author=)` POST под токеном бота), точки вызова прокидывают author. GET/PATCH под общим токеном (не тронуты). 166 passed (158+8), 9 baseline. - ⚠️ Config-патч ОБЯЗАТЕЛЕН: образ уже содержит `ORCH_PLANE_BOT_*` env → без полей в config pydantic падает `extra_forbidden`. Прод поднялся → патч сработал. ### 🔑 ГЛАВНЫЙ УРОК: 403 → project_members - Боты были в **workspace_members**, но комментить можно только **project_members**. POST коммента давал **403 Forbidden** (аутентификация ок, прав нет). - Фикс: добавила 7 ботов в `project_members` проекта `7a79f0a9-...` (role 15, member). Бэкап `plane-projmembers-backup-*`. - ⚠️ NOT NULL `member_id` — без него INSERT падал (транзакция откатывалась молча). Правильный INSERT: id, role, **member_id**, project_id, workspace_id, view_props/default_props/preferences='{}', sort_order=65535, is_active, created_at, updated_at. ### ✅ БОЕВАЯ ПРОВЕРКА ПРОЙДЕНА (proof из БД) - Каждый из 7 ботов запостил коммент на живую ET-009 (`64e98247-...`) → **HTTP 201**. - `issue_comments JOIN users ON actor_id` показал авторов: 🧠 Analyst / 🏗️ Architect / 💻 Developer / 🔍 Reviewer / 🧪 Tester / 🚀 Deployer / 🌊 Стрим — НЕ mva154. - Тестовые комменты убраны (soft-delete `deleted_at`, UPDATE 7 → 0 живых). ### ⚠️ ГРАБЛЯ shell/psql (потеряла время — на будущее) - heredoc через `ssh '...'` с вложенными кавычками/скобками в python/SQL — постоянно ломается (глотает вывод, `(` unexpected, кавычки съедаются). - psql `-v var=...` без кавычек = идентификатор (column "font" does not exist). - `scp` в контейнере НЕТ. - **РАБОЧИЙ способ передать скрипт на сервер:** `write` локально → `base64 -w0` → `echo '' | base64 -d > /tmp/x` на сервере → `docker cp` → `psql -f`. Надёжно, без экранирования. ### Plane identity — справочник - БД Plane: контейнер `plane-app-plane-db-1`, user `plane`, пароль = `docker exec plane-app-api-1 printenv POSTGRES_PASSWORD`. - Workspace `ag_proj` = `903e12e8-65c9-40a0-a7f6-0186f8af42d4`. Главный проект enduro = `7a79f0a9-5278-49cd-9007-9a338f238f9c`. - 7 ботов: email `@orch.local`, `is_bot=t`, в workspace_members(role 15) И project_members(role 15). Токены 60-симв в `.env` `ORCH_PLANE_BOT_`. - Автор коммента = `issue_comments.actor_id` = владелец токена. Роли: ANALYST/ARCHITECT/DEVELOPER/REVIEWER/TESTER/DEPLOYER/STREAM. - ⚠️ При создании НОВЫХ проектов в Plane — ботов надо добавлять в project_members нового проекта, иначе 403. (Кандидат на автоматизацию: при ORCH-6 resolve проекта — авто-добавление ботов.) ### ИТОГ дня 03.06 Закрыто: ORCH-1..7, L1L2L3, M-6, Plane per-agent authorship (Вариант A, боты). Всё в проде, проверено вживую. Открыто (НЕ срочно): авто-добавление ботов в project_members при новом проекте.