chore(agent): remover permissoes de commit da IA no projeto e wiki (apenas sugerir texto) e manter push automatico exclusivo no .agent
This commit is contained in:
parent
212d2578f4
commit
26a4f98dab
116 changed files with 1162 additions and 1315 deletions
|
|
@ -1,76 +1,40 @@
|
|||
---
|
||||
type: rule
|
||||
name: proibido-commit-ia
|
||||
description: Condições de commit pela IA (proibido comitar na master na aplicação; deve criar nova branch se em master); na Wiki (../wiki), commit, push e resolução de conflitos são permitidos direto na master
|
||||
description: Proíbe a IA de executar git commit ou git push na aplicação principal e na Wiki (commit exclusivo por humano; IA apenas sugere o texto do commit). Apenas o submódulo .agent pode receber commit/push automático.
|
||||
scope: global
|
||||
trigger: always_on
|
||||
updatedAt: "2026-10-01"
|
||||
updatedAt: "2026-10-14"
|
||||
---
|
||||
|
||||
# Regra: Diretrizes de Versionamento Git — Commit Condicional na Aplicação e Gestão Direta em Master na Wiki
|
||||
# Regra: Diretrizes de Versionamento Git — Commit Exclusivo por Humano (IA Apenas Sugere Texto) e Push Automático Apenas no `.agent`
|
||||
|
||||
## Contexto
|
||||
|
||||
O ecossistema adota uma política de versionamento clara e segura que equilibra agilidade na documentação com proteção do código produtivo:
|
||||
O ecossistema adota uma política de versionamento estrita onde o controle de histórico dos projetos pertence exclusivamente ao operador humano:
|
||||
|
||||
1. **Aplicação Principal (`<base_projeto>`)**: A IA pode comitar alterações, com a salvaguarda estrita e inegociável de **NUNCA comitar diretamente na branch `master` (ou `main`)**. Estando em `master`, a IA deve compulsoriamente criar e alternar para uma nova branch de trabalho antes de realizar qualquer commit.
|
||||
2. **Repositório da Wiki (`<base_projeto>/../wiki` ou `wiki/`)**: Hospeda a base viva de documentação (Pilares 3 e 4). Na Wiki, a IA possui autonomia total para executar `git commit`, `git push` e resolver eventuais conflitos de sincronização diretamente na branch `master`.
|
||||
1. **Aplicação Principal (`<base_projeto>`) e Repositório da Wiki (`<modulo-wiki>`, padrão `../wiki/`)**: É **terminantemente proibido** à IA executar `git commit`, `git push` ou criar branches para comitar. O commit deve ser realizado **apenas por um humano**, cabendo à IA **apenas sugerir o texto da mensagem de commit** (no padrão Conventional Commits) ao concluir suas alterações.
|
||||
2. **Submódulo `.agent` (`<base_projeto>/.agent`)**: É o **único** repositório onde a IA possui permissão para executar `git add`, `git commit`, `git pull --rebase origin master` e `git push origin master` de forma automática quando artefatos de IA são atualizados.
|
||||
|
||||
---
|
||||
|
||||
## Regra
|
||||
|
||||
### 1. Na Aplicação Principal (`<base_projeto>`) — COMMIT CONDICIONAL E SALVAGUARDA DE MASTER
|
||||
### 1. Na Aplicação Principal (`<base_projeto>`) e na Wiki (`<modulo-wiki>`) — COMMIT EXCLUSIVO POR HUMANO (IA APENAS SUGERE TEXTO)
|
||||
|
||||
A IA **PODE** realizar commits na aplicação principal, **ESTRITAMENTE CONDICIONADA** às regras:
|
||||
|
||||
1. **NUNCA comitar diretamente na branch `master`**: É expressamente proibido rodar `git commit` quando a branch atual for `master` (ou `main`).
|
||||
2. **Criação obrigatória de nova branch se estiver em `master`**:
|
||||
Antes de qualquer commit, a IA deve inspecionar a branch atual:
|
||||
```bash
|
||||
BRANCH_ATUAL=$(git branch --show-current)
|
||||
```
|
||||
Se `BRANCH_ATUAL` for `master` ou `main`, a IA **DEVE** criar e alternar para uma nova branch semântica:
|
||||
```bash
|
||||
git checkout -b <tipo>/<descricao-curta>
|
||||
```
|
||||
Padrão de nomenclatura:
|
||||
- `feat/<slug>`: novas funcionalidades
|
||||
- `fix/<slug>`: correções de bugs
|
||||
- `refactor/<slug>`: refatorações de código
|
||||
- `docs/<slug>`: documentações técnicas no código
|
||||
- `ia/<slug>`: planos e tarefas automatizadas de IA
|
||||
|
||||
3. **Commit em branch de trabalho**: Se o repositório já estiver em uma branch que NÃO seja `master`/`main`, a IA pode comitar diretamente nessa branch.
|
||||
4. **Mensagens semânticas**: Usar o padrão Conventional Commits (`feat:`, `fix:`, `refactor:`, `docs:`, `test:`, `chore:`).
|
||||
5. **Comandos PROIBIDOS na aplicação principal**:
|
||||
- `git commit` diretamente na branch `master` ou `main` ❌
|
||||
- `git push` direto na branch `master` ou `main` ❌
|
||||
- `git push --force` ou `git push -f` ❌
|
||||
- `git reset --hard` sem autorização explícita ❌
|
||||
- `git branch -D` ❌
|
||||
- `git stash drop` ❌
|
||||
|
||||
---
|
||||
|
||||
### 2. No Repositório da Wiki (`<modulo-wiki>`, padrão: `<base_projeto>/../wiki`) — COMMIT, PUSH E RESOLUÇÃO DE CONFLITOS DIRETO NA MASTER
|
||||
|
||||
Na Wiki (caminho resolvido dinamicamente via `modulo-wiki` em `memorias-ia/modulo.yml`, com fallback mandatório para `<base_projeto>/../wiki`), a IA possui permissão total e obrigação de manter a documentação atualizada diretamente na branch `master`:
|
||||
|
||||
1. **Commit e Push Diretos na Master**:
|
||||
```bash
|
||||
# <modulo-wiki> extraído de memorias-ia/modulo.yml (fallback padrão: ../wiki)
|
||||
git -C <modulo-wiki> add -A
|
||||
git -C <modulo-wiki> commit -m "docs(<modulo-id>): <descrição sucinta das alterações>"
|
||||
git -C <modulo-wiki> push origin master
|
||||
```
|
||||
|
||||
2. **Resolução de Conflitos Direto na Master**:
|
||||
Se ao dar push houver rejeição ou divergência com o upstream remoto:
|
||||
- A IA executa `git -C <modulo-wiki> pull --rebase origin master`.
|
||||
- Havendo conflitos de merge, a IA resolve as marcações diretamente na `master`, preservando a coerência da documentação dos 6 pilares.
|
||||
- Adiciona os arquivos resolvidos (`git -C <modulo-wiki> add -A`), finaliza o rebase (`git -C <modulo-wiki> rebase --continue` ou commit) e envia com `git push origin master`.
|
||||
A IA **NUNCA** deve executar commits ou pushes na aplicação principal ou na Wiki:
|
||||
|
||||
1. **Proibição Absoluta de Commit e Push pela IA**:
|
||||
- É expressamente proibido rodar `git commit` ou `git push` em qualquer branch da aplicação principal (`<base_projeto>`) ou do repositório da Wiki (`<modulo-wiki>`).
|
||||
- A IA não deve criar branches (`git checkout -b`) com a finalidade de comitar alterações automaticamente.
|
||||
2. **Obrigação de Sugerir o Texto do Commit**:
|
||||
- Ao finalizar qualquer implementação, correção, refatoração ou documentação, a IA **DEVE** apresentar ao operador humano uma **Sugestão de Mensagem de Commit** seguindo o padrão Conventional Commits:
|
||||
- `feat(<escopo>): <descrição sucinta>` — novas funcionalidades
|
||||
- `fix(<escopo>): <descrição sucinta>` — correções de bugs
|
||||
- `refactor(<escopo>): <descrição sucinta>` — refatorações de código
|
||||
- `docs(<modulo-id>): <descrição sucinta>` — criações ou atualizações de documentação (código ou Wiki)
|
||||
- `test(<escopo>): <descrição sucinta>` — adição ou ajuste de testes
|
||||
- `chore(<escopo>): <descrição sucinta>` — manutenção e configurações
|
||||
3. **Proibição de Binários Pesados no Git da Wiki (Usar MinIO Paiol)**:
|
||||
- É expressamente proibido versionar no Git da Wiki arquivos binários ou mídias pesadas (manuais em `.pdf`, vídeos `.mp4`/`.webm`, imagens pesadas, pacotes `.zip`).
|
||||
- Todo arquivo estático da Wiki DEVE ser enviado ao MinIO Paiol:
|
||||
|
|
@ -78,50 +42,61 @@ Na Wiki (caminho resolvido dinamicamente via `modulo-wiki` em `memorias-ia/modul
|
|||
./.agent/scripts/upload-paiol-wiki.sh <arquivo> <funcionalidade/pagina>
|
||||
```
|
||||
ou via `curl -X PUT --upload-file ... https://paiol.idz.one/wiki/{modulo}/{slug}-{aleatorio}.{ext}`.
|
||||
- Apenas o arquivo Markdown contendo a URL pública gerada deve ser commitado no repositório.
|
||||
- Apenas o arquivo Markdown contendo a URL pública gerada deve permanecer no repositório para que o humano realize o commit.
|
||||
4. **Comandos PROIBIDOS na aplicação principal e na Wiki**:
|
||||
- `git commit` (em qualquer branch) ❌
|
||||
- `git push` (em qualquer branch) ❌
|
||||
- `git push --force` ou `git push -f` ❌
|
||||
- `git reset --hard` sem autorização explícita ❌
|
||||
- `git branch -D` ❌
|
||||
- `git stash drop` ❌
|
||||
|
||||
---
|
||||
|
||||
### 2. No Submódulo `.agent` (`<base_projeto>/.agent`) — ÚNICO COM COMMIT E PUSH AUTOMÁTICO PERMITIDO
|
||||
|
||||
Exclusivamente quando houver evolução de regras, skills, workflows, scripts ou personas dentro do submódulo `.agent`, a IA está autorizada a versionar e publicar automaticamente na branch `master` do `.agent`:
|
||||
|
||||
```bash
|
||||
git -C .agent add -A
|
||||
git -C .agent commit -m "chore(agent): <descrição sucinta da evolução>"
|
||||
git -C .agent pull --rebase origin master
|
||||
git -C .agent push origin master
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Exemplos
|
||||
|
||||
### ❌ Errado — comitar diretamente na branch master da aplicação
|
||||
### ❌ Errado — IA executando commit na aplicação ou na Wiki
|
||||
```bash
|
||||
# Branch atual: master
|
||||
git add src/servicos/auth.ts
|
||||
git commit -m "fix: ajustar token de auth" # PROIBIDO EM MASTER!
|
||||
git commit -m "fix(auth): ajustar renovação de token" # PROIBIDO! Apenas humano faz commit.
|
||||
```
|
||||
|
||||
### ✅ Correto — ramificar antes de comitar se estiver em master
|
||||
```bash
|
||||
# Branch atual: master
|
||||
git checkout -b fix/ajuste-token-auth
|
||||
git add src/servicos/auth.ts
|
||||
git commit -m "fix(auth): ajustar renovação de token"
|
||||
# Notificar o operador: "Commit realizado na branch fix/ajuste-token-auth"
|
||||
### ✅ Correto — IA finaliza a alteração e apenas sugere o texto do commit ao humano
|
||||
```markdown
|
||||
Alterações concluídas e validadas.
|
||||
|
||||
💬 **Sugestão de Commit (Aplicação):**
|
||||
`fix(auth): ajustar renovação de token expirado`
|
||||
```
|
||||
|
||||
### ✅ Correto — comitar em branch secundária já existente
|
||||
```bash
|
||||
# Branch atual: feat/novo-painel (diferente de master)
|
||||
git add src/paginas/Painel.vue
|
||||
git commit -m "feat(painel): adicionar gráfico de métricas"
|
||||
```
|
||||
### ✅ Correto — IA atualiza a Wiki e sugere o texto do commit ao humano
|
||||
```markdown
|
||||
Documentação atualizada em `<modulo-wiki>/dev/<modulo-id>/`.
|
||||
|
||||
### ✅ Correto — ciclo completo na Wiki direto na master
|
||||
```bash
|
||||
git -C ../wiki add -A
|
||||
git -C ../wiki commit -m "docs(quipo): atualizar manual de licenciamento"
|
||||
git -C ../wiki pull --rebase origin master # Se houver conflitos, resolve e prossegue
|
||||
git -C ../wiki push origin master
|
||||
💬 **Sugestão de Commit (Wiki):**
|
||||
`docs(<modulo-id>): atualizar manual operacional e regras de negócio`
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Impacto
|
||||
|
||||
- **Segurança da Master**: A branch principal de produção fica totalmente protegida contra commits acidentais.
|
||||
- **Rastreabilidade e Revisão**: Todas as alterações da IA na aplicação ficam isoladas em branches específicas, facilitando Pull Requests e revisões do operador.
|
||||
- **Agilidade na Wiki**: A documentação viva nunca fica travada por divergências ou bloqueios manuais.
|
||||
- **Controle Humano Total**: Nenhum commit ou push entra no histórico da aplicação ou da Wiki sem revisão e ação direta do operador humano.
|
||||
- **Padronização Semântica**: O operador recebe sempre uma sugestão de mensagem clara e pronta para uso no formato Conventional Commits.
|
||||
- **Evolução Contínua do `.agent`**: O submódulo `.agent` permanece sincronizado na `master` quando aprimorado.
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -129,5 +104,6 @@ git -C ../wiki push origin master
|
|||
|
||||
- Rule: `rules/autonomia-agente.md`
|
||||
- Rule: `rules/ddd-documentacao-primeiro.md`
|
||||
- Rule: `rules/identidade-modulo.md`
|
||||
- Skill: `skills/documentacao/SKILL.md`
|
||||
- Skill: `skills/plano.executar/SKILL.md`
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue