Перейти к основному содержимому

Сценарий 10: межрепозиторное влияние

Проверка зависимостей, дублирования и рисков консолидации между репозиториями без подмены анализа архитектурным решением.

Руководства

Используйте этот сценарий, если изменение в одном репозитории может затронуть код, зависимости или похожие реализации в других. Результат — общий набор свидетельств для ревью, а не разрешение на изменение архитектуры или выпуск.

Когда применять

Сценарий подходит для ограниченного рабочего каталога с несколькими репозиториями и одним конкретным вопросом:

  • какие репозитории вызывают или дублируют изменяемый интерфейс;
  • где общая зависимость создаёт цикл или сильную связанность;
  • какие кандидаты на консолидацию требуют ручной проверки.

Для структуры внутри одного репозитория используйте сценарий 11, для массовой миграции кода — сценарий 13.

Предварительные условия и область

Нужны принятая задача на ревью, актуальный CPG проекта и доверенный процесс CodeGraph, рабочим каталогом которого служит нужная группа репозиториев. До запуска зафиксируйте список репозиториев и ревизию каждого из них.

Внутренний workflow читает user_context.workspace_path, а при отсутствии значения использует .. Текущий ролевой адаптер не публикует это внутреннее поле как пользовательский выбор пути. Поэтому запускайте сервер из ограниченного рабочего каталога, а не из родительской папки с посторонними проектами.

Побочный эффект индексации: workflow находит репозитории и вызывает index_repository_cpg для каждого результата. Это может обновить CPG активного проекта. Рассматривайте запуск как управляемую индексацию, а не как запрос только для чтения.

Запуск типизированного сценария

from src.digital_employees.runtime.scenarios import (
    RoleBoundScenarioInvocationRequest,
    invoke_role_bound_scenario_request,
)

request = RoleBoundScenarioInvocationRequest(
    query="Найди межрепозиторные зависимости, затронутые изменением BillingClient.",
    employee_id="codegraph_reviewer",
    scenario_id="scenario_10",
    event_type="review_start",
    context={
        "project_key": "codegraph",
        "namespace": "default",
        "task_id": "<task-id>",
        "source_refs": ["<revision-manifest-ref>"],
        "file_paths": ["<bounded-source-path>"],
    },
)
result = invoke_role_bound_scenario_request(request)

Отдельной поддерживаемой публичной CLI-команды для сценария 10 нет. Не подменяйте ролевой вызов общим запросом: иначе потеряются сотрудник, событие и свидетельство привязки к задаче.

Как читать результат

Сохраните вместе с результатом:

  • answer — сводное объяснение;
  • evidence — сведения о зависимостях, дубликатах и циклах;
  • metadata.role_bound_scenario_invocation — сотрудника, событие, workflow и результат preflight;
  • исходный список репозиториев и их ревизии.

Проверяйте важные утверждения в названном репозитории и ревизии. Сходство или зависимость создают повод для ревью; взаимозаменяемость двух реализаций подтверждается сравнением и решением владельца.

Границы безопасности и полномочий

Запуск может обновить CPG, но не редактирует репозитории, не одобряет консолидацию, не сливает изменения и не разрешает выпуск. Ответственный рецензент отдельно проверяет владельцев, совместимость, лицензии, безопасность, тесты и откат.

Не направляйте runtime на недоверенный или слишком широкий каталог. Поиск репозиториев следует границе рабочего каталога и может захватить проекты вне задачи.

Ошибки и восстановление

  • Репозитории не найдены: проверьте рабочий каталог сервера и список ревизий.
  • Результаты устарели или смешались: обновите только нужные репозитории и повторите анализ на тех же ревизиях.
  • Ошибка handler или CPG: считайте частичный или резервный ответ гипотезой и зафиксируйте недоступный источник.
  • Проиндексированы посторонние репозитории: остановитесь, сохраните журнал, исправьте границу и оцените попадание чужого кода в активный CPG.

Контракт с исходным кодом

Статья привязана к следующим источникам:

  • src/workflow/scenarios/domain_checks/cross_repo.py — поиск, индексация, анализ и evidence;
  • src/workflow/scenarios/cross_repo_handlers/workflow.py — специализированные handlers;
  • src/digital_employees/runtime/scenarios/role_bound_scenario_invoker.py — типизированная маршрутизация;
  • src/digital_employees/runtime/scenarios/employee_scenario_invocation.py — владелец-рецензент и политика события.

После изменения этих контрактов статью нужно проверить до публикации.

Связанные материалы