122 lines
11 KiB
XML
122 lines
11 KiB
XML
<GITEA_ISSUE_DRIVEN_PROTOCOL>
|
||
<META>
|
||
<PURPOSE>Определить единый, отказоустойчивый и полностью автоматизированный протокол для межагентной коммуникации, постановки задач и управления жизненным циклом кода. Gitea служит центральной коммуникационной шиной и системой контроля версий. Взаимодействие с Gitea осуществляется через утилиту командной строки 'gitea-client.zsh'.</PURPOSE>
|
||
<VERSION>3.1</VERSION>
|
||
</META>
|
||
|
||
<CORE_PRINCIPLES>
|
||
<PRINCIPLE name="Gitea_As_The_System_Bus">
|
||
<DESCRIPTION>Gitea Issues и Pull Requests являются единственным каналом для асинхронной коммуникации между AI-агентами. Взаимодействие происходит через 'gitea-client.zsh'.</DESCRIPTION>
|
||
</PRINCIPLE>
|
||
<PRINCIPLE name="Human_Out_Of_The_Loop">
|
||
<DESCRIPTION>Человек взаимодействует с системой исключительно через диалог с Агентом-Архитектором. Gitea используется как "закулисный" механизм, и человек не должен создавать, комментировать или назначать Issues вручную.</DESCRIPTION>
|
||
</PRINCIPLE>
|
||
<PRINCIPLE name="Pull_Request_As_The_Unit_Of_Work">
|
||
<DESCRIPTION>Конечным продуктом работы Агента-Разработчика является не просто ветка с кодом, а формальный Pull Request (PR). Именно PR является объектом верификации для QA-Агента и точкой слияния в основную ветку.</DESCRIPTION>
|
||
</PRINCIPLE>
|
||
<PRINCIPLE name="Traceability_Is_Paramount">
|
||
<DESCRIPTION>Каждое действие в системе должно быть отслеживаемым. Это достигается за счет неразрывной связи: `GiteaIssue ID` <-> `Имя ветки` <-> `Pull Request ID`.</DESCRIPTION>
|
||
</PRINCIPLE>
|
||
<PRINCIPLE name="Initial_Check">
|
||
<DESCRIPTION>Перед началом работы агент должен убедиться, что он аутентифицирован под своей ролью, используя `gitea-client.zsh <ROLE> whoami` или аналогичную команду.</DESCRIPTION>
|
||
</PRINCIPLE>
|
||
</CORE_PRINCIPLES>
|
||
|
||
<CLI_COMMANDS name="gitea-client.zsh">
|
||
<COMMAND name="create-task">
|
||
<SYNTAX>`./gitea-client.zsh {role} create-task --title "{title}" --body "{body}" --assignee "{assignee}" --labels "{labels}"`</SYNTAX>
|
||
<DESCRIPTION>Создает новую задачу (Issue) в Gitea.</DESCRIPTION>
|
||
</COMMAND>
|
||
<COMMAND name="find-tasks">
|
||
<SYNTAX>`./gitea-client.zsh {role} find-tasks --type "{type_label}"`</SYNTAX>
|
||
<DESCRIPTION>Ищет открытые задачи с меткой `status::pending` и указанным типом.</DESCRIPTION>
|
||
</COMMAND>
|
||
<COMMAND name="update-task-status">
|
||
<SYNTAX>`./gitea-client.zsh {role} update-task-status --issue-id {id} --old "{old_status}" --new "{new_status}"`</SYNTAX>
|
||
<DESCRIPTION>Изменяет статус задачи путем замены меток.</DESCRIPTION>
|
||
</COMMAND>
|
||
<COMMAND name="create-pr">
|
||
<SYNTAX>`./gitea-client.zsh {role} create-pr --title "{title}" --body "{body}" --head "{branch_name}"`</SYNTAX>
|
||
<DESCRIPTION>Создает Pull Request.</DESCRIPTION>
|
||
</COMMAND>
|
||
<COMMAND name="merge-and-complete">
|
||
<SYNTAX>`./gitea-client.zsh {role} merge-and-complete --issue-id {id} --pr-id {pr_id} --branch "{branch_name}"`</SYNTAX>
|
||
<DESCRIPTION>Атомарная операция: сливает PR, удаляет ветку и закрывает связанную задачу.</DESCRIPTION>
|
||
</COMMAND>
|
||
<COMMAND name="return-to-dev">
|
||
<SYNTAX>`./gitea-client.zsh {role} return-to-dev --issue-id {id} --pr-id {pr_id} --report "{report_body}"`</SYNTAX>
|
||
<DESCRIPTION>Атомарная операция: отклоняет PR, добавляет отчет о дефектах в задачу и возвращает ее разработчику.</DESCRIPTION>
|
||
</COMMAND>
|
||
</CLI_COMMANDS>
|
||
|
||
<SYSTEM_SPECIFICATIONS>
|
||
<SPECIFICATION name="Label_Taxonomy">
|
||
<DESCRIPTION>Строгая система меток для управления статусом и типом задач.</DESCRIPTION>
|
||
<SCHEMA>
|
||
<CATEGORY prefix="status::">
|
||
<LABEL name="status::pending">Задача ожидает исполнителя.</LABEL>
|
||
<LABEL name="status::in-progress">Задача в работе.</LABEL>
|
||
<LABEL name="status::completed">Задача успешно выполнена и закрыта.</LABEL>
|
||
<LABEL name="status::failed">Выполнение провалено, задача возвращена на доработку.</LABEL>
|
||
</CATEGORY>
|
||
<CATEGORY prefix="type::">
|
||
<LABEL name="type::development">Задача для Агента-Разработчика.</LABEL>
|
||
<LABEL name="type::quality-assurance">Задача для QA-Агента.</LABEL>
|
||
<LABEL name="type::documentation">Задача для Агента Документации.</LABEL>
|
||
<LABEL name="type::linting">Задача для Агента Семантической Разметки.</LABEL>
|
||
</CATEGORY>
|
||
</SCHEMA>
|
||
</SPECIFICATION>
|
||
<SPECIFICATION name="Branch_Naming_Convention">
|
||
<DESCRIPTION>Единый формат для всех веток, создаваемых AI-агентами.</DESCRIPTION>
|
||
<TEMPLATE>`{type}/{issue-id}/{kebab-case-description}`</TEMPLATE>
|
||
<COMPONENTS>
|
||
<COMPONENT name="type">'feature' для новой разработки, 'fix' для исправлений, 'chore' для технических задач.</COMPONENT>
|
||
<COMPONENT name="issue-id">Номер Gitea Issue, инициировавшего создание ветки.</COMPONENT>
|
||
<COMPONENT name="kebab-case-description">Машиночитаемый заголовок Issue.</COMPONENT>
|
||
</COMPONENTS>
|
||
<EXAMPLE>`feature/123/implement-user-authentication-flow`</EXAMPLE>
|
||
</SPECIFICATION>
|
||
</SYSTEM_SPECIFICATIONS>
|
||
|
||
<MASTER_WORKFLOW name="Automated_Feature_Lifecycle">
|
||
<STEP id="1" name="Initiation (Human <-> Architect)">
|
||
<ACTION>Человек в диалоге ставит цель Архитектору. Архитектор проводит анализ, предлагает план и получает вербальное одобрение "Выполняй".</ACTION>
|
||
</STEP>
|
||
|
||
<STEP id="2" name="Chain_Genesis (Architect -> Gitea -> Developer)">
|
||
<ACTION>Архитектор создает **первое Issue** в Gitea.</ACTION>
|
||
<CLI_CALL>`./gitea-client.zsh agent-architect create-task --title "[ARCHITECT -> DEV] {Feature Summary}" --body "{XML Work Orders}" --assignee "agent-developer" --labels "status::pending,type::development"`</CLI_CALL>
|
||
</STEP>
|
||
|
||
<STEP id="3" name="Development_And_PR_Creation (Developer)">
|
||
<ACTION>1. Разработчик находит Issue, выполнив `./gitea-client.zsh agent-developer find-tasks --type "type::development"`.</ACTION>
|
||
<ACTION>2. Меняет его статус на `status::in-progress`.</ACTION>
|
||
<CLI_CALL>`./gitea-client.zsh agent-developer update-task-status --issue-id {issue-id} --old "status::pending" --new "status::in-progress"`</CLI_CALL>
|
||
<ACTION>3. Создает ветку согласно **Branch Naming Convention**.</ACTION>
|
||
<ACTION>4. Реализует код, коммитит его, проверяет сборку (`./gradlew build`).</ACTION>
|
||
<ACTION>5. Создает **Pull Request** в Gitea.</ACTION>
|
||
<CLI_CALL>`./gitea-client.zsh agent-developer create-pr --title "PR for Issue #{issue-id}: {Feature Summary}" --body "Fixes #{issue-id}" --head "{branch_name}"`</CLI_CALL>
|
||
<ACTION>6. Создает **новое Issue** для QA-Агента.</ACTION>
|
||
<CLI_CALL>`./gitea-client.zsh agent-developer create-task --title "[DEV -> QA] Verify & Merge PR #{pr-id}" --body "<PULL_REQUEST_ID>{pr-id}</PULL_REQUEST_ID>" --assignee "agent-qa" --labels "status::pending,type::quality-assurance"`</CLI_CALL>
|
||
<ACTION>7. Закрывает **свой** Issue (этот шаг теперь является частью `merge-and-complete` у QA-агента, но может быть и отдельным действием, если требуется).</ACTION>
|
||
</STEP>
|
||
|
||
<STEP id="4" name="Verification_And_Merge (QA Agent)">
|
||
<ACTION>1. QA-Агент находит Issue, выполнив `./gitea-client.zsh agent-qa find-tasks --type "type::quality-assurance"`.</ACTION>
|
||
<ACTION>2. Меняет статус на `status::in-progress`.</ACTION>
|
||
<CLI_CALL>`./gitea-client.zsh agent-qa update-task-status --issue-id {issue-id} --old "status::pending" --new "status::in-progress"`</CLI_CALL>
|
||
<ACTION>3. Извлекает `PULL_REQUEST_ID` и проводит полный аудит кода в PR.</ACTION>
|
||
<ACTION>4. **ЕСЛИ УСПЕШНО:**</ACTION>
|
||
<SUCCESS_PATH>
|
||
<SUB_STEP>a. Выполняет атомарную операцию слияния, удаления ветки и закрытия задачи.</SUB_STEP>
|
||
<CLI_CALL>`./gitea-client.zsh agent-qa merge-and-complete --issue-id {issue-id} --pr-id {pr-id} --branch "{branch_name}"`</CLI_CALL>
|
||
</SUCCESS_PATH>
|
||
<ACTION>5. **ЕСЛИ ПРОВАЛ:**</ACTION>
|
||
<FAILURE_PATH>
|
||
<SUB_STEP>a. Выполняет атомарную операцию отклонения PR и возврата задачи разработчику.</SUB_STEP>
|
||
<CLI_CALL>`./gitea-client.zsh agent-qa return-to-dev --issue-id {issue-id} --pr-id {pr-id} --report "{defect_report}"`</CLI_CALL>
|
||
</FAILURE_PATH>
|
||
</STEP>
|
||
</MASTER_WORKFLOW>
|
||
</GITEA_ISSUE_DRIVEN_PROTOCOL> |