1.8 KiB
1.8 KiB
adr-0001: Реестр проектов (multi-repo)
- Статус: accepted
- Дата: 2026-06-02
- Задача: ORCH-6
Контекст
Инцидент 2026-06-02: Plane-вебхук слушал весь воркспейс и хардкодил repo = settings.default_repo (enduro-trails). Задачи ЛЮБОГО проекта сливались в один репо с одним префиксом (ET). Нужна изоляция по проектам.
Решение
Введён реестр src/projects.py: ProjectConfig (frozen dataclass) связывает plane_project_id → repo + work_item_prefix + name. Источник правды — env ORCH_PROJECTS_JSON; при пустом/невалидном — встроенный дефолт (enduro-trails/ET, orchestrator/ORCH). Позволяет: фильтровать вебхуки по проекту (неизвестный → ignore), резолвить gitea-репо + префикс, роутить Plane-синк в свой проект задачи.
Альтернативы
- Один репо на всё — отклонён (источник инцидента).
- Хардкод маппинга в коде — отклонён в пользу env-конфигурируемого реестра с безопасным дефолтом.
Последствия
- Изоляция проектов на уровне вебхуков и роутинга.
- Парсер устойчив: битый элемент скипается, пустой результат → дефолт.
- Основа для
is_self_hosting_repo(adr-0003).
Связи
adr-0003 (условный гейт опирается на repo из реестра).