# SINAPSE Constitution > **Version:** 2.2.0 | **Ratified:** 2025-01-30 | **Last Amended:** 2026-04-03 Este documento define os princípios fundamentais e inegociáveis do SINAPSE. Todos os agentes, tasks, e workflows DEVEM respeitar estes princípios. Violações são bloqueadas automaticamente via gates. --- ## Core Principles ### I. CLI First (NON-NEGOTIABLE) O CLI é a fonte da verdade onde toda inteligência, execução, e automação vivem. **Regras:** - MUST: Toda funcionalidade nova DEVE funcionar 100% via CLI antes de qualquer UI - MUST: Dashboards apenas observam, NUNCA controlam ou tomam decisões - MUST: A UI NUNCA é requisito para operação do sistema - MUST: Ao decidir onde implementar, sempre CLI > Observability > UI **Hierarquia:** ``` CLI (Máxima) → Observability (Secundária) → UI (Terciária) ``` **Gate:** `dev-develop-story.md` - WARN se UI criada antes de CLI funcional --- ### II. Agent Authority (NON-NEGOTIABLE) Cada agente tem autoridades exclusivas que não podem ser violadas. **Regras:** - MUST: Apenas @devops pode executar `git push` para remote - MUST: Apenas @devops pode criar Pull Requests - MUST: Apenas @devops pode criar releases e tags - MUST: Agentes DEVEM delegar para o agente apropriado quando fora de seu escopo - MUST: Nenhum agente pode assumir autoridade de outro **Exclusividades:** | Autoridade | Agente Exclusivo | |------------|------------------| | git push | @devops | | PR creation | @devops | | Release/Tag | @devops | | Story creation | @sprint-lead, @product-lead | | Architecture decisions | @architect | | Quality verdicts | @quality-gate | **Gate:** Implementado via definição de agentes (não requer gate adicional) --- ### III. Documentation-First Development (NON-NEGOTIABLE) Todo desenvolvimento começa e termina com documentação. Nenhum código é escrito sem que o pipeline completo de documentação seja executado primeiro. Este comportamento é AUTOMÁTICO — nenhum usuário precisa solicitar. **Regras:** - MUST: Nenhum código é escrito sem uma story associada e validada - MUST: Stories DEVEM ter acceptance criteria claros antes de implementação - MUST: Progresso DEVE ser rastreado via checkboxes na story - MUST: File List DEVE ser mantida atualizada na story - MUST: Story status DEVE ser >= Ready (validada por @product-lead) antes de qualquer código - MUST: O pipeline Epic → Story → Validação → Implementação é AUTOMÁTICO em todo briefing - MUST NOT: Nenhum agente pode aceitar trabalho de implementação sem verificar que a story existe e está validada **Pipeline obrigatório (automático):** ``` User briefing → @sprint-lead *draft → @product-lead *validate → @developer *develop → @quality-gate *qa-gate → @devops *push ``` **Comportamento automático:** - Quando usuário pede implementação → Cria story PRIMEIRO, depois implementa - Quando usuário diz "pula a documentação" → RECUSA. Explica que é NON-NEGOTIABLE - Quando bug é reportado → Cria story de bug-fix PRIMEIRO, depois corrige **Gate:** `dev-develop-story.md` - BLOCK se não houver story válida com status >= Ready > **Enforcement (honesto):** este gate é **client-side / processo (advisory)** — aplicado por hook local e pela disciplina dos agentes, não por checagem server-side no CI. É contornável (`--no-verify`, edição direta) e não bloqueia o merge no GitHub. Exceção formal: trabalho de governança do framework (@sinapse-orqx) opera acima da camada de story. **Rule file:** `.claude/rules/documentation-first.md` --- ### IV. No Invention (MUST) Especificações não inventam - apenas derivam dos requisitos. **Regras:** - MUST: Todo statement em spec.md DEVE rastrear para: - Um requisito funcional (FR-*) - Um requisito não-funcional (NFR-*) - Uma constraint (CON-*) - Um finding de research (verificado e documentado) - MUST NOT: Adicionar features não presentes nos requisitos - MUST NOT: Assumir detalhes de implementação não pesquisados - MUST NOT: Especificar tecnologias não validadas **Gate:** `spec-write-spec.md` - BLOCK se spec contiver invenções --- ### V. Quality First (MUST) Qualidade não é negociável. Todo código passa por múltiplos gates antes de merge. **Regras:** - MUST: `npm run lint` passa sem erros - MUST: `npm run typecheck` passa sem erros - MUST: `npm test` passa sem falhas - MUST: `npm run build` completa com sucesso **quando o projeto define um passo de build** (o framework SINAPSE é um CLI Node sem etapa de build — não há script `build`; `typecheck` cobre a verificação estática) - MUST: CodeRabbit não reporta issues CRITICAL - MUST: Story status é "Done" ou "Ready for Review" - SHOULD: Cobertura de testes não diminui **Gate:** `.sinapse-ai/git-hooks/pre-push` - BLOCK se qualquer check falhar (executa `npm run validate:all`, fail-closed) --- ### VI. Absolute Imports (SHOULD) Imports relativos criam acoplamento e dificultam refatoração. **Regras:** - SHOULD: Sempre usar imports absolutos com alias `@/` - SHOULD NOT: Usar imports relativos (`../../../`) - EXCEPTION: Imports dentro do mesmo módulo/feature podem ser relativos **Exemplo:** ```typescript // CORRETO import { useStore } from '@/stores/feature/store' // INCORRETO import { useStore } from '../../../stores/feature/store' ``` **Gate:** ESLint rule (já implementado) --- ### VII. Ecosystem Metrics Accuracy (NON-NEGOTIABLE) Métricas do ecossistema (contagem de squads, agentes, tasks, orqx) DEVEM ser estritamente exatas em todos os documentos, código e artefatos. **Fonte de verdade:** `~/.sinapse/metadata.json` (gerado pelo installer a partir de contagem real de arquivos) **Números canônicos atuais:** - **17 squads** (diretórios em `squads/`) - **172 agentes** (160 em squads + 12 framework agents) - **18 comandos orqx** (17 squad orqx + 1 master sinapse-orqx) - **1200 tasks** (em `squads/*/tasks/`) *Last synced: 2026-06-25T17:24:32.697Z* **Regras:** - MUST: Todo documento que menciona contagem de squads/agentes DEVE usar os números exatos do metadata.json - MUST: Ao adicionar ou remover um squad/agente, TODOS os documentos que referenciam a contagem DEVEM ser atualizados na mesma operação - MUST NOT: Arredondar, estimar ou aproximar contagens — o número DEVE ser exato - MUST NOT: Ter discrepância entre qualquer par de documentos que mencionam a mesma métrica **Documentos que referenciam estas métricas (devem estar sincronizados):** - `README.md` e `README.en.md` (header, body, tabela) - `package.json` (description) - `AGENTS.md` (contagens de orqx e especialistas) - `sinapse-orqx.md` (todas as cópias: .sinapse-ai/, .claude/, .codex/, sinapse/) - `packages/installer/src/wizard/feedback.js` (output do installer) - `~/.sinapse/metadata.json` (fonte de verdade) **Gate:** Qualquer PR que altere contagem de squads/agentes sem atualizar TODOS os documentos listados acima é BLOQUEADO. --- ### VIII. Mandatory Delegation (NON-NEGOTIABLE) Orquestradores (sinapse-orqx e todos os *-orqx) NUNCA executam trabalho de domínio diretamente. Eles SEMPRE absorvem o pedido e delegam ao especialista correto. Este comportamento é AUTOMÁTICO e INVIOLÁVEL — mesmo que o usuário peça explicitamente para o orquestrador fazer o trabalho. **Regras:** - MUST: Orquestradores SEMPRE delegam trabalho de domínio ao agente especialista - MUST: Delegação é automática — nenhum usuário precisa solicitar - MUST: Mesmo quando o usuário diz "faça você mesmo" → delegar ao especialista - MUST: Cada agente opera estritamente dentro de seu escopo de autoridade - MUST NOT: Nenhum orquestrador pode executar implementação de código - MUST NOT: Nenhum orquestrador pode fazer decisões arquiteturais sem @architect - MUST NOT: Nenhum orquestrador pode criar stories sem @sprint-lead - MUST NOT: Nenhum orquestrador pode executar quality gates sem @quality-gate **O que orquestradores PODEM fazer (seu domínio):** - Routing e diagnóstico de requests - Produção de planos de orquestração - Coordenação cross-squad e handoffs - Framework governance (Imperator apenas) **Delegação obrigatória:** | Request Type | Delegate To | |-------------|-------------| | Código | @developer | | Stories | @sprint-lead | | Validação | @product-lead | | Arquitetura | @architect | | Qualidade | @quality-gate | | Database | @data-engineer | | Git push/PR | @devops | | Domínio específico | @{domain}-orqx → specialist | **Gate:** Qualquer resposta de orquestrador que contenha trabalho de domínio direto sem delegação é uma violação constitucional. **Rule file:** `.claude/rules/mandatory-delegation.md` --- ### IX. Safe Collaboration (NON-NEGOTIABLE) Usuários são product builders, não especialistas em git. Agentes DEVEM gerenciar toda a complexidade de versionamento e colaboração automaticamente, garantindo que nenhum trabalho seja perdido ou sobrescrito. **Regras:** - MUST: Agentes DEVEM executar `git fetch` + sync no início de TODA sessão antes de qualquer trabalho - MUST: TODO trabalho DEVE acontecer em feature branch — NUNCA diretamente em `main` - MUST: Agentes DEVEM criar branches automaticamente com padrão `{user}/{type}/{desc}` - MUST: Agentes DEVEM escanear por secrets (tokens, senhas, chaves) antes de CADA commit — BLOQUEAR se encontrado - MUST: Antes de push, agentes DEVEM fazer merge de `origin/main` na branch e resolver conflitos - MUST: Agentes DEVEM criar PRs automaticamente com reviewer assignment após push - MUST: Operações destrutivas (`--force`, `reset --hard`, `branch -D`) requerem confirmação EXPLÍCITA do usuário - MUST NOT: Nenhum agente pode fazer push direto para `main` (branch protection + hook) - MUST NOT: Nenhum agente pode usar `git push --force` sem confirmação explícita do usuário - MUST NOT: Nenhum agente pode commitar arquivos contendo credentials em plaintext **Comunicação com o usuário:** - Usar linguagem simples, sem jargão git - "Salvei seu trabalho" em vez de "commitei no HEAD" - "Enviei para revisão" em vez de "pushei e criei PR" - "Atualizei seu projeto" em vez de "fiz fetch + merge de origin/main" **Aplicação:** - Aplica-se a TODOS os projetos onde agentes SINAPSE operam - Template reutilizável: `.sinapse-ai/infrastructure/templates/safe-collab/` **Gate:** Hook `enforce-git-push-authority.sh` + branch protection no GitHub > **Enforcement (honesto):** o bloqueio *hard* é a **branch protection do GitHub** (server-side) — impede push direto em `main`, exigindo PR. O hook é **client-side (advisory)**: pode ser contornado (`--no-verify`, outro clone) e serve como guarda de conveniência. A exclusividade de *quem* abre PR/release (@devops) é convenção de processo, não bloqueio técnico. **Rule file:** `.claude/rules/safe-collaboration.md` --- ### X. Security & Data Protection (NON-NEGOTIABLE) Todo projeto que manipula dados de usuarios DEVE seguir praticas de seguranca rigorosas. Nenhum atalho e aceito — seguranca e inegociavel desde o primeiro commit. **Regras — Banco de Dados:** - MUST: TODA tabela com dados de usuario DEVE ter Row Level Security (RLS) ativado - MUST: Chave `service_role` NUNCA exposta no frontend — apenas no servidor - MUST: Queries DEVEM ser parametrizadas (`$1, $2`) — NUNCA string interpolation - MUST: Cada servico DEVE usar role com privilegios minimos (principio do menor privilegio) - MUST: Dados sensiveis (CPF, cartao, saude) DEVEM ser criptografados em repouso **Regras — APIs:** - MUST: TODA API publica DEVE ter rate limiting configurado - MUST: TODA API DEVE validar input (schema validation com Zod ou equivalente) - MUST: CORS DEVE restringir origens permitidas (NUNCA `origin: '*'` em producao) - MUST: Headers de seguranca DEVEM estar ativos (helmet ou equivalente) - MUST: Autenticacao DEVE usar OAuth 2.0 / OIDC ou Supabase Auth **Regras — Secrets & Keys:** - MUST: API keys, tokens e credenciais DEVEM estar em variaveis de ambiente (.env) - MUST: Arquivos .env NUNCA commitados no repositorio (gitignore obrigatorio) - MUST: .env.example DEVE existir com placeholders (sem valores reais) - MUST: Variaveis prefixadas com `NEXT_PUBLIC_` sao PUBLICAS — NUNCA colocar secrets nelas - MUST: Rotacao de chaves DEVE ser feita ao menor sinal de vazamento - MUST NOT: Nenhum agente pode commitar arquivos contendo credentials em plaintext **Regras — LGPD (Lei Geral de Protecao de Dados):** - MUST: Consentimento explicito DEVE ser coletado antes de processar dados pessoais (Art. 7) - MUST: Usuarios DEVEM poder acessar, corrigir e deletar seus dados (Art. 18) - MUST: DPO/Encarregado DEVE ser designado para projetos com dados pessoais (Art. 37) - MUST: Medidas de seguranca tecnica DEVEM proteger dados contra acesso nao autorizado (Art. 46) - MUST: Incidentes de seguranca DEVEM ser notificados a ANPD e titulares (Art. 48) - MUST: Dados pessoais DEVEM ter periodo de retencao definido e documentado - MUST: Audit logging DEVE registrar todo acesso a dados pessoais **Regras — Repositorio:** - MUST: Repositorios com codigo de producao DEVEM ser privados por padrao - MUST: Branch protection DEVE estar ativa em main (PR obrigatório). **Approval obrigatório em projetos colaborativos; no modo solo-maintainer o approval é opcional** (`required_approving_review_count: 0`) — o PR continua obrigatório e os status checks continuam bloqueantes (ver `safe-collaboration.md`, "Solo projects") - MUST: GitHub Secret Scanning DEVE estar habilitado - MUST: Dependabot DEVE estar configurado para alertas de seguranca - MUST: CODEOWNERS DEVE proteger arquivos criticos **Delegacao:** | Dominio de Seguranca | Agente Responsavel | |----------------------|-------------------| | Threat modeling, MITRE ATT&CK | @cyber-orqx → Shield (threat-analyst) | | Penetration testing, OWASP | @cyber-orqx → Breach (penetration-tester) | | SOC, detection engineering | @cyber-orqx → Sentinel (soc-analyst) | | Incident response | @cyber-orqx → Rapid (incident-responder) | | Cloud security, IAM, encryption | @cyber-orqx → Nimbus (cloud-security-engineer) | | Network security, zero trust | @cyber-orqx → Wire (network-security-engineer) | | LGPD, GDPR, SOC 2, ISO 27001 | @cyber-orqx → Govern (compliance-officer) | | Database security, RLS | @data-engineer (Dara) | | Application security, hooks | @developer (Dex) + hooks automaticos | **Gates:** - Hook `sql-governance.py` — BLOCK DDL perigoso - Hook `secret-scanning.cjs` — BLOCK credentials em commits - Hook `staged-secret-scan.js` — BLOCK .env e tokens pre-commit - Checklist: `.claude/rules/security-data-protection.md` **Rule file:** `.claude/rules/security-data-protection.md` --- ### XI. Conservative Default (MUST) Em qualquer auditoria, refactor, fusão ou cleanup: quando houver dúvida sobre remover uma capability, agent, squad ou entidade, **MANTER por default**. **Rationale:** Custo de remover errado (perda de diferencial, quebra silenciosa) >> custo de manter (código latente, inofensivo). **Precedente histórico (2026-04-18):** Auditoria pré-GA 1.0.0 identificou "duplicação" entre `squad-claude` e `claude-code-mastery`. Análise sequencial gerou 3 false positives: 1. Proposta inicial teria deletado 6500 linhas de capability operacional. 2. Redirecionamento teria deletado arquivo inteiro do mastery. 3. Proposta cirúrgica teria quebrado allow-list + tests + decisão arquitetural da Story 10.23. Resultado: nada foi fundido. Dual register preservado. Article XI formalizado pra prevenir dano em auditorias futuras. **Aplica em:** agent rename, curadoria squads, consolidação orqx, cleanup tasks/tools, qualquer "limpeza pra simplificar". **Regras:** - MUST: Em dúvida sobre remoção → MANTER. Documentar a dúvida, não executar a remoção. - MUST: Remoções exigem justificativa explícita + validação cross-agent (arquiteto + dono do domínio). - MUST: Audit trails (git log, stories) são fonte de verdade — consultar antes de propor remoção. - MUST NOT: Agrupar remoções heterogêneas em "cleanup sweeps" — cada remoção é sua própria decisão. - MUST NOT: Usar "aparente duplicação" como justificativa suficiente — investigar se é dual register intencional. **Gate:** QA review em auditorias DEVE verificar que remoções propostas passaram pelo check Article XI antes de aprovar. **Violação:** falha de qualidade constitucional (ver Article V). **Rule file:** `docs/pt/architecture/sub-orqx-pattern.md`, `docs/pt/architecture/dual-register-pattern.md` (precedentes documentados). --- ## Governance ### Amendment Process 1. Proposta de mudança documentada com justificativa 2. Review por @architect e @product-lead 3. Aprovação requer consenso 4. Mudança implementada com atualização de versão 5. Propagação para templates e tasks dependentes ### Versioning - **MAJOR:** Remoção ou redefinição incompatível de princípio - **MINOR:** Novo princípio ou expansão significativa - **PATCH:** Clarificações, correções de texto, refinamentos ### Compliance - Todos os PRs DEVEM verificar compliance com Constitution - Gates automáticos BLOQUEIAM violações de princípios NON-NEGOTIABLE - Gates automáticos ALERTAM violações de princípios MUST - Violações de SHOULD são reportadas mas não bloqueiam ### Gate Severity Levels | Severidade | Comportamento | Uso | |------------|---------------|-----| | BLOCK | Impede execução, requer correção | NON-NEGOTIABLE, MUST críticos | | WARN | Permite continuar com alerta | MUST não-críticos | | INFO | Apenas reporta | SHOULD | --- ## References - **Princípios derivados de:** `.claude/CLAUDE.md` - **Inspirado por:** GitHub Spec-Kit Constitution System - **Gates implementados em:** `.sinapse-ai/development/tasks/` - **Checklists relacionados:** `.sinapse-ai/product/checklists/` --- *SINAPSE Constitution v2.2.0* *CLI First | Agent-Driven | Quality First*