Что работает внутри.

Один процесс ревью, явные границы ответственности.

Схема служб

Размещение и границы доверия

Логические роли, не принятая сетевая конфигурация. Публикуются только защищенные точки входа. У баз служб и ContextForge отдельные владельцы.
Маршруты и исходник Mermaid
  • Команда → Кабинет: HTTPS.
  • Кабинет → Identity: Авторизация.
  • Identity → OIDC / Keycloak: OIDC.
  • MCP-клиенты → ContextForge: MCP.
  • ContextForge → Получатель read: Разрешенный read.
  • Получатель read → Identity: Актуальные права.
  • Identity → Приватные службы: Область организации.
  • ContextForge → PostgreSQL ContextForge: Своя база.
  • Приватные службы → PostgreSQL служб: Свои базы.
flowchart LR
  team["Команда / Браузер"]
  bff["Кабинет / Защищенный вход"]
  identity["Identity / Организация и роли"]
  oidc["OIDC / Keycloak / Корпоративный вход"]
  agents["MCP-клиенты / Разрешенные инструменты"]
  cf["ContextForge / Шлюз и согласие"]
  receiver["Получатель read / Проверка доступа"]
  roles["Приватные службы / Control / Worker / Context"]
  cfpg["PostgreSQL ContextForge / Отдельный владелец"]
  pg["PostgreSQL служб / Отдельные БД и роли"]
  team -->|HTTPS| bff
  bff -->|Авторизация| identity
  identity -->|OIDC| oidc
  agents -->|MCP| cf
  cf -->|Разрешенный read| receiver
  receiver -->|Актуальные права| identity
  identity -->|Область организации| roles
  cf -->|Своя база| cfpg
  roles -->|Свои базы| pg

Куда идет выбранный контекст

Выбранный diff и разрешенный контекст задачи поступают выбранной модели. Внешний API или CLI остается внешним получателем. Credentials хранятся у своей службы.
Маршруты и исходник Mermaid
  • Ваш GitLab → Connector: Разрешенное чтение.
  • Connector → Context: Точная версия.
  • Context → Worker / PR-Agent: Выбранный контекст.
  • Worker / PR-Agent → Согласованная модель: Согласованные данные.
  • Worker / PR-Agent → Control: Черновик замечаний.
  • Control → Connector: Действия по политике.
  • Control → PostgreSQL служб: Сохраненная история.
flowchart LR
  gitlab["Ваш GitLab / MR / исходники / CI"]
  connector["Connector / Credentials GitLab"]
  context["Context / Выбранные исходники"]
  worker["Worker / PR-Agent / Контекст ревью"]
  model["Согласованная модель / API или официальный CLI"]
  control["Control / Очередь и отчеты"]
  pg["PostgreSQL служб / История и владельцы"]
  gitlab -->|Разрешенное чтение| connector
  connector -->|Точная версия| context
  context -->|Выбранный контекст| worker
  worker -->|Согласованные данные| model
  worker -->|Черновик замечаний| control
  control -->|Действия по политике| connector
  control -->|Сохраненная история| pg

От изменения к решению команды

Новый SHA получает отдельное ревью. Замечания, CI и критерии задачи рассматриваются отдельно. Ответ модели не означает публикацию, approve или merge.
Маршруты и исходник Mermaid
  • Измененный MR → Подготовка контекста: Выбрать.
  • Подготовка контекста → Черновик замечаний: Ревью.
  • Черновик замечаний → Команда правит код: Рассмотреть.
  • Команда правит код → Повторное ревью: Проверить заново.
  • Повторное ревью → CI и критерии: Сверить доказательства.
  • CI и критерии → Решение команды: Принять решение.
flowchart LR
  change["Измененный MR / Актуальный SHA"]
  prepare["Подготовка контекста / Diff / задача / правила"]
  draft["Черновик замечаний / Основание и исправление"]
  fix["Команда правит код / Новый SHA"]
  recheck["Повторное ревью / Актуальные исходники"]
  ci["CI и критерии / Отдельные доказательства"]
  decision["Решение команды / Политика и права"]
  change -->|Выбрать| prepare
  prepare -->|Ревью| draft
  draft -->|Рассмотреть| fix
  fix -->|Проверить заново| recheck
  recheck -->|Сверить доказательства| ci
  ci -->|Принять решение| decision

Кто за что отвечает

СлужбаОтветственность
IdentityПользователи, tenant, роли, OIDC и авторизация.
ControlОчередь, актуальный SHA, правила, журнал решений и публикация по политике.
ConnectorЕдинственный путь чтения и записи GitLab, включая CI.
Worker / PR-AgentВызов выбранной модели и черновик findings. Нет самостоятельного publisher.
ContextВыбранные исходники и контекст задачи в разрешенной области.
ContextForgeОбщий MCP gateway. Собственная авторизация и отдельный отзыв доступа.

Данные не смешиваются в общей таблице

PostgreSQL обязателен. У служб свои базы, учетные записи и версии миграций; у ContextForge отдельный обычный владелец. Tenant определяется доверенной авторизацией, а не полем из запроса. Модельные credentials принадлежат конкретной организации и профилю. Общий MCP gateway не дает агенту глобальные права.

Что открыть в сети

Опубликуйте только защищенный ingress кабинета и согласованные MCP endpoints. API служб остаются приватными. Разрешите исходящие соединения к утвержденным GitLab, OIDC и модели. Docker bridge дает связность, но не фильтрует все исходящие запросы. Firewall, корпоративная CA и проверка имен серверов входят в план внедрения.