synapos 2.6.1 → 2.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,10 +1,9 @@
1
1
  ---
2
2
  name: synapos-gate-system
3
- version: 1.5.0
4
3
  description: Sistema de quality gates — validação em pontos críticos do pipeline
5
4
  ---
6
5
 
7
- # SYNAPOS GATE SYSTEM v1.4.0
6
+ # SYNAPOS GATE SYSTEM v2.0.0
8
7
 
9
8
  > Gates são pontos de validação obrigatórios. Falha em um gate bloqueia o avanço.
10
9
  > Princípio: **Fail Loud, Never Silent** — nunca ignore uma falha de gate.
@@ -13,400 +12,133 @@ description: Sistema de quality gates — validação em pontos críticos do pip
13
12
 
14
13
  ## GATES DISPONÍVEIS
15
14
 
16
- Use `gate:` nos steps do pipeline.yaml para ativar um gate antes de continuar.
15
+ Três gates ativos. Nada mais.
17
16
 
18
17
  ---
19
18
 
20
- ### GATE-0 — Integridade do Framework e Documentação do Projeto
19
+ ### GATE-0 — Integridade do Framework
21
20
 
22
- **Quando usar:** No primeiro step de qualquer pipeline. **Obrigatório antes de qualquer execução.**
21
+ **Quando usar:** No primeiro step de qualquer pipeline. **Obrigatório.**
23
22
 
24
- **Verifica — Framework:**
23
+ **Verifica:**
25
24
  - [ ] `.synapos/core/orchestrator.md` existe
26
25
  - [ ] `.synapos/core/pipeline-runner.md` existe
27
26
  - [ ] `docs/_memory/company.md` existe
28
- - [ ] `docs/_memory/preferences.md` existe
29
27
  - [ ] `.synapos/squads/{slug}/squad.yaml` existe
30
- - [ ] `.synapos/squads/{slug}/agents/` tem pelo menos um .agent.md
31
-
32
- **Verifica — Documentação do Projeto (obrigatório):**
33
- - [ ] Pasta `docs/` existe na raiz do projeto
34
- - [ ] `docs/` contém pelo menos um arquivo `.md`
35
-
36
- **Verificação de documentação — leia `execution_mode` do squad.yaml:**
37
-
38
- | `execution_mode` | Comportamento se `docs/` ausente ou incompleta |
39
- |---|---|
40
- | `bootstrap` | Passa com aviso — gates GATE-ADR e GATE-2 desativados |
41
- | `standard` | Passa se `company.md` + pelo menos 1 dir de docs existir; avisa sobre gaps |
42
- | `strict` | Exige `company.md` + `docs/tech/` + `docs/business/` — bloqueia se faltar |
43
-
44
- ---
45
-
46
- **BOOTSTRAP — docs ausentes ou incompletas:**
47
- ```
48
- ⚡ GATE-0 (Bootstrap Mode) — Score de documentação: {doc_score}/100
49
- Executando com contexto mínimo.
50
-
51
- Gates ativos neste modo: GATE-DECISION
52
- Desativados: GATE-ADR, GATE-2, GATE-DESIGN
28
+ - [ ] `.synapos/squads/{slug}/agents/` tem pelo menos um `.agent.md`
53
29
 
54
- Para resultados melhores:
55
- → /setup:build-tech (+35 pontos de documentação)
56
- → /setup:build-business (+40 pontos de documentação)
30
+ **Se modo Completo:** adicionalmente verifica se `docs/` existe com pelo menos 1 arquivo `.md`.
57
31
 
58
- Prosseguindo...
59
- ```
32
+ **Falha de framework (qualquer modo):** liste os arquivos faltantes e pare.
60
33
 
61
- **STANDARD — docs parcialmente presentes:**
34
+ **Modo Rápido — docs ausentes:**
62
35
  ```
63
- 🟡 GATE-0 (Standard Mode) — Score de documentação: {doc_score}/100
64
- Contexto parcial. Executando com gates essenciais.
65
-
66
- Gates ativos: GATE-0, GATE-ADR, GATE-DECISION
67
- Desativados: GATE-DESIGN (requer docs/business completo)
68
-
69
- Documentação faltante:
70
- {lista de itens ausentes com pontos correspondentes}
71
-
36
+ GATE-0 (Modo Rápido) — executando sem documentação de projeto.
37
+ Para resultados melhores: execute /setup:build-tech e /setup:build-business
72
38
  Prosseguindo...
73
39
  ```
74
40
 
