Skip to Content
DocumentaçãoArquiteturaAdrAdr Collab 1 Current State Audit

ADR-COLLAB-1: Auditoria do Estado Atual - Proteção de Branch e Workflow de Contribuidores

Story: COLLAB-1 Data: 2025-12-30 Status: Aceito Autor: @devops (Gage)


Contexto

Um usuário da comunidade fez melhorias no agente @data-engineer. Esta auditoria documenta a configuração atual de segurança do repositório para identificar lacunas que poderiam permitir modificações não autorizadas na branch main.


Decisão

Auditar o estado atual de:

  1. Regras de proteção de branch
  2. Workflows do GitHub Actions
  3. Configuração CODEOWNERS
  4. Status checks obrigatórios

Estado Atual

1. Configurações de Proteção de Branch

Fonte: gh api repos/SynkraAI/aios-core/branches/main/protection

{ "required_status_checks": { "strict": true, "contexts": ["build", "lint", "typecheck"] }, "required_pull_request_reviews": { "dismiss_stale_reviews": true, "require_code_owner_reviews": false, "require_last_push_approval": false, "required_approving_review_count": 0 }, "required_signatures": { "enabled": false }, "enforce_admins": { "enabled": false }, "required_linear_history": { "enabled": false }, "allow_force_pushes": { "enabled": false }, "allow_deletions": { "enabled": false }, "required_conversation_resolution": { "enabled": false } }

2. Configurações do Repositório

Fonte: gh api repos/SynkraAI/aios-core

{ "name": "aios-core", "default_branch": "main", "visibility": "public", "allow_forking": true, "has_discussions": true, "has_issues": true, "has_projects": true, "has_wiki": true }

3. Workflows do GitHub Actions

Fonte: gh api repos/SynkraAI/aios-core/actions/workflows

WorkflowEstadoCaminho
CIativo.github/workflows/ci.yml
Testativo.github/workflows/test.yml
PR Automationativo.github/workflows/pr-automation.yml
PR Labelingativo.github/workflows/pr-labeling.yml
Semantic Releaseativo.github/workflows/semantic-release.yml
Releaseativo.github/workflows/release.yml
NPM Publishativo.github/workflows/npm-publish.yml
Welcome New Contributorsativo.github/workflows/welcome.yml
macOS Testingativo.github/workflows/macos-testing.yml
Quarterly Gap Auditativo.github/workflows/quarterly-gap-audit.yml
CodeQLativodynamic/github-code-scanning/codeql

4. Configuração CODEOWNERS

Fonte: .github/CODEOWNERS

* @SynkraAI

Análise: Ownership único no nível da organização - sem ownership granular por caminho.

5. Configuração CodeRabbit

Status: .coderabbit.yaml NÃO ENCONTRADO


Análise de Lacunas

Severidade CRÍTICA

ConfiguraçãoAtualEsperadoRisco
required_approving_review_count01Código não revisado pode ser mergeado
require_code_owner_reviewsfalsetrueSem validação de especialista do domínio

Impacto: Qualquer colaborador com acesso de escrita pode mergear PRs sem aprovação, ignorando revisão de código.

Severidade ALTA

ConfiguraçãoAtualEsperadoRisco
CodeRabbit .coderabbit.yamlAusenteConfiguradoSem revisão automatizada de IA
Granularidade CODEOWNERSNível orgEspecífico por caminhoSem roteamento de especialistas

Impacto: Qualidade de revisão reduzida e sem feedback automatizado para contribuidores.

Severidade MÉDIA

ConfiguraçãoAtualEsperadoRisco
test nos checks obrigatóriosNão exigidoExigidoTestes podem ser pulados
required_conversation_resolutionfalsetrueFeedback pode ser ignorado
story-validation nos checks obrigatóriosNão exigidoOpcionalConsistência de story não exigida

Impacto: PRs podem ser mergeados com testes falhando ou feedback não endereçado.

Severidade BAIXA

ConfiguraçãoAtualEsperadoRisco
Assinaturas obrigatóriasfalseOpcionalAutenticidade de commit não verificada
Histórico linear exigidofalseOpcionalHistórico de merge complexo

Impacto: Preocupações menores de rastreabilidade.


Tabela Resumo

CategoriaStatusAção Necessária
Revisões de aprovaçãoCRÍTICOHabilitar 1 obrigatória
Revisões de code ownerCRÍTICOHabilitar
Config CodeRabbitALTACriar
Detalhamento CODEOWNERSALTAAprimorar
Test nos checksMÉDIAAdicionar
Resolução de conversasMÉDIAHabilitar

Avaliação de Risco

Nível de Risco Atual: ALTO

Com required_approving_review_count: 0, qualquer colaborador pode:

  1. Criar um PR
  2. Mergear imediatamente sem nenhuma revisão
  3. Ignorar toda supervisão humana

Isso é aceitável para desenvolvimento interno mas não recomendado para contribuições externas.

Fatores Mitigantes

  • Pipeline de CI (lint, typecheck, build) é obrigatório
  • Force pushes estão desabilitados
  • Deleções de branch estão desabilitadas
  • Revisões obsoletas são descartadas (quando revisões são exigidas)

Recomendações

Fase 1: Imediato (CRÍTICO)

  1. Definir required_approving_review_count: 1
  2. Definir require_code_owner_reviews: true

Comando:

gh api repos/SynkraAI/aios-core/branches/main/protection -X PUT \ -F required_status_checks='{"strict":true,"contexts":["lint","typecheck","build","test"]}' \ -F enforce_admins=false \ -F required_pull_request_reviews='{"dismiss_stale_reviews":true,"require_code_owner_reviews":true,"required_approving_review_count":1}' \ -F restrictions=null

Fase 2: Curto prazo (ALTA)

  1. Criar .coderabbit.yaml com regras específicas do AIOS
  2. Atualizar CODEOWNERS com caminhos granulares

Fase 3: Médio prazo (MÉDIA)

  1. Adicionar test aos status checks obrigatórios
  2. Habilitar required_conversation_resolution

Artefatos da Auditoria

Configurações exportadas salvas em:

  • .aios/audit/branch-protection.json
  • .aios/audit/repo-settings.json

Consequências

Positivas

  • Visibilidade completa da postura de segurança atual
  • Priorização clara de correções
  • Recomendações baseadas em evidências

Negativas

  • Auditoria revela lacunas significativas
  • Ação imediata necessária para contribuições externas seguras

Neutras

  • Pipeline de CI existente está bem configurado
  • Workflow de fork está documentado em CONTRIBUTING.md

Documentos Relacionados


Auditoria conduzida como parte da investigação da Story COLLAB-1.