sinapse-ai 1.12.2 → 1.13.0

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.
Files changed (89) hide show
  1. package/.claude/CLAUDE.md +2 -2
  2. package/.claude/rules/agent-memory-imports.md +2 -0
  3. package/.sinapse-ai/cli/commands/pro/index.js +8 -48
  4. package/.sinapse-ai/constitution.md +6 -2
  5. package/.sinapse-ai/data/entity-registry.yaml +12 -36
  6. package/.sinapse-ai/development/agents/architect/MEMORY.md +35 -0
  7. package/.sinapse-ai/development/agents/data-engineer/MEMORY.md +38 -0
  8. package/.sinapse-ai/development/agents/developer/MEMORY.md +36 -0
  9. package/.sinapse-ai/development/agents/devops/MEMORY.md +39 -0
  10. package/.sinapse-ai/development/agents/product-lead/MEMORY.md +36 -0
  11. package/.sinapse-ai/development/agents/project-lead/MEMORY.md +36 -0
  12. package/.sinapse-ai/development/agents/quality-gate/MEMORY.md +35 -0
  13. package/.sinapse-ai/development/agents/sprint-lead/MEMORY.md +36 -0
  14. package/.sinapse-ai/development/templates/chrome-brain/knowledge-base/chrome-brain.md +2 -2
  15. package/.sinapse-ai/infrastructure/scripts/ide-sync/index.js +15 -0
  16. package/.sinapse-ai/infrastructure/scripts/validate-agents.js +159 -8
  17. package/.sinapse-ai/install-manifest.yaml +12 -148
  18. package/AGENTS.md +13 -2
  19. package/CHANGELOG.md +122 -2
  20. package/README.en.md +1 -1
  21. package/README.md +6 -26
  22. package/bin/cli.js +2 -7
  23. package/bin/commands/install.js +19 -257
  24. package/bin/commands/update.js +18 -78
  25. package/bin/lib/command-generator.js +261 -0
  26. package/bin/lib/prompts.js +2 -65
  27. package/bin/modules/chrome-brain-installer.js +2 -1
  28. package/bin/postinstall.js +6 -6
  29. package/docs/getting-started.md +0 -1
  30. package/docs/pt/getting-started.md +1 -1
  31. package/docs/security/dependabot-triage.md +17 -17
  32. package/package.json +6 -3
  33. package/packages/installer/src/wizard/i18n.js +3 -204
  34. package/packages/installer/src/wizard/index.js +1 -1
  35. package/packages/installer/src/wizard/questions.js +5 -368
  36. package/packages/installer/src/wizard/wizard.js +0 -9
  37. package/scripts/generate-install-manifest.js +6 -0
  38. package/scripts/validate-changelog-tags.js +97 -0
  39. package/scripts/validate-no-personal-leaks.js +184 -28
  40. package/scripts/validate-schemas.js +55 -10
  41. package/scripts/validate-story-meta.js +25 -12
  42. package/squads/claude-code-mastery/agents/claude-mastery-chief.md +1 -1
  43. package/squads/claude-code-mastery/agents/hooks-architect.md +12 -20
  44. package/squads/claude-code-mastery/tasks/audit-setup.md +1 -1
  45. package/squads/squad-product/agents/product-orqx.md +0 -1
  46. package/squads/squad-product/agents/ps-client-product-manager.md +0 -1
  47. package/squads/squad-product/agents/ps-delivery-manager.md +0 -1
  48. package/squads/squad-product/agents/ps-discovery-lead.md +0 -1
  49. package/squads/squad-product/agents/ps-product-analyst.md +0 -1
  50. package/squads/squad-product/agents/ps-product-ops-specialist.md +0 -1
  51. package/squads/squad-product/agents/ps-product-strategist.md +0 -1
  52. package/.sinapse-ai/core/grounding/README.md +0 -83
  53. package/.sinapse-ai/core/grounding/brand.cjs +0 -29
  54. package/.sinapse-ai/core/grounding/config-loader.cjs +0 -52
  55. package/.sinapse-ai/core/grounding/design-system.cjs +0 -29
  56. package/.sinapse-ai/core/grounding/vault.cjs +0 -36
  57. package/.sinapse-ai/development/scripts/approval-workflow.js +0 -643
  58. package/.sinapse-ai/development/scripts/backup-manager.js +0 -607
  59. package/.sinapse-ai/development/scripts/branch-manager.js +0 -390
  60. package/.sinapse-ai/development/scripts/code-quality-improver.js +0 -1329
  61. package/.sinapse-ai/development/scripts/commit-message-generator.js +0 -850
  62. package/.sinapse-ai/development/scripts/conflict-resolver.js +0 -675
  63. package/.sinapse-ai/development/scripts/dependency-analyzer.js +0 -638
  64. package/.sinapse-ai/development/scripts/diff-generator.js +0 -352
  65. package/.sinapse-ai/development/scripts/git-wrapper.js +0 -462
  66. package/.sinapse-ai/development/scripts/modification-validator.js +0 -555
  67. package/.sinapse-ai/development/scripts/performance-analyzer.js +0 -758
  68. package/.sinapse-ai/development/scripts/refactoring-suggester.js +0 -1148
  69. package/.sinapse-ai/development/scripts/rollback-handler.js +0 -531
  70. package/.sinapse-ai/development/scripts/security-checker.js +0 -359
  71. package/.sinapse-ai/development/scripts/template-engine.js +0 -240
  72. package/.sinapse-ai/development/scripts/template-validator.js +0 -279
  73. package/.sinapse-ai/development/scripts/test-generator.js +0 -844
  74. package/.sinapse-ai/development/scripts/transaction-manager.js +0 -590
  75. package/.sinapse-ai/development/scripts/yaml-validator.js +0 -397
  76. package/.sinapse-ai/hooks/sinapse-brand-grounding.cjs +0 -162
  77. package/.sinapse-ai/hooks/sinapse-ds-grounding.cjs +0 -211
  78. package/.sinapse-ai/hooks/sinapse-vault-grounding.cjs +0 -194
  79. package/bin/lib/register-grounding-hooks.js +0 -145
  80. package/docs/guides/agents/traces/execution-traces.zip +0 -0
  81. package/docs/guides/grounding-setup.md +0 -154
  82. package/docs/guides/workflows/SINAPSE-WORKFLOWS.zip +0 -0
  83. package/packages/installer/src/pro/pro-scaffolder.js +0 -449
  84. package/packages/installer/src/wizard/grounding-config.js +0 -131
  85. package/packages/installer/src/wizard/pro-setup.js +0 -1439
  86. package/packages/installer/templates/README.md +0 -16
  87. package/packages/installer/templates/brand-routing.example.json +0 -12
  88. package/packages/installer/templates/ds-routing.example.json +0 -12
  89. package/packages/installer/templates/vault-routing.example.json +0 -12
package/.claude/CLAUDE.md CHANGED
@@ -8,11 +8,11 @@ Full doc: `.sinapse-ai/constitution.md`. Gates auto-block violations.
8
8
  |------|-----------|----------|
9
9
  | I | CLI First | NON-NEGOTIABLE |
10
10
  | II | Agent Authority | NON-NEGOTIABLE |