75
- **STRICT — docs completas:**
41
+ **Modo Completo — docs presentes:**
76
42
  ```
77
- 🔴 GATE-0 (Strict Mode) Score de documentação: {doc_score}/100
78
- Contexto completo. Todos os gates ativos.
79
-
80
- ✅ GATE-0 aprovado
81
- ```
82
-
83
- **STRICT sem documentação completa — bloqueia:**
84
- ```
85
- 🚫 GATE-0 — Documentação insuficiente para Strict Mode
86
-
87
- Score atual: {doc_score}/100 (mínimo necessário: 70)
88
-
89
- Itens faltantes:
90
- ✗ {item} — {pontos} pontos
91
-
92
- Opções:
93
- → Crie a documentação: /setup:build-tech e /setup:build-business
94
- → Execute uma tarefa mais simples (reduz para Standard/Bootstrap automaticamente)
43
+ GATE-0 — aprovado
95
44
  ```
96
45
 
97
- **Falha de framework (qualquer modo):** Liste os arquivos faltantes do core e pare.
98
-
99
- ---
100
-
101
- ### GATE-1 — Configuração do Squad
102
-
103
- **Quando usar:** Após criação do squad, antes do primeiro step real.
104
-
105
- **Verifica:**
106
- - [ ] squad.yaml tem `name`, `domain`, `description` preenchidos
107
- - [ ] squad.yaml tem `feature` e `session` preenchidos (obrigatório no modelo v2)
108
- - [ ] Todos os agents listados em squad.yaml têm arquivo .agent.md correspondente
109
- - [ ] Pipeline referenciado em squad.yaml existe
110
-
111
- **Falha:** Informe o campo ou arquivo faltante e pare.
112
-
113
46
  ---
114
47
 
115
- ### GATE-2Contexto Completo
48
+ ### GATE-3Qualidade Mínima do Output
116
49
 
117
- **Quando usar:** Antes de steps de implementação/execução (após discovery).
50
+ **Quando usar:** Após cada step com `execution: subagent` ou `execution: inline`.
118
51
 
119
52
  **Verifica:**
120
- - [ ] Objetivo do squad está claro (description no squad.yaml)
121
- - [ ] Ao menos um documento de contexto existe em `docs/` (raiz do projeto)
122
- - [ ] `docs/.squads/sessions/{feature-slug}/memories.md` foi lido e considerado
123
- - [ ] Se `context.md` existe na session, foi carregado no contexto do agent
124
-
125
- **Falha:** Informe o que está incompleto. Sugira executar o step de investigação (pré-execução) primeiro.
126
-
127
- ---
128
-
129
- ### GATE-3 — Qualidade do Output
130
-
131
- **Quando usar:** Antes de steps de revisão ou handoff.
132
-
133
- **Verifica (com base nas veto_conditions do step anterior):**
134
53
  - [ ] Output não está vazio
135
- - [ ] Output atende os critérios mínimos do agent (Quality Criteria do .agent.md)
136
- - [ ] Nenhuma veto_condition foi violada
137
-
138
- **Falha:** Aponte a condição violada. Retorne ao step anterior.
139
-
140
- ---
141
-
142
- ### GATE-4 — Consistência de Documentação (Produto)
143
-
144
- **Quando usar:** Exclusivo para squad de Produto, antes do handoff.
145
-
146
- **Verifica (na session folder `docs/.squads/sessions/{feature-slug}/`):**
147
- - [ ] `context.md` existe e não está vazio
148
- - [ ] `architecture.md` ou `spec.md` existe com critérios de aceite
149
- - [ ] `plan.md` existe (se pipeline gerou)
150
- - [ ] `review-notes.md` existe
151
- - [ ] `state.json` tem entrada para este squad com todos os steps concluídos
152
-
153
- **Falha:** Liste os documentos faltantes na session. Não libere o handoff.
154
-
155
- ---
156
-
157
- ### GATE-DECISION — Bloqueio de Decisões Autônomas
158
-
159
- **Quando usar:** Após cada step com `execution: subagent` ou `execution: inline`. Aplicado automaticamente pelo pipeline-runner antes de aceitar qualquer output.
160
-
161
- **Princípio:** Nenhum agent pode tomar decisões além do escopo definido no step. Toda decisão deve ser sinalizada e aprovada pelo usuário.
162
-
163
- **O que é considerado uma decisão:**
164
- - Escolha de biblioteca, framework ou ferramenta não especificada no step
165
- - Definição de estrutura de dados, schema ou interface não solicitada
166
- - Escolha de padrão arquitetural (MVC, CQRS, Event Sourcing, etc.) não documentada em ADR
167
- - Escolha de biblioteca de componentes UI não especificada no step
168
- - Desvio de padrão documentado no design system sem justificativa
169
- - Escolha de padrão de interação (ex: modal vs. drawer, inline edit vs. form separado) não documentada
170
- - Qualquer "assumindo que..." ou "optei por..." no output
171
-
172
- **Como o agent deve sinalizar:**
173
-
174
- Quando o agent identifica que precisa tomar uma decisão além do escopo, ele **para** e inclui no output:
54
+ - [ ] Output tem mais de 50 caracteres
55
+ - [ ] Output não é placeholder (`TODO`, `PLACEHOLDER`, `[vazio]`, `[...]`)
56
+ - [ ] Nenhuma `veto_condition` do step foi violada
175
57
 
