Files
orchestrator/docs/architecture/adr/adr-0001-multi-repo-registry.md
Dev Agent 7c68d1d812
All checks were successful
CI / test (pull_request) Successful in 9s
docs(orchestrator): adopt enduro doc canon + CLAUDE.md + ADR (ORCH-9)
2026-06-05 12:33:55 +03:00

1.8 KiB
Raw Blame History

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_idrepo + 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 из реестра).