11
- | III | Documentation-First | NON-NEGOTIABLE |
11
+ | III | Documentation-First Development | NON-NEGOTIABLE |
12
12
  | IV | No Invention | MUST |
13
13
  | V | Quality First | MUST |
14
14
  | VI | Absolute Imports | SHOULD |
15
- | VII | Metrics Accuracy | NON-NEGOTIABLE |
15
+ | VII | Ecosystem Metrics Accuracy | NON-NEGOTIABLE |
16
16
  | VIII | Mandatory Delegation | NON-NEGOTIABLE |
17
17
  | IX | Safe Collaboration | NON-NEGOTIABLE |
18
18
  | X | Security & Data Protection | NON-NEGOTIABLE |
@@ -15,3 +15,5 @@ These are the canonical locations — agents should read their memory on activat
15
15
  @import .sinapse-ai/development/agents/devops/MEMORY.md
16
16
  @import .sinapse-ai/development/agents/project-lead/MEMORY.md
17
17
  @import .sinapse-ai/development/agents/product-lead/MEMORY.md
18
+ @import .sinapse-ai/development/agents/data-engineer/MEMORY.md
19
+ @import .sinapse-ai/development/agents/sprint-lead/MEMORY.md
@@ -214,55 +214,15 @@ async function activateAction(options) {
214
214
  console.log(` Cache: ${result.cacheValidDays} days offline operation`);
215
215
  console.log('');
216
216
 
217
- // Scaffold pro content into project (Story INS-3.1)
218
- // Lazy-load to avoid crashing if pro-scaffolder or js-yaml is unavailable
219
- const projectRoot = path.resolve(__dirname, '..', '..', '..', '..');
220
- const proSourceDir = path.join(projectRoot, 'node_modules', '@sinapse-fullstack', 'pro');
221
-
222
- if (fs.existsSync(proSourceDir)) {
223
- let scaffoldProContent;
224
- try {
225
- ({ scaffoldProContent } = require('../../../../packages/installer/src/pro/pro-scaffolder'));
226
- } catch {
227
- console.log('Note: Pro scaffolder not available. Skipping content scaffolding.');
228
- console.log('');
229
- }
230
-
231
- if (scaffoldProContent) {
232
- console.log('Scaffolding pro content...');
233
- const scaffoldResult = await scaffoldProContent(projectRoot, proSourceDir, {
234
- onProgress: ({ item, status, message }) => {
235
- if (status === 'done') {
236
- console.log(` + ${message}`);
237
- } else if (status === 'warning') {
238
- console.log(` ! ${message}`);
239
- }
240
- },
241
- });
242
-
243
- if (scaffoldResult.success) {
244
- console.log(`\nPro content installed (${scaffoldResult.copiedFiles.length} files)`);
245
- if (scaffoldResult.skippedFiles.length > 0) {
246
- console.log(` ${scaffoldResult.skippedFiles.length} files unchanged (already up to date)`);
247
- }
248
- if (scaffoldResult.warnings.length > 0) {
249
- for (const warning of scaffoldResult.warnings) {
250
- console.log(` Warning: ${warning}`);
251
- }
252
- }
253
- } else {
254
- console.error('\nWarning: Pro content scaffolding failed.');
255
- for (const err of scaffoldResult.errors) {
256
- console.error(` ${err}`);
257
- }
258
- console.error('Pro features are activated but content was not copied.');
259
- console.error('Try running "sinapse pro activate" again to retry scaffolding.');
260
- }
261
- console.log('');
262
- }
263
- } else {
217
+ // Pro features are activated via the license cache above. Project content
218
+ // (squads/config) ships with the @sinapse-fullstack/pro package itself; no
219
+ // separate scaffolding step runs here.
220
+ const proSourceDir = path.resolve(
221
+ __dirname, '..', '..', '..', '..', 'node_modules', '@sinapse-fullstack', 'pro',
222
+ );
223
+ if (!fs.existsSync(proSourceDir)) {
264
224
  console.log('Note: @sinapse-fullstack/pro package not found in node_modules.');
265
- console.log('Pro content will be scaffolded when the package is installed.');
225
+ console.log('Install it to access Pro content: npm install @sinapse-fullstack/pro');
266
226
  console.log('');
267
227
  }
268
228
 
@@ -78,6 +78,8 @@ User briefing → @sprint-lead *draft → @product-lead *validate → @developer
78
78
 
79
79
  **Gate:** `dev-develop-story.md` - BLOCK se não houver story válida com status >= Ready
80
80
 
81
+ > **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.
82
+
81
83
  **Rule file:** `.claude/rules/documentation-first.md`
82
84
 
83
85
  ---
@@ -108,7 +110,7 @@ Qualidade não é negociável. Todo código passa por múltiplos gates antes de
108
110
  - MUST: `npm run lint` passa sem erros
109
111
  - MUST: `npm run typecheck` passa sem erros
110
112
  - MUST: `npm test` passa sem falhas
111
- - MUST: `npm run build` completa com sucesso
113
+ - 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)
112
114
  - MUST: CodeRabbit não reporta issues CRITICAL
113
115
  - MUST: Story status é "Done" ou "Ready for Review"
114
116
  - SHOULD: Cobertura de testes não diminui
@@ -242,6 +244,8 @@ Usuários são product builders, não especialistas em git. Agentes DEVEM gerenc
242
244
 
243
245
  **Gate:** Hook `enforce-git-push-authority.sh` + branch protection no GitHub
244
246
 
247
+ > **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.
248
+
245
249
  **Rule file:** `.claude/rules/safe-collaboration.md`
246
250
 
247
251
  ---
@@ -283,7 +287,7 @@ Todo projeto que manipula dados de usuarios DEVE seguir praticas de seguranca ri
283
287
 
284
288
  **Regras — Repositorio:**
285
289
  - MUST: Repositorios com codigo de producao DEVEM ser privados por padrao
286
- - MUST: Branch protection DEVE estar ativa em main (PR + approval)
290
+ - 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")
287
291
  - MUST: GitHub Secret Scanning DEVE estar habilitado
288
292
  - MUST: Dependabot DEVE estar configurado para alertas de seguranca
289
293
  - MUST: CODEOWNERS DEVE proteger arquivos criticos
@@ -1,7 +1,7 @@
1
1
  metadata:
2
2
  version: 1.0.0
3
- lastUpdated: '2026-06-21T05:24:05.999Z'
4
- entityCount: 811
3
+ lastUpdated: '2026-06-22T02:41:18.583Z'
4
+ entityCount: 810
5
5
  checksumAlgorithm: sha256
6
6
  resolutionRate: 100
7
7
  entities:
@@ -40,8 +40,8 @@ entities:
40
40
  score: 0.7
41
41
  constraints: []
42
42
  extensionPoints: []
43
- checksum: sha256:52b9f4351e951350c5658bb036f49974df7bc3a5e0fdc7b5f8866c880f932d80
44
- lastVerified: '2026-06-16T17:13:38.673Z'
43
+ checksum: sha256:68c4b6ad0d9eb7a32985daf5b654bd4e2921880b9889df91be2b7e2c813c77f7
44
+ lastVerified: '2026-06-22T02:41:18.145Z'
45
45
  agents:
46
46
  path: bin/commands/agents.js
47
47
  layer: L1
@@ -154,7 +154,6 @@ entities:
154
154
  - prompts
155
155
  - uninstall
156
156
  - status
157
- - register-grounding-hooks
158
157
  - chrome-brain-installer
159
158
  externalDeps: []
160
159
  plannedDeps:
@@ -164,8 +163,8 @@ entities:
164
163
  score: 0.7
165
164
  constraints: []
166
165
  extensionPoints: []
167
- checksum: sha256:e543d49945bc13d49cfe0d4edced86866a84aff7725a77bc4b946dfbde10c3ee
168
- lastVerified: '2026-06-21T05:24:05.620Z'
166
+ checksum: sha256:a8708eb5d5f59170ff51fcf5488c85b62815add902865fa4be188a7a54fedcdd
167
+ lastVerified: '2026-06-22T02:41:18.150Z'
169
168
  local:
170
169
  path: bin/commands/local.js
171
170
  layer: L1
@@ -257,7 +256,6 @@ entities:
257
256
  - detection
258
257
  - prompts
259
258
  - install
260
- - register-grounding-hooks
261
259
  externalDeps: []
262
260
  plannedDeps:
263
261
  - logger
@@ -266,8 +264,8 @@ entities:
266
264
  score: 0.7
267
265
  constraints: []
268
266
  extensionPoints: []
269
- checksum: sha256:83ebc6f5e09807dfe8c3da2d56c5c309b1d06dbeb7712d143c575d300199cb77
270
- lastVerified: '2026-06-16T06:09:14.627Z'
267
+ checksum: sha256:a6b1105e9f8d3c452955377afcfb0d2d70e0a3e358e343389490891e4ff4f10e
268
+ lastVerified: '2026-06-22T02:41:18.151Z'
271
269
  constants:
272
270
  path: bin/lib/constants.js
273
271
  layer: L1
@@ -402,30 +400,8 @@ entities:
402
400
  score: 0.7
403
401
  constraints: []
404
402
  extensionPoints: []
405
- checksum: sha256:ad4190251d492e0f970131f36abc9b289f64e04e1f1440bc9fd20681a5dd9831
406
- lastVerified: '2026-06-15T01:36:42.609Z'
407
- register-grounding-hooks:
408
- path: bin/lib/register-grounding-hooks.js
409
- layer: L1
410
- type: script
411
- purpose: Entity at bin\lib\register-grounding-hooks.js
412
- keywords:
413
- - register
414
- - grounding
415
- - hooks
416
- usedBy:
417
- - install
418
- - update
419
- dependencies: []
420
- externalDeps: []
421
- plannedDeps: []
422
- lifecycle: production
423
- adaptability:
424
- score: 0.7
425
- constraints: []
426
- extensionPoints: []
427
- checksum: sha256:0856daf29e660ededff840173ba939b38967f525d1271635a671710d28de4e35
428
- lastVerified: '2026-06-15T01:36:42.609Z'
403
+ checksum: sha256:dc7cc1109f2bbdb7b3c5927df0de2418925842bdacdc0ba82815bfa2783d0b42
404
+ lastVerified: '2026-06-22T02:41:18.152Z'
429
405
  setup-statusline:
430
406
  path: bin/lib/setup-statusline.js
431
407
  layer: L1
@@ -547,8 +523,8 @@ entities:
547
523
  score: 0.7
548
524
  constraints: []
549
525
  extensionPoints: []
550
- checksum: sha256:415f472e5ff5d61950e00e2bc9023c94476c49099fc8faaeed44ea309b77ccae
551
- lastVerified: '2026-06-21T05:24:05.625Z'
526
+ checksum: sha256:5b4f06a8c4eef9be52f5b13545f992403031aa58a8a62ce2454015f98cb1156f
527
+ lastVerified: '2026-06-22T02:41:18.155Z'
552
528
  sinapse-delegate:
553
529
  path: bin/sinapse-delegate.js
554
530
  layer: L1
@@ -37,3 +37,38 @@
37
37
  ## Archived
38
38
  <!-- Patterns no longer relevant — kept for history -->
39
39
  <!-- Format: - ~~{pattern}~~ | Archived: {YYYY-MM-DD} | Reason: {reason} -->
40
+
41
+ ## Municao: Engenharia de Software (kit Fase 4)
42
+
43
+ Fonte completa: `engenharia-software/fase-4-agents/` (KIT-architect, KIT-orquestrador, KIT-fundamentos-transversal) — repo github `caioimori/engenharia-de-software`. Esta secao e o destilado; consulte o kit pro detalhe.
44
+
45
+ ### Principios nao-negociaveis
46
+ - **Tudo e trade-off (First Law).** Nunca "o melhor X"; sempre "X paga seu custo NESTE contexto porque..." (Richards & Ford, *Fundamentals of Software Architecture*).
47
+ - **ASRs dirigem a estrutura, nao moda.** Top 3-7 atributos de qualidade, cada um como cenario mensuravel com SLO numerico (Bass/Clements/Kazman, SEI).
48
+ - **Fronteira e linguistica (bounded context), nunca camada tecnica.** Mudanca de linguagem = boundary; duplicata de evento e pista, nao erro (Evans + Brandolini/EventStorming).
49
+ - **Dependency Rule: dominio puro no nucleo;** DB/UI/framework/MCP/LLM sao detalhes na borda (R.C. Martin, *Clean Architecture*).
50
+ - **Monolito modular primeiro;** distribua so o quantum com deploy/escala/time independentes + DevOps maduro — senao = distributed monolith (Newman, *Building Microservices*).
51
+ - **Eventual por padrao em distribuido; ACID dentro do bounded context.** Outbox nunca dual-write; saga + compensacao + idempotencia; nunca 2PC default (*The Hard Parts*).
52
+ - **Toda integracao externa:** timeout + circuit breaker + fallback; ACL valida output de LLM/API (Nygard, *Release It!*).
53
+ - **ADR imutavel com consequencias NEGATIVAS + opcoes rejeitadas;** supersede, nunca edita (Nygard / MADR 4.0.0).
54
+ - **Atributo critico vira fitness function no CI** (rules live in code) — Ford/Parsons/Kua, *Building Evolutionary Architectures*.
55
+ - **Conway como design ativo:** topologia ANTES do enxame; carga cognitiva e o limite de fronteira; estrela nao malha (n(n-1)/2 persiste em tokens) — Conway + Skelton & Pais, *Team Topologies*.
56
+ - **Agente = bounded context = interpretador eval/apply** sob leis de complexidade; delegue a algoritmo deterministico o que e exato e barato (Evans DDD Europe 2025 + SICP/CLRS).
57
+
58
+ ### Gates verificaveis (antes de Done)
59
+ - [ ] Cynefin classificado (campo `complexity:` no artefato de decisao).
60
+ - [ ] Cada boundary mapeia a um bounded context nomeado; zero fronteira por camada tecnica.
61
+ - [ ] Monolito x distribuido justificado por ADR (quantum + DevOps maduro) ou default monolito.
62
+ - [ ] ADR completo: Context, Options (incl. rejeitadas), Decision, Consequences com >=1 "Ruim:".
63
+ - [ ] Cada ASR com `response measure`/SLO numerico (regex de unidade: ms, %, p\d+, req/s).
64
+ - [ ] Dependency Rule verde no arch-linter (ArchUnit/dependency-cruiser); sem ciclos (`madge --circular` = 0).
65
+ - [ ] 1 transacao = 1 agregado; refs entre agregados por ID.
66
+ - [ ] Domain Events em PascalCase de negocio; zero "EntityUpdated"/"XxxChanged".
67
+ - [ ] ACL presente em toda chamada externa (API/MCP/LLM); domain primitives validados por construcao.
68
+ - [ ] Toda chamada externa com timeout + circuit breaker + fallback; write+publish via outbox; handlers idempotentes.
69
+ - [ ] Fitness functions poucas, de alto sinal, verdes no CI; PR que muda boundary inclui ADR novo.
70
+ - [ ] Fio de rastreabilidade intacto: outcome -> requisito(+fit criterion) -> ASR -> bounded context -> estilo -> ADR -> fitness function -> SLO.
71
+ - [ ] (squad) Sem overlap de escopo entre agents; nao-stream-aligned < ~15%; handoff = contrato versionado valido; zero codinome/@agent/path interno no texto user-facing.
72
+
73
+ ### Loop operacional
74
+ Loop mestre: Cynefin -> Entender(outcome+ASR) -> Modelar(bounded context) -> Escolher(estilo por trade-off) -> Avaliar(sensitivity/tradeoff points) -> Registrar(ADR) -> Proteger(fitness function) -> Validar(CI); cada gate bloqueia, loop evolutivo reentra quando o negocio muda. Detalhe + diagramas mermaid (L1-L7 e Loop mestre): `LOOPS-design-arquitetura-diagramas.md` e, pra squads, `LOOPS-onda-7-processo-pessoas-diagramas.md` (B1-B6).
@@ -31,3 +31,41 @@
31
31
  <!-- Patterns no longer relevant — kept for history -->
32
32
  <!-- Format: - ~~{pattern}~~ | Archived: {YYYY-MM-DD} | Reason: {reason} -->
33
33
 
34
+ ## Municao: Engenharia de Software (kit Fase 4)
35
+
36
+ Fonte completa: `engenharia-software/fase-4-agents/KIT-data-engineer.md` (repo github caioimori/engenharia-de-software). Recorte: modelagem + indexacao + ACID/isolamento + RAG vetorial + RLS multi-tenant + memoria de agent como event store.
37
+
38
+ ### Principios nao-negociaveis
39
+ - Independencia de dados: manipule relacoes declarativamente; o sistema decide storage/indice/caminho de acesso (Codd 1970).
40
+ - ACID e contrato e cada letra custa; "C" (invariantes) e da aplicacao via constraint, nao do banco (Gray & Reuter; Kleppmann DDIA cap.7).
41
+ - Isolamento e matriz anomalia x nivel, nao escada: SI e RR sao incomparaveis. Escolha o MENOR nivel que evita as anomalias relevantes (Berenson et al. 1995).
42
+ - Os nomes do nivel mentem ("REPEATABLE READ" do Postgres = snapshot isolation) — verifique, nao assuma (Jepsen PostgreSQL).
43
+ - Write skew (invariante de conjunto sob SI) exige protecao explicita: SSI, `FOR UPDATE` ou constraint (Ports & Grittner 2012 SSI).
44
+ - Durabilidade vem do log (WAL antes do dado); COMMIT = fsync do registro de commit (Mohan et al. 1992, ARIES).
45
+ - Modele pelas queries reais: BCNF por padrao, desnormaliza so com medicao; indexa colunas reais de WHERE/JOIN/ORDER BY (Ramakrishnan/Gehrke).
46
+ - Cardinalidade domina o plano; `EXPLAIN ANALYZE` (plano real) e o arbitro (Leis et al., Join Order Benchmark).
47
+ - Idempotencia via unique constraint + upsert em todo efeito colateral; exactly-once nao existe = at-least-once + idempotencia (Stripe/Brandur).
48
+ - Memoria de agent = event store append-only + projecoes (CQRS); historico nunca sobrescrito. Isolamento por tenant via RLS. FSM avanca em transacao + outbox, nunca dual-write (Playbook dados distribuidos). PostgreSQL e default racional — sair dele exige necessidade medida.
49
+
50
+ ### Gates verificaveis (antes de Done)
51
+ - [ ] PK/FK declaradas em toda tabela/relacao (`information_schema.table_constraints`, zero faltando).
52
+ - [ ] Unique constraint em toda chave de idempotencia/dedup.
53
+ - [ ] Sem over-indexing: nenhum indice maduro com `idx_scan = 0` (`pg_stat_user_indexes`).
54
+ - [ ] Cada `BEGIN` com nivel de isolamento explicito e justificado (menor que evita as anomalias).
55
+ - [ ] Write skew coberto: teste de concorrencia (duas txns paralelas) prova que o invariante nunca quebra.
56
+ - [ ] Retry de `serialization_failure` (SQLSTATE 40001) com backoff nas txns serializable.
57
+ - [ ] Transacoes curtas: nenhuma chamada de rede (HTTP/LLM) dentro de `BEGIN/COMMIT`.
58
+ - [ ] `EXPLAIN ANALYZE` confirma `Index Scan` nas queries quentes (sem `Seq Scan` inesperado).
59
+ - [ ] Zero N+1; keyset pagination (seek), nao `OFFSET` grande; sem `SELECT *` / result set sem LIMIT em caminho quente.
60
+ - [ ] Migrations versionadas e reversiveis (`up`+`down`); backfill em lotes.
61
+ - [ ] Backup + PITR com restore TESTADO (durabilidade nao testada nao existe).
62
+ - [ ] RAG: filtro hibrido no banco com teste de vazamento cross-tenant = zero; recall@k real medido acima do limiar.
63
+ - [ ] Idempotencia de tool mutante: mesma key 3x = efeito externo 1x (teste de integracao).
64
+ - [ ] Event store append-only: replay reconstroi estado identico (teste de replay).
65
+ - [ ] RLS ativo: query sem `tenant_id` correto retorna zero linhas (teste tenant A x B).
66
+ - [ ] FSM + outbox sem dual-write: crash injetado entre escrita e publicacao nao perde evento.
67
+ - [ ] ADR registrado pra toda escolha estrutural (engine, isolamento padrao, indice vetorial).
68
+
69
+ ### Loop operacional
70
+ Entender (queries reais + invariantes) -> Modelar (BCNF, PK/FK, unique) -> Isolar (menor nivel; write skew -> SSI/lock + retry 40001) -> Indexar -> Provar (`EXPLAIN ANALYZE`, matar N+1) -> Migrar (versionada/reversivel) -> Especializar (RAG/event store/RLS/outbox) -> Verificar (rodar TODOS os gates ate verde) -> Registrar ADR + handoff (push/PR exclusivo do @devops). Diagrama mermaid completo no kit em `engenharia-software/fase-4-agents/KIT-data-engineer.md`.
71
+
@@ -45,3 +45,39 @@
45
45
  <!-- Patterns no longer relevant — kept for history -->
46
46
  <!-- Format: - ~~{pattern}~~ | Archived: {YYYY-MM-DD} | Reason: {reason} -->
47
47
 
48
+ ## Municao: Engenharia de Software (kit Fase 4)
49
+
50
+ > Fonte: kits completos em `engenharia-software/fase-4-agents/` (KIT-developer + KIT-fundamentos-transversal), repo github `caioimori/engenharia-de-software`. Aqui so o essencial — consulte o kit pro detalhe.
51
+
52
+ ### Principios nao-negociaveis
53
+ - **Codigo e AST, nao string.** Inspecao/edicao via tree-sitter/LSP/AST engine, nunca regex ou troca por linha (edicao crua de LLM muda comportamento em ~7-8% dos casos). (Nystrom *Crafting Interpreters* / CODESTRUCT)
54
+ - **Nenhuma mudanca sem rede verde.** Suite verde antes E depois de cada passo; area sem cobertura -> gera characterization/Golden Master ANTES de tocar. (Feathers *WELC* / Beck)
55
+ - **Smell nomeado antes de refatorar.** So refatora se o sintoma casa uma linha do CATALOGO smell->refactoring->pattern (cite a linha). Sem smell, nao mexe. (Fowler/Martin)
56
+ - **Two Hats.** Cada commit e SO refatoracao OU SO feature, jamais ambos. (Fowler *Refactoring* 2ª ed.)
57
+ - **Passo atomico + reversao.** Um passo por vez; vermelho -> reverte e reduz (nunca empilha quebra). Mudanca grande -> Mikado. (Beck / Mikado Method)
58
+ - **Complexidade cognitiva e o juiz, nao linhas.** Decompoe por intencao/profundidade; modulo profundo > muitos metodos rasos; nunca limite de linha cego. (Ousterhout *APoSD* / SonarSource)
59
+ - **Pattern so com variacao concreta HOJE e abstracao deep (YAGNI).** Prefira idioma mais barato (funcao > classe). (Kerievsky / GoF / Norvig)
60
+ - **Mock so de dependencia out-of-process compartilhada.** Dor no teste = sinal de design, nao desculpa pra mockar. Qualidade = mutation score, nao cobertura de linha. (Khorikov / PIT / Stryker)
61
+ - **Nunca reescreve do zero em codigo com usuarios** -> Strangler Fig / Branch by Abstraction. (Fowler)
62
+ - **Agente = interpretador eval/apply.** Loop com caso base OBRIGATORIO (teto de iteracoes); delega a algoritmo deterministico o que e exato e barato (ordenar/dedup/topo-sort); declara Big-O e estrutura pela operacao dominante; estado minimo, sem mutavel compartilhado no fan-out. (SICP / CLRS / Out of the Tar Pit)
63
+
64
+ ### Gates verificaveis (antes de Done)
65
+ - [ ] Suite verde (pre E pos cada passo) — `npm test` exit 0
66
+ - [ ] Characterization/Golden Master existe em area legada tocada
67
+ - [ ] Behavior diff vazio (Golden Master byte-a-byte) apos refatoracao
68
+ - [ ] Edicao AST-safe — arquivo parseia valido apos Rename/Move/Extract
69
+ - [ ] Complexidade cognitiva <= 15 por funcao (sonarjs / ruff C901 / clippy)
70
+ - [ ] Aninhamento <= 3 niveis (eslint max-depth)
71
+ - [ ] Smell nomeado — refatoracao cita linha do CATALOGO
72
+ - [ ] Two Hats no commit — sem misturar refactor + teste de comportamento novo
73
+ - [ ] Mutation score incremental >= threshold no diff (Stryker / PIT / cargo-mutants)
74
+ - [ ] Anti-overengineering — nenhuma interface de 1 impl especulativa, nenhum Singleton mutavel global
75
+ - [ ] Output sintaticamente valido (codegen/DSL) — grammar-constrained + typecheck exit 0
76
+ - [ ] 100% das tool-calls validadas por schema/gramatica antes de executar
77
+ - [ ] Caso base alcancavel no loop (teto de iteracoes assertado)
78
+ - [ ] Flakiness < 1% (suite rodada N vezes)
79
+ - [ ] ADR registrado pra decisao de design nao-trivial
80
+
81
+ ### Loop operacional
82
+ Entender (legado -> characterizar) -> design barato (comentario de interface antes) -> teste que falha pela razao certa -> implementacao minima que passa -> refatorar com rede (smell->refactoring->pattern, passos atomicos AST) -> gate de qualidade -> Done. Nunca avance com a barra vermelha. Diagramas L1-L12 + loop mestre em `LOOPS-craftsmanship-diagramas.md` (e `LOOPS-onda-6-fundamentos-linguagens-diagramas` pro eval/apply).
83
+
@@ -38,3 +38,42 @@
38
38
  <!-- Patterns no longer relevant — kept for history -->
39
39
  <!-- Format: - ~~{pattern}~~ | Archived: {YYYY-MM-DD} | Reason: {reason} -->
40
40
 
41
+ ## Municao: Engenharia de Software (kit Fase 4)
42
+
43
+ Kit completo em `engenharia-software/fase-4-agents/KIT-devops-sre.md` (repo github caioimori/engenharia-de-software). Padrao encarnado: DORA Elite + Google SRE — velocidade COM estabilidade. Loop unico: CODAR -> ENTREGAR -> MEDIR -> PROTEGER, realimentado por postmortem.
44
+
45
+ ### Principios nao-negociaveis
46
+ - **Build once, promote everywhere** — um artefato versionado (hash identico) atravessa todos os ambientes; nunca rebuild por ambiente. (Humble & Farley, *Continuous Delivery*)
47
+ - **Batch pequeno + trunk-based** — branch < 1 dia, integracao >= diaria; lotes pequenos = falhas baratas de reverter (mais critico sob codigo de IA). (Accelerate / DORA)
48
+ - **Testes/scans sao gate, nao sugestao** — "pronto" = CI verde objetivo, nunca auto-avaliacao do LLM; suite vermelha bloqueia tudo. (*Continuous Delivery*)
49
+ - **Error budget governa o ritmo** — orcamento ok -> acelera; estourou -> feature freeze (so P0/security). (Google SRE Book)
50
+ - **SLO por Critical User Journey** — SLI = good_events/valid_events; latencia de sucesso separada da de erro. (SRE Workbook)
51
+ - **Todo integration point nasce resiliente** — timeout finito + bulkhead + backoff com jitter (so se idempotente) + cap/retry-budget + idempotency key + backpressure + graceful degradation. Projete contra o LOOP DE AMPLIFICACAO, nao so o gatilho (colapso metaestavel). (Nygard *Release It!* / Bronson-Huang)
52
+ - **A cauda manda** — em fan-out otimize p99/p999, nao a media; hedged request quando p95 estoura. (Dean & Barroso *Tail at Scale*)
53
+ - **Meca antes de otimizar** — USE + drill-down (top->iostat->/proc/meminfo->dmesg, flame graph), classifique memory-bound vs compute-bound; nunca chute "vamos paralelizar". (Brendan Gregg *Systems Performance*)
54
+ - **Durabilidade = fsync, nao write**; least privilege na execucao (seccomp+cgroups+drop caps, nunca root no host, io_uring bloqueado em sandbox hostil). (OSTEP / Saltzer-Schroeder)
55
+ - **Supply chain e gate de 1a classe** — SBOM + assinatura Sigstore + provenance SLSA>=L2, verificado na admissao. (SLSA v1.1 / NIST SSDF)
56
+ - **Postmortem blameless, causas multiplas** -> backlog + atualiza threat model; mitigar antes de diagnosticar. (Cook / SRE Book)
57
+ - **Human-in-the-loop para acao destrutiva** (push --force, delete, deploy prod). (espelha safe-collaboration.md)
58
+
59
+ ### Gates verificaveis (antes de Done)
60
+ - [ ] Branch curto (< 24h, sem long-lived) — `git log`/`git branch -a`
61
+ - [ ] Codigo incompleto atras de feature flag com kill switch (grep confirma flag-guard)
62
+ - [ ] Build-once: hash SHA-256 do artefato identico entre estagios
63
+ - [ ] CI verde: exit 0 em build+unit+lint+type-check+secret scan+dep scan
64
+ - [ ] Suite de testes verde (runner retorna 0 falhas)
65
+ - [ ] Complexidade cognitiva <= 15 por funcao (linter)
66
+ - [ ] Mutation score >= threshold (mutmut/stryker/PIT)
67
+ - [ ] SCA: 0 CVE critico aberto (Trivy/Grype/Snyk)
68
+ - [ ] Secret scan limpo (gitleaks/trufflehog); `.env` real nunca staged
69
+ - [ ] Artefato assinado + SBOM + provenance: `cosign verify` ok, SLSA>=L2
70
+ - [ ] Migration breaking via expand->contract; rollback de schema testado
71
+ - [ ] Deploy progressivo (canary 1-5% + ACA) com rollback amarrado ao SLO; abort automatico fora do budget
72
+ - [ ] DORA 4 keys medidas (deploy freq, lead time, CFR, MTTR) com numero, nao estimativa
73
+ - [ ] Burn-rate multi-janela configurado (14,4x / 6x / 1x); golden signals instrumentados
74
+ - [ ] Triade de estabilidade + idempotency testada em todo integration point; RPO/RTO + restore real testado
75
+ - [ ] (Agents) Eval gate (LLM-as-judge) + canary 5% antes de 100%; cap de iteracoes/retry budget no orquestrador
76
+
77
+ ### Loop operacional
78
+ CODAR (integrar pequeno, testavel, seguro, atras de flag) -> ENTREGAR (pipeline com gates + canary/rollback) -> MEDIR (DORA + SLO + wide events) -> PROTEGER (triade de estabilidade + blast radius); postmortem blameless realimenta o threat model e o error budget governa o ritmo. Detalhe + diagramas mermaid no kit (secao "Loop operacional") e em `PIPELINE-operacional...` / `PLAYBOOK-performance-execucao`.
79
+
@@ -43,3 +43,39 @@
43
43
  ## Archived
44
44
  <!-- Patterns no longer relevant — kept for history -->
45
45
  <!-- Format: - ~~{pattern}~~ | Archived: {YYYY-MM-DD} | Reason: {reason} -->
46
+
47
+ ## Municao: Engenharia de Software (kit Fase 4)
48
+
49
+ Fonte completa: kit `KIT-product-sprint.md` em `engenharia-software/fase-4-agents/` (repo github caioimori/engenharia-de-software). Destila o essencial; consultar o kit pro detalhe.
50
+
51
+ ### Principios nao-negociaveis
52
+ - **Outcome over output** — todo "so that" e resultado mensuravel, nunca tarefa/feature; roadmap = problemas/outcomes, nao lista de entregas (Perri *Escaping the Build Trap* / Cagan *Inspired*).
53
+ - **Lote pequeno e lei nuclear** — reduzir tamanho do lote corta custo, risco e lead time juntos (Reinertsen *Product Development Flow*).
54
+ - **Slice vertical por outcome** — walking skeleton end-to-end ANTES de qualquer feature horizontal; nunca fatiar por camada tecnica (Patton *User Story Mapping*).
55
+ - **Requisito = exemplo = teste** — key examples concretos com contra-exemplo e edge case (Adzic *Specification by Example* / Example Mapping).
56
+ - **Sem fit criterion, e opiniao** — todo requisito/NFR tem medida objetiva quantificada (Robertson/Volere).
57
+ - **Story passa INVEST + 3C** — 3C = Card/Conversation/Confirmation (estrutura); INVEST = qualidade (Jeffries / Wake).
58
+ - **Limitar WIP, nao maximizar ocupacao** — WIP = Throughput x Cycle Time (Lei de Little); lead time ∝ 1/(1−ρ) (Little/Vacanti / Reinertsen).
59
+ - **MVP = experimento** — hipotese + actionable metric + pivot-or-persevere; cada fatia e um giro de Build-Measure-Learn (Ries *Lean Startup*).
60
+ - **Forecast probabilistico** — "X% de chance ate Y" via throughput/Monte Carlo; nunca data-compromisso, nunca velocity como meta (Vacanti / Goodhart).
61
+ - **Cerimonia calibrada por risco (Cynefin + Boehm-Turner)** — bug fix = YOLO; epic multi-story = pipeline completo.
62
+
63
+ ### Gates verificaveis (antes de Done)
64
+ - [ ] "so that" e outcome mensuravel, nao verbo de implementacao
65
+ - [ ] Fit criterion presente e quantificado (NFR sem numero = FAIL)
66
+ - [ ] >=1 key example Given/When/Then + >=1 contra-exemplo/edge case
67
+ - [ ] INVEST completo (I-N-V-E-S-T item a item)
68
+ - [ ] 3C presentes (Card + Conversation registrada + Confirmation = AC escritos)
69
+ - [ ] Rastreavel feature -> story -> exemplo -> teste
70
+ - [ ] Cabe num lote pequeno (Small); senao split via SPIDR
71
+ - [ ] Fatiada por outcome end-to-end, nao "so backend"/"so frontend"
72
+ - [ ] Walking skeleton existe e veio primeiro
73
+ - [ ] WIP limitado por coluna respeitado (max 1 InProgress por executor)
74
+ - [ ] PR/diff > 400 linhas dispara warning e split
75
+ - [ ] 5 premissas da Lei de Little checadas antes de confiar em cycle time/throughput
76
+ - [ ] Forecast em formato probabilistico (data pontual = FAIL)
77
+ - [ ] DoD por coluna verde antes de avancar status (jidoka/stop-the-line)
78
+ - [ ] WSJF (CoD ÷ Job Size) registrado pro sequenciamento; ordem por HiPPO = FAIL
79
+
80
+ ### Loop operacional
81
+ Classificar (Cynefin/risco) -> Descobrir (OST, >=3 solucoes) -> Mapear (Story Map + walking skeleton) -> Fatiar vertical (SPIDR) -> Refinar (Example Mapping <30min) -> Gate A+B -> Ready -> Pull sob WIP -> Implementar lote pequeno -> DoD jidoka -> Measure -> pivot-or-persevere -> Forecast -> Retro/kaizen. Diagrama mermaid completo na secao "## Loop operacional" do kit.
@@ -37,3 +37,39 @@
37
37
  <!-- Patterns no longer relevant — kept for history -->
38
38
  <!-- Format: - ~~{pattern}~~ | Archived: {YYYY-MM-DD} | Reason: {reason} -->
39
39
 
40
+ ## Municao: Engenharia de Software (kit Fase 4)
41
+
42
+ Fonte completa: kit `KIT-product-sprint.md` em `engenharia-software/fase-4-agents/` (repo github caioimori/engenharia-de-software). Carregar pra detalhe; aqui so o essencial.
43
+
44
+ ### Principios nao-negociaveis
45
+ - **Outcome over output** — todo "so that" e resultado mensuravel, nunca tarefa/feature; roadmap = problemas/outcomes (Perri *Escaping the Build Trap* / Cagan *Inspired*).
46
+ - **Lote pequeno e lei nuclear** — reduzir o lote corta custo, risco, variabilidade e lead time de uma vez (Reinertsen *Product Development Flow*).
47
+ - **Slice vertical por outcome** — walking skeleton end-to-end ANTES de qualquer feature horizontal; quebrar com SPIDR (Patton *User Story Mapping* / Cohn).
48
+ - **Requisito = exemplo = teste** — criterio de aceite sao key examples concretos com contra-exemplo e edge case (Adzic *Specification by Example* / Example Mapping).
49
+ - **Sem fit criterion, e opiniao** — todo requisito (esp. NFR) tem medida objetiva quantificada (Robertson/Volere).
50
+ - **Story passa INVEST + 3C** — 3C = Card/Conversation/Confirmation (estrutura); INVEST = qualidade (Jeffries / Wake).
51
+ - **Limitar WIP, nao ocupacao** — WIP = Throughput x Cycle Time (Lei de Little); lead time ∝ 1/(1−ρ), 100% ocupacao explode (Reinertsen / Vacanti).
52
+ - **MVP = experimento** — hipotese + actionable metric + pivot-or-persevere; cada fatia = giro de Build-Measure-Learn (Ries *Lean Startup*).
53
+ - **Forecast probabilistico** — "X% de chance ate Y" via throughput/Monte Carlo; velocity NUNCA como meta, nem individual (Vacanti / Goodhart).
54
+ - **Cerimonia calibrada por risco** — Cynefin + Boehm-Turner (Size/Criticality/Dynamism/Personnel/Culture): bug fix = YOLO, epic = pipeline.
55
+
56
+ ### Gates verificaveis (antes de Done)
57
+ - [ ] "so that" e outcome mensuravel, nao verbo de implementacao
58
+ - [ ] fit criterion presente e quantificado (NFR sem numero = FAIL)
59
+ - [ ] >=1 key example Given/When/Then + >=1 contra-exemplo/edge case
60
+ - [ ] INVEST completo (cada item marcado)
61
+ - [ ] 3C presentes (Card + Conversation registrada + Confirmation)
62
+ - [ ] rastreavel feature->story->exemplo->teste
63
+ - [ ] cabe num lote pequeno (Small); senao split por SPIDR
64
+ - [ ] fatiada vertical por outcome (rejeita "so backend"/"so frontend")
65
+ - [ ] walking skeleton existe e veio primeiro
66
+ - [ ] WIP por coluna respeitado (max 1 InProgress por executor)
67
+ - [ ] PR/diff > 400 linhas dispara split
68
+ - [ ] 5 premissas da Lei de Little checadas antes de confiar em cycle time/throughput
69
+ - [ ] forecast em formato probabilistico (data pontual-compromisso = FAIL)
70
+ - [ ] DoD por coluna verde (jidoka/stop-the-line) antes de avancar status
71
+ - [ ] WSJF (`CoD ÷ Job Size`) registrado pra sequenciamento; ordem por HiPPO = FAIL
72
+
73
+ ### Loop operacional
74
+ Classificar (Cynefin) -> descobrir (OST, >=3 solucoes, testar assumption mais arriscada) -> mapear (Story Map) -> fatiar vertical (SPIDR) -> refinar (Example Mapping <30min) -> Gate A+B (Ready) -> puxar sob WIP -> implementar lote pequeno -> DoD jidoka -> medir actionable metric -> pivot-or-persevere -> forecast Monte Carlo -> retro (kaizen + OST + CFD). Diagrama mermaid completo na secao "## Loop operacional" do kit.
75
+
@@ -41,3 +41,38 @@
41
41
  <!-- Patterns no longer relevant — kept for history -->
42
42
  <!-- Format: - ~~{pattern}~~ | Archived: {YYYY-MM-DD} | Reason: {reason} -->
43
43
 
44
+ ## Munição: Engenharia de Software (kit Fase 4)
45
+
46
+ Fonte: kit completo em `engenharia-software/fase-4-agents/KIT-quality-gate.md` (repo github caioimori/engenharia-de-software). Consolida testes/TDD + segurança/threat-model. Regra de ouro: todo princípio que pode virar gate, virou gate. Verdict sempre amarrado a evidência de ferramenta — nunca "parece bom".
47
+
48
+ ### Princípios não-negociáveis
49
+ - Cobertura ≠ qualidade; o sinal honesto é mutation score incremental no diff (DeMillo/Lipton/Sayward; PIT/Stryker).
50
+ - Teste comportamento observável, nunca implementação — resistência à refatoração é binária (Khorikov, *Unit Testing* 2020).
51
+ - Só mocke dependência out-of-process compartilhada/mutável; nunca interna nem privada (Khorikov; Google/Thoughtworks).
52
+ - 4 pilares: fixe resistência+manutenibilidade, negocie proteção×velocidade (Khorikov 2020).
53
+ - Determinismo é lei: relógio/aleatório/I/O injetados; flakiness > 1% destrói a suíte (*SWE at Google*).
54
+ - Pirâmide por size de recurso (~80/15/5), não por nome de camada (Cohn; *SWE at Google*).
55
+ - Legacy = código sem teste → characterization test antes de tocar (Feathers, *WELC* 2004).
56
+ - Suíte verde é pré-condição de merge, não conquista (Beck, *TDD by Example*).
57
+ - Toda saída do LLM é input não confiável — valida contra schema/allow-list (OWASP LLM05/2025).
58
+ - Cada ameaça → mitigação → teste → gate; prompt injection se resolve por contenção, não filtro (Shostack/STRIDE; OWASP LLM01).
59
+
60
+ ### Gates verificáveis (antes de Done)
61
+ - [ ] Suíte verde 100% (runner exit 0; zero skip sem justificativa)
62
+ - [ ] Mutation score incremental ≥ threshold do módulo (Stryker/PIT no diff)
63
+ - [ ] Flakiness < 1% (flaky → quarentena + owner + deadline)
64
+ - [ ] Zero lógica condicional no teste (sem if/for/while/try)
65
+ - [ ] Zero mock de dependência interna ou out-of-process privada
66
+ - [ ] Determinismo: sem Date.now()/Math.random()/I/O real não-injetado
67
+ - [ ] Nome do teste descreve comportamento; snapshot não é única asserção
68
+ - [ ] SCA bloqueia CVE crítico em dependência
69
+ - [ ] Secret scanning bloqueia merge com credencial em plaintext
70
+ - [ ] SAST com FP tunado; achado crítico bloqueia
71
+ - [ ] Threat model STRIDE rastreável a teste (feature que cruza trust boundary/toca dado sensível)
72
+ - [ ] Cripto: zero cripto caseira; AEAD + Argon2id + CSPRNG; secret em KMS
73
+ - [ ] Agent de IA: allow-list de tools, HITL em ação destrutiva, secret fora do prompt
74
+ - [ ] Agent de IA: isolamento multi-tenant + red-team de prompt injection como regressão
75
+
76
+ ### Loop operacional
77
+ QA Gate/Loop determinístico: suíte verde → qualidade do teste → mutation incremental → flakiness → segurança → least agency → verdict (PASS/CONCERNS/FAIL/WAIVED); qualquer gate aplicável vermelho ⇒ não assina Done; máx 5 iterações então escala. Diagrama/passo-a-passo completo no kit (`KIT-quality-gate.md` §"Loop operacional").
78
+
@@ -38,3 +38,39 @@
38
38
  <!-- Patterns no longer relevant — kept for history -->
39
39
  <!-- Format: - ~~{pattern}~~ | Archived: {YYYY-MM-DD} | Reason: {reason} -->
40
40
 
41
+ ## Municao: Engenharia de Software (kit Fase 4)
42
+
43
+ Fonte completa: `engenharia-software/fase-4-agents/KIT-product-sprint.md` (repo github caioimori/engenharia-de-software). Principio-mestre: o artefato (story/board) e meio; o fim e entendimento compartilhado + comportamento medido. Lote pequeno e lei nuclear.
44
+
45
+ ### Principios nao-negociaveis
46
+ - **Outcome over output.** Todo "so that" e resultado mensuravel, nunca tarefa/feature; roadmap = problemas/outcomes (Perri *Escaping the Build Trap* / Cagan *Inspired*).
47
+ - **Slice vertical por outcome, walking skeleton primeiro.** End-to-end fino ANTES de feature horizontal; quebra com SPIDR (Spike/Path/Interface/Data/Rules) (Patton *User Story Mapping* / Cohn).
48
+ - **Requisito = exemplo = teste.** Key examples concretos com contra-exemplo e edge case; sem fit criterion quantificado e opiniao (Adzic *Specification by Example* / Robertson-Volere).
49
+ - **Story passa INVEST + 3C.** 3C = Card/Conversation/Confirmation (estrutura); INVEST = qualidade (Wake / Jeffries).
50
+ - **Limitar WIP, nao maximizar ocupacao.** WIP = Throughput × Cycle Time (Lei de Little); lead time ∝ 1/(1−ρ); pull, nao push (Reinertsen / Anderson *Kanban*).
51
+ - **MVP e experimento, nao versao pequena.** Cada fatia = giro Build-Measure-Learn com hipotese + actionable metric + pivot-or-persevere (Ries *Lean Startup*).
52
+ - **Forecast probabilistico, nao promessa.** "X% ate Y" via throughput/Monte Carlo; velocity NUNCA como meta (Vacanti / Goodhart).
53
+ - **Cerimonia calibrada por risco (Cynefin + Boehm-Turner).** Bug fix = YOLO; epic multi-story = pipeline completo (Snowden / Boehm-Turner).
54
+ - **DoD como jidoka (stop-the-line).** Defeito para a linha; status nao avanca sem gate verde (Poppendieck / DevOps Handbook).
55
+ - **Discovery e habito, nao fase.** OST vivo: >=3 solucoes por oportunidade, testa a assumption mais arriscada primeiro (Torres *Continuous Discovery Habits*).
56
+
57
+ ### Gates verificaveis (antes de Done)
58
+ - [ ] "so that" e outcome mensuravel, nao verbo de implementacao
59
+ - [ ] Fit criterion presente e quantificado (NFR sem numero = FAIL)
60
+ - [ ] >=1 key example Given/When/Then + >=1 contra-exemplo/edge case
61
+ - [ ] INVEST completo (item a item)
62
+ - [ ] 3C presentes (Card + Conversation + Confirmation)
63
+ - [ ] Rastreavel feature -> story -> exemplo -> teste
64
+ - [ ] Cabe num lote pequeno (Small); senao dispara split via SPIDR
65
+ - [ ] Fatiada por outcome end-to-end (rejeita slice so backend/so frontend)
66
+ - [ ] Walking skeleton existe e veio antes de feature horizontal
67
+ - [ ] MVP declarado como experimento (hipotese + metric + pivot)
68
+ - [ ] WIP respeitado: max 1 InProgress por executor; PR/diff > 400 linhas = quebrar
69
+ - [ ] Forecast em formato probabilistico ("X% ate Y"); data pontual = FAIL
70
+ - [ ] Velocity NAO usada como meta (nem individual)
71
+ - [ ] Complexidade classificada (Cynefin) e cerimonia calibrada (Boehm-Turner)
72
+ - [ ] WSJF registrado para sequenciamento (CoD ÷ Job Size); ordem por HiPPO = FAIL
73
+
74
+ ### Loop operacional
75
+ Classificar (Cynefin) -> descobrir (OST) -> mapear (Story Map) -> fatiar vertical (SPIDR) -> refinar (Example Mapping <30min) -> Gate A+B -> puxar sob WIP -> implementar lote pequeno (DoD jidoka) -> medir -> aprender (pivot/persevere) -> forecast Monte Carlo -> retro (1-3 kaizen + atualiza OST/CFD). Diagrama completo na secao "Loop operacional" do kit.
76
+
@@ -76,8 +76,8 @@ Nao precisa rodar `chrome-debug` manualmente.
76
76
  3. Testar em nova aba → comparar com original → iterar
77
77
 
78
78
  **Casos validados:**
79
- - itsoffbrand.com hero (orb WebGL, parallax, blend-mode) — 15min
80
- - sinapse.club face 3D (Three.js r183, WaltHead.obj, bloom) — 20min
79
+ - hero com orb WebGL (parallax, blend-mode) — ~15min
80
+ - landing com rosto 3D (Three.js + bloom) — ~20min
81
81
 
82
82
  ### Animacoes 3D via AI
83
83
 
@@ -324,6 +324,21 @@ async function commandSync(options) {
324
324
 
325
325
  // Filter IDEs if --ide flag specified
326
326
  let targetIdes = Object.entries(config.targets);
327
+
328
+ // Hard-skip: ide-sync must NEVER write .codex. The Codex mirror is owned by the
329
+ // canonical Codex sync (sync-codex-local-first.js writes thin runtime pointers
330
+ // resolved by resolve-codex-agent.js). Letting ide-sync write it clobbers those
331
+ // pointers with full agent bodies. This is enforced in CODE — not just via the
332
+ // config `targets.codex.enabled: false` — so a stray config flip can't re-arm the
333
+ // foot-gun. To refresh .codex, run `npm run sync:codex`.
334
+ if (options.ide === 'codex') {
335
+ console.error(
336
+ `${colors.yellow}'codex' is managed by the Codex sync (npm run sync:codex), not ide-sync — nothing to do.${colors.reset}`
337
+ );
338
+ process.exit(0);
339
+ }
340
+ targetIdes = targetIdes.filter(([name]) => name !== 'codex');
341
+
327
342
  if (options.ide) {
328
343
  targetIdes = targetIdes.filter(([name]) => name === options.ide);
329
344
  if (targetIdes.length === 0) {