58
+ **Falha:**
176
59
  ```
177
- [DECISÃO PENDENTE] {id-sequencial}
178
- Contexto: {por que essa decisão é necessária}
179
- Opções:
180
- A) {opção A} — {prós/contras}
181
- B) {opção B} — {prós/contras}
182
- Recomendação do agent: {opção recomendada e por quê}
183
- Aguardando aprovação para prosseguir.
184
- ```
60
+ 🚫 GATE-3 — output inválido
185
61
 
186
- **Verifica:**
187
- - [ ] O output **não** contém decisões implícitas (sem `[DECISÃO PENDENTE]` quando deveria ter)
188
- - [ ] Cada `[DECISÃO PENDENTE]` foi aprovada pelo usuário antes de o agent prosseguir
189
- - [ ] O agent não escolheu unilateralmente entre as opções sem aprovação
190
-
191
- **Falha — Decisão implícita detectada:**
62
+ Motivo: {output vazio | placeholder | veto violado}
63
+ Reexecutando step...
192
64
  ```
193
- 🚫 GATE-DECISION — FALHA: Decisão autônoma detectada
194
-
195
- O agent tomou a seguinte decisão sem aprovação:
196
- "{trecho do output}"
197
65
 
198
- O agent não pode prosseguir com esta decisão.
199
- Reexecutando step com instrução: sinalizar como [DECISÃO PENDENTE].
200
- ```
66
+ Máximo 2 reexecuções automáticas. Na falha → escale para o usuário.
201
67
 
202
- **Falha — Decisão pendente não resolvida:**
68
+ **Gate passando:**
203
69
  ```
204
- GATE-DECISIONAGUARDANDO: Decisão pendente
205
-
206
- [DECISÃO PENDENTE] {id}
207
- {conteúdo da decisão pendente}
208
-
209
- Selecione uma opção para continuar:
210
- - A) {opção A}
211
- - B) {opção B}
212
- - ✏️ Definir outra opção
70
+ GATE-3output aprovado
213
71
  ```
214
72
 
215
- Aguarde a seleção do usuário. **Nunca resolva automaticamente.**
216
-
217
73
  ---
218
74
 
219
- ### GATE-ADRConformidade com ADRs (Implementação Guiada por ADRs)
220
-
221
- **Quando usar:** Obrigatório antes de qualquer step de implementação (`execution: subagent` ou `execution: inline`) quando o projeto tem ADRs em `docs/`.
222
-
223
- **Verifica:**
224
- - [ ] O agent leu todas as ADRs disponíveis em `docs/` (arquivos com `ADR`, `adr`, `decisions`, `architecture-decision` no nome ou caminho)
225
- - [ ] O output do step lista explicitamente quais ADRs foram consultadas
226
- - [ ] Nenhuma decisão técnica no output contradiz uma ADR com status `Aceito` ou `Ativo`
227
- - [ ] Se o step CRIA uma nova ADR, ela segue o template padrão (Contexto / Decisão / Alternativas / Consequências)
228
-
229
- **Resultado esperado:** Código e documentação conformes com ADRs desde o início — não como revisão posterior.
75
+ ### GATE-5Entrega / Handoff
230
76
 
231
- **Falha Conflito detectado:**
232
- ```
233
- 🚫 GATE-ADR — FALHA: Conflito com ADR existente
77
+ **Quando usar:** Último step de qualquer pipeline antes de marcar como `completed`.
234
78
 
235
- ADR violada: {adr-id} {título}
236
- Decisão conflitante no output: {trecho}
237
- Status da ADR: Aceito
79
+ **Comportamento:** apenas confirmação visual. **Nunca bloqueia.**
238
80
 
239
- O agent não pode prosseguir com decisões que contradizem ADRs aprovadas.
240
- Opções:
241
- - Revise o output para seguir a ADR
242
- - Proponha uma nova ADR para substituir a existente (requer aprovação do usuário)
81
+ **Se tudo OK:**
243
82
  ```
