47 lines
3.5 KiB
Markdown
47 lines
3.5 KiB
Markdown
# 07 — Требования к инфраструктуре
|
||
|
||
**Work Item:** ORCH-044
|
||
**Основано на:** ADR-001, ТЗ `02-trz.md`
|
||
|
||
## Топология
|
||
**Без изменений.** Новых контейнеров, портов, сервисов, очередей не вводится. Прод
|
||
`orchestrator` (8500) и staging `orchestrator-staging` (8501) остаются как есть
|
||
(`docs/operations/INFRA.md`).
|
||
|
||
## Учётные данные claude (P1)
|
||
- Launcher спавнит claude с `HOME=/home/slin` (`src/agents/launcher.py`). Preflight ДОЛЖЕН
|
||
резолвить путь к credentials от **этого же** HOME, а не от окружения процесса оркестратора.
|
||
- Ожидаемое расположение файла OAuth-токена: **`/home/slin/.claude/.credentials.json`**
|
||
(структура: `claudeAiOauth.expiresAt` — epoch **ms**).
|
||
- Файл — секрет; в гит НЕ коммитится (правило агентов №8). На хосте монтируется в контейнер
|
||
как раньше; задача его расположение **не меняет**, только начинает читать.
|
||
- ⚠️ **Проверить на staging:** реальный путь файла внутри контейнера совпадает с
|
||
резолвленным preflight. Несовпадение ⇒ ложный auth-fail и блок очереди (R-1).
|
||
|
||
## Новые переменные окружения (env-карта)
|
||
Документировать в `docs/operations/INFRA.md` и docstring `src/config.py`:
|
||
|
||
| Env | Default | Назначение |
|
||
|-----|---------|------------|
|
||
| `ORCH_PREFLIGHT_CHECK_AUTH` | `true` | Включение token-free auth-проверки в preflight. Аварийный тумблер: `false` возвращает старое поведение (только bin + `--version`). |
|
||
| `ORCH_CLAUDE_CREDENTIALS_PATH` | `""` | Явный путь к `.credentials.json`. Пусто ⇒ `<AGENT_HOME>/.claude/.credentials.json`. |
|
||
| `ORCH_AUTH_EXPIRY_SKEW_SECONDS` | `0` | Запас на рассинхрон часов при сравнении `expiresAt`. |
|
||
|
||
`--effort` env (`ORCH_AGENT_EFFORT_*`) — **вне scope**; прод-хотфикс `ORCH_AGENT_EFFORT_*=""`
|
||
в `.env` **оставить как есть** (ORCH-50).
|
||
|
||
## Эксплуатационные процедуры
|
||
- **Аварийный откат auth-гейта без редеплоя кода:** выставить `ORCH_PREFLIGHT_CHECK_AUTH=false`
|
||
в `.env` и перезапустить воркер обычной процедурой выката (НЕ в рамках этой задачи).
|
||
- **Диагностика:** auth-причина видна в `GET /queue` (`preflight_reason`) и в warning-логе
|
||
`orchestrator.preflight`.
|
||
- **Re-login:** при детекте auth-маркера в логе launcher сбрасывает preflight-кеш, поэтому
|
||
после ручного `claude /login` следующий тик воркера (≤ `preflight_cache_ttl`) подхватит
|
||
валидную сессию автоматически.
|
||
|
||
## Self-hosting / деплой (AC-17)
|
||
- Изменения только в слое preflight/launch — **не** требуют рестарта/падения прод-контейнера
|
||
в рамках задачи.
|
||
- Выкатка self-доработки ORCH — **через staging-гейт (8501)** перед прод-деплоем
|
||
(CLAUDE.md, `docs/operations/INFRA.md`, ADR-0003).
|