Используйте этот сценарий, если изменение в одном репозитории может затронуть код, зависимости или похожие реализации в других. Результат — общий набор свидетельств для ревью, а не разрешение на изменение архитектуры или выпуск.
Когда применять
Сценарий подходит для ограниченного рабочего каталога с несколькими репозиториями и одним конкретным вопросом:
- какие репозитории вызывают или дублируют изменяемый интерфейс;
- где общая зависимость создаёт цикл или сильную связанность;
- какие кандидаты на консолидацию требуют ручной проверки.
Для структуры внутри одного репозитория используйте сценарий 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— владелец-рецензент и политика события.
После изменения этих контрактов статью нужно проверить до публикации.