244
-
245
- **Falha ADRs não consultadas:**
83
+ ✅ GATE-5 — Pronto para entrega
84
+ Squad pode ser marcado como completed.
246
85
  ```
247
- ⚠️ GATE-ADR — AVISO: ADRs não referenciadas no output
248
86
 
249
- ADRs disponíveis não foram listadas pelo agent.
250
- Reexecutando step com instrução explícita de consulta às ADRs.
87
+ **Se itens pendentes (warning, não bloqueia):**
251
88
  ```
252
-
253
- **Falha — Decisão sem ADR correspondente:**
254
- ```
255
- ⚠️ GATE-ADR — AUSÊNCIA: Decisão arquitetural sem ADR
256
-
257
- O output contém decisão de alto impacto sem ADR correspondente:
258
- "{trecho da decisão}"
259
-
260
- Opções:
261
- - Crie uma nova ADR para documentar esta decisão antes de prosseguir
262
- - Use [DECISÃO PENDENTE] para aguardar aprovação do usuário
263
-
264
- Decisões que requerem ADR: escolha de framework, banco de dados, padrão arquitetural,
265
- estratégia de cache, política de autenticação, estrutura de dados principal.
89
+ ⚠️ GATE-5 — Itens pendentes detectados:
90
+ {lista}
91
+ Squad será finalizado mesmo assim.
266
92
  ```
267
93
 
268
94
  ---
269
95
 
270
- ### GATE-DESIGN Conformidade com Design System e Acessibilidade
271
-
272
- **Quando usar:** Em steps de frontend/produto que geram especificações de componente, fluxos de UI ou documentação visual. Aplicado automaticamente em steps onde o agent tem `tasks` contendo `design-system`, `component-spec` ou `ux-review`.
273
-
274
- **Verifica:**
275
- - [ ] Todos os estados de componente especificados: default, hover, focus, disabled, loading, error
276
- - [ ] Contraste de texto ≥ 4.5:1 (WCAG 2.1 AA) — valor numérico declarado no output
277
- - [ ] Estado vazio (`empty state`) documentado para listas e views de dados
278
- - [ ] Estado de erro com mensagem clara e ação de recuperação
279
- - [ ] Componentes novos justificados — existência verificada no design system antes de propor novo
280
- - [ ] Responsividade: breakpoints mobile e desktop definidos (se aplicável ao componente)
281
- - [ ] Tokens de design usados (sem valores hardcoded de cor, espaçamento ou tipografia)
282
-
283
- **Output esperado:** Seção `## Verificação GATE-DESIGN` no arquivo de spec com cada item marcado como `✅` ou `⚠️ Justificativa`.
284
-
285
- **Falha — estados faltando:**
286
- ```
287
- 🚫 GATE-DESIGN — FALHA: Estados de componente incompletos
288
-
289
- Componente(s) com estados faltando:
290
- ✗ {componente}: falta {estados ausentes}
291
-
292
- Todo componente interativo deve ter todos os 6 estados especificados.
293
- Adicione os estados antes de prosseguir.
294
- ```
295
-
296
- **Falha — contraste:**
297
- ```
298
- 🚫 GATE-DESIGN — FALHA: Contraste insuficiente ou não verificado
299
-
300
- Requisito: ≥ 4.5:1 para texto normal, ≥ 3:1 para texto grande (WCAG 2.1 AA)
301
- Pendente: {lista de elementos sem contraste declarado}
96
+ ## DECISÕES NO OUTPUT
302
97
 
303
- Declare o ratio de contraste ou ajuste as cores.
304
- ```
305
-
306
- **Falha — componente não justificado:**
307
- ```
308
- ⚠️ GATE-DESIGN — AVISO: Componente novo sem verificação de design system
98
+ Não existe mais GATE-DECISION como gate bloqueante.
309
99
 
310
- Componente(s) propostos sem verificação se existem no design system:
311
- ? {nome do componente}
100
+ Quando um agent precisar tomar uma decisão além do escopo do step, ele deve sinalizar no output com `[?]`:
312
101
 
313
- Verifique se já existe antes de propor. Se não existe, documente a justificativa.
314
102
  ```
315
-
316
- **Gate passando:**
317
- ```
318
- ✅ GATE-DESIGN — Design System e Acessibilidade: aprovado
103
+ [?] Decisão necessária: {descrição curta}
104
+ Opções: A) {opção A} B) {opção B}
105
+ Recomendação: {opção e motivo}
319
106
  ```
320
107
 
321
- ---
322
-
323
- ### GATE-5 — Entrega / Handoff
324
-
325
- **Quando usar:** Último step de qualquer pipeline antes de marcar como completed.
326
-
327
- **Verifica:**
328
- - [ ] Todos os `output_file` definidos no pipeline foram gerados em `docs/.squads/sessions/{feature-slug}/`
329
- - [ ] `state.json` marca `state.squads["{squad-slug}"].completed_steps` com todos os steps do pipeline
330
- - [ ] Não há veto_conditions pendentes
331
- - [ ] Não há `[DECISÃO PENDENTE]` não resolvida nos arquivos da session
332
-
333
- **Falha:** Liste o que está faltando. Não marque o squad como completed.
334
-
335
- ---
336
-
337
- ## GATES POR EXECUTION MODE
338
-
339
- O pipeline-runner lê `execution_mode` do squad.yaml e ativa apenas os gates correspondentes:
340
-
341
- | Gate | BOOTSTRAP | STANDARD | STRICT |
342
- |---|---|---|---|
343
- | GATE-0 | ✅ (passa com aviso) | ✅ | ✅ |
344
- | GATE-1 | ✅ | ✅ | ✅ |
345
- | GATE-2 | ❌ desativado | ✅ | ✅ |
346
- | GATE-3 | ❌ desativado | ✅ | ✅ |
347
- | GATE-4 | ❌ desativado | ❌ desativado | ✅ |
348
- | GATE-5 | ❌ desativado | ✅ | ✅ |
349
- | GATE-ADR | ❌ desativado | ✅ | ✅ |
350
- | GATE-DECISION | ✅ | ✅ | ✅ |
351
- | GATE-DESIGN | ❌ desativado | ❌ desativado | ✅ |
352
-
353
- > **GATE-1 e GATE-DECISION são universais** — ativos em todos os modos, sempre.
354
- > **GATE-DECISION nunca é desativado** — evitar decisões autônomas é princípio inegociável.
108
+ O pipeline-runner detecta `[?]` no output e apresenta ao usuário para resolução antes de prosseguir. Não reexecuta o step — apenas aguarda a escolha e continua com ela como contexto.
355
109
 
356
110
  ---
357
111
 
358
112
  ## COMO USAR NOS PIPELINES
359
113
 
360
- No `pipeline.yaml`, adicione `gate:` em um step:
361
-
362
114
  ```yaml
363
115
  steps:
364
- - id: gate-contexto
365
- name: "Validar Contexto"
116
+ - id: gate-integridade
117
+ name: "Verificar Integridade"
366
118
  execution: checkpoint
367
- gate: GATE-2
368
- # Não tem agent — é validação automática
119
+ gate: GATE-0
369
120
 
370
121
  - id: implementacao
371
122
  name: "Implementar Feature"
372
- agent: rodrigo-react
373
- depends_on: [gate-contexto]
374
- ...
375
- ```
376
-
377
- Ou como validação inline antes de continuar um step:
378
-
379
- ```yaml
380
- - id: spec-final
381
- name: "Spec Final"
382
- agent: priscila-produto
383
- gate: GATE-4 # Gate executado ANTES de aceitar o output
384
- ...
123
+ agent: backend-dev
124
+ depends_on: [gate-integridade]
125
+ gate: GATE-3
126
+ veto_conditions:
127
+ - "output sem código implementado"
385
128
  ```
386
129
 
387
130
  ---
388
131
 
389
- ## VETO CONDITIONS vs GATES
390
-
391
- | | Veto Conditions | Gates |
392
- |--|----------------|-------|
393
- | **Escopo** | Output de um step específico | Marco estrutural do pipeline |
394
- | **Foco** | Qualidade do conteúdo gerado | Existência e consistência de artefatos |
395
- | **Retentativa** | Automática (até 2x) | Bloqueia até usuário resolver |
396
- | **Exemplo** | "Output sem critérios de aceite" | "Todos os docs de handoff existem" |
397
-
398
- ---
399
-
400
- ## MENSAGENS DE GATE
132
+ ## MENSAGENS PADRÃO
401
133
 
402
134
  **Gate passando:**
403
135
  ```
404
- ✅ GATE-{N} — {nome}: aprovado
136
+ ✅ GATE-{N} — aprovado
405
137
  ```
406
138
 
407
139
  **Gate falhando:**
408
140
  ```
409
- 🚫 GATE-{N} — {nome}: FALHA
141
+ 🚫 GATE-{N} — FALHA
410
142
 
411
143
  Motivo: {descrição específica}
412
144
  Itens faltantes: