nexus-core-v3 3.0.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 (232) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +134 -0
  3. package/agents/README.md +133 -0
  4. package/agents/_protocol.md +107 -0
  5. package/agents/analyst.md +138 -0
  6. package/agents/architect.md +146 -0
  7. package/agents/data-engineer.md +170 -0
  8. package/agents/dev.md +134 -0
  9. package/agents/devops.md +141 -0
  10. package/agents/nexus-master.md +147 -0
  11. package/agents/pm.md +133 -0
  12. package/agents/po.md +138 -0
  13. package/agents/qa.md +192 -0
  14. package/agents/sm.md +122 -0
  15. package/agents/squad-creator.md +121 -0
  16. package/agents/ux-design-expert.md +165 -0
  17. package/artifact-manifest.json +903 -0
  18. package/bin/nexus.mjs +37 -0
  19. package/checklists/README.md +49 -0
  20. package/checklists/architect-checklist.md +47 -0
  21. package/checklists/change-checklist.md +61 -0
  22. package/checklists/db-predeploy-checklist.md +57 -0
  23. package/checklists/design-quality-checklist.md +57 -0
  24. package/checklists/discovery-checklist.md +36 -0
  25. package/checklists/foundation-checklist.md +39 -0
  26. package/checklists/launch-checklist.md +39 -0
  27. package/checklists/pm-checklist.md +48 -0
  28. package/checklists/po-master-checklist.md +64 -0
  29. package/checklists/reality-check-checklist.md +49 -0
  30. package/checklists/story-dod-checklist.md +52 -0
  31. package/checklists/story-draft-checklist.md +36 -0
  32. package/dist/bin/dashboard.html +279 -0
  33. package/dist/bin/nexus.mjs +20008 -0
  34. package/dist/constitution.yaml +76 -0
  35. package/knowledge/README.md +57 -0
  36. package/knowledge/architecture/architectural-styles-map.md +182 -0
  37. package/knowledge/architecture/design-patterns-gof.md +192 -0
  38. package/knowledge/architecture/distributed-patterns-cheatsheet.md +201 -0
  39. package/knowledge/architecture/saas-subscription-blueprint.md +355 -0
  40. package/knowledge/architecture/system-design-tradeoffs.md +231 -0
  41. package/knowledge/architecture/t3-fullstack-typesafe-stack.md +273 -0
  42. package/knowledge/copy/landing-copy-that-converts.md +168 -0
  43. package/knowledge/data/postgres-indexing-and-tuning.md +263 -0
  44. package/knowledge/data/schema-modeling-decisions.md +273 -0
  45. package/knowledge/data/supabase-rls-patterns.md +316 -0
  46. package/knowledge/data/zero-downtime-migrations.md +308 -0
  47. package/knowledge/devops/cicd-pipeline-best-practices.md +318 -0
  48. package/knowledge/devops/production-dockerfile.md +283 -0
  49. package/knowledge/devops/twelve-factor-app.md +398 -0
  50. package/knowledge/engineering/clean-code-principles.md +429 -0
  51. package/knowledge/engineering/effective-code-review.md +204 -0
  52. package/knowledge/engineering/testing-strategy-beyond-unit.md +307 -0
  53. package/knowledge/governance/risk-matrix.md +56 -0
  54. package/knowledge/integration/mcp-server-selection-matrix.md +235 -0
  55. package/knowledge/marketing/copy-que-converte.md +43 -0
  56. package/knowledge/marketing/funil-e-jornada.md +36 -0
  57. package/knowledge/negocios/proposta-vencedora.md +38 -0
  58. package/knowledge/negocios/roi-e-unit-economics.md +46 -0
  59. package/knowledge/pipeline/1-descobrir.md +26 -0
  60. package/knowledge/pipeline/2-estrategizar.md +26 -0
  61. package/knowledge/pipeline/3-estruturar.md +27 -0
  62. package/knowledge/pipeline/4-construir.md +27 -0
  63. package/knowledge/pipeline/5-endurecer.md +28 -0
  64. package/knowledge/pipeline/6-lancar.md +27 -0
  65. package/knowledge/pipeline/7-operar.md +27 -0
  66. package/knowledge/security/lgpd-conformidade-basica.md +35 -0
  67. package/knowledge/security/owasp-secure-coding-gates.md +220 -0
  68. package/knowledge/security/owasp-top10-threat-assessment.md +287 -0
  69. package/knowledge/security/threat-modeling-stride.md +34 -0
  70. package/knowledge/web-craft/a11y-audit-checklist.md +251 -0
  71. package/knowledge/web-craft/accessible-component-patterns.md +383 -0
  72. package/knowledge/web-craft/anti-ai-look.md +114 -0
  73. package/knowledge/web-craft/design-system-from-code.md +195 -0
  74. package/knowledge/web-craft/intrinsic-css-layout.md +420 -0
  75. package/knowledge/web-craft/style-cloning.md +185 -0
  76. package/knowledge/web-craft/visual-polish-review.md +183 -0
  77. package/package.json +55 -0
  78. package/runbooks/campanha-de-conteudo.md +36 -0
  79. package/runbooks/feature-em-projeto-existente.md +37 -0
  80. package/runbooks/mvp-startup.md +38 -0
  81. package/runbooks/resposta-a-incidente.md +37 -0
  82. package/squads/exemplo-conteudo/agents/editor-chefe.md +48 -0
  83. package/squads/exemplo-conteudo/agents/pesquisador.md +44 -0
  84. package/squads/exemplo-conteudo/agents/redator.md +45 -0
  85. package/squads/exemplo-conteudo/knowledge/estilo-editorial.md +21 -0
  86. package/squads/exemplo-conteudo/squad.yaml +19 -0
  87. package/squads/exemplo-conteudo/tasks/pesquisar-fontes.md +26 -0
  88. package/squads/exemplo-conteudo/tasks/planejar-pauta.md +27 -0
  89. package/squads/exemplo-conteudo/tasks/redigir-artigo.md +26 -0
  90. package/squads/exemplo-conteudo/tasks/revisar-artigo.md +27 -0
  91. package/squads/marketing/agents/analista.md +56 -0
  92. package/squads/marketing/agents/chefe-marketing.md +65 -0
  93. package/squads/marketing/agents/conteudo.md +55 -0
  94. package/squads/marketing/agents/copy.md +55 -0
  95. package/squads/marketing/agents/growth.md +56 -0
  96. package/squads/marketing/agents/social.md +55 -0
  97. package/squads/marketing/squad.yaml +17 -0
  98. package/squads/marketing/tasks/aprovar-campanha.md +43 -0
  99. package/squads/negocios/agents/chefe-negocios.md +65 -0
  100. package/squads/negocios/agents/financas-roi.md +55 -0
  101. package/squads/negocios/agents/suporte.md +55 -0
  102. package/squads/negocios/agents/vendas-proposta.md +56 -0
  103. package/squads/negocios/squad.yaml +17 -0
  104. package/squads/negocios/tasks/aprovar-proposta.md +40 -0
  105. package/squads/security/agents/appsec-reviewer.md +59 -0
  106. package/squads/security/agents/chefe-seguranca.md +65 -0
  107. package/squads/security/agents/compliance-auditor.md +60 -0
  108. package/squads/security/agents/threat-modeler.md +60 -0
  109. package/squads/security/squad.yaml +20 -0
  110. package/squads/security/tasks/aprovar-gate-seguranca.md +42 -0
  111. package/squads/security/tasks/emitir-parecer-conformidade.md +42 -0
  112. package/tasks/README.md +72 -0
  113. package/tasks/accessibility-wcag-checklist.md +69 -0
  114. package/tasks/advanced-elicitation.md +42 -0
  115. package/tasks/analyze-performance.md +54 -0
  116. package/tasks/analyze-project-structure.md +59 -0
  117. package/tasks/apply-qa-fixes.md +57 -0
  118. package/tasks/architect-analyze-impact.md +62 -0
  119. package/tasks/archive-squad.md +52 -0
  120. package/tasks/audit-codebase.md +53 -0
  121. package/tasks/build-component.md +61 -0
  122. package/tasks/calculate-roi.md +63 -0
  123. package/tasks/ci-cd-configuration.md +51 -0
  124. package/tasks/collect-visual-evidence.md +62 -0
  125. package/tasks/compose-molecule.md +57 -0
  126. package/tasks/consolidate-patterns.md +54 -0
  127. package/tasks/create-brownfield-prd.md +54 -0
  128. package/tasks/create-competitor-analysis.md +42 -0
  129. package/tasks/create-deep-research-prompt.md +62 -0
  130. package/tasks/create-doc.md +62 -0
  131. package/tasks/create-epic.md +49 -0
  132. package/tasks/create-front-end-spec.md +56 -0
  133. package/tasks/create-migration-plan.md +57 -0
  134. package/tasks/create-next-story.md +66 -0
  135. package/tasks/create-prd.md +53 -0
  136. package/tasks/create-project-brief.md +47 -0
  137. package/tasks/create-rls-policies.md +59 -0
  138. package/tasks/create-schema.md +57 -0
  139. package/tasks/create-service.md +55 -0
  140. package/tasks/create-squad.md +100 -0
  141. package/tasks/create-suite.md +62 -0
  142. package/tasks/db-apply-migration.md +56 -0
  143. package/tasks/db-domain-modeling.md +57 -0
  144. package/tasks/db-dry-run.md +50 -0
  145. package/tasks/db-env-check.md +57 -0
  146. package/tasks/db-load-csv.md +54 -0
  147. package/tasks/db-policy-apply.md +58 -0
  148. package/tasks/db-rollback.md +51 -0
  149. package/tasks/db-run-sql.md +61 -0
  150. package/tasks/db-seed.md +52 -0
  151. package/tasks/db-smoke-test.md +51 -0
  152. package/tasks/db-snapshot.md +48 -0
  153. package/tasks/db-verify-order.md +49 -0
  154. package/tasks/deliberate.md +46 -0
  155. package/tasks/design-indexes.md +59 -0
  156. package/tasks/dev-develop-story.md +61 -0
  157. package/tasks/document-project.md +59 -0
  158. package/tasks/execute-checklist.md +57 -0
  159. package/tasks/execute-epic-plan.md +52 -0
  160. package/tasks/execute-subtask.md +51 -0
  161. package/tasks/extend-pattern.md +63 -0
  162. package/tasks/extend-squad.md +60 -0
  163. package/tasks/extract-patterns.md +64 -0
  164. package/tasks/extract-tokens.md +59 -0
  165. package/tasks/facilitate-brainstorming-session.md +42 -0
  166. package/tasks/generate-ai-frontend-prompt.md +57 -0
  167. package/tasks/generate-documentation.md +60 -0
  168. package/tasks/generate-migration-strategy.md +57 -0
  169. package/tasks/generate-shock-report.md +56 -0
  170. package/tasks/mcp-management.md +66 -0
  171. package/tasks/orchestrate.md +50 -0
  172. package/tasks/perform-market-research.md +42 -0
  173. package/tasks/plan-create-context.md +57 -0
  174. package/tasks/plan-create-implementation.md +58 -0
  175. package/tasks/po-close-story.md +60 -0
  176. package/tasks/po-manage-story-backlog.md +59 -0
  177. package/tasks/po-pull-story.md +60 -0
  178. package/tasks/po-sync-story.md +59 -0
  179. package/tasks/pr-automation.md +50 -0
  180. package/tasks/pre-push-quality-gate.md +54 -0
  181. package/tasks/push.md +53 -0
  182. package/tasks/qa-browser-console-check.md +52 -0
  183. package/tasks/qa-create-fix-request.md +58 -0
  184. package/tasks/qa-evidence-requirements.md +55 -0
  185. package/tasks/qa-false-positive-detection.md +55 -0
  186. package/tasks/qa-fix-issues.md +55 -0
  187. package/tasks/qa-gate.md +53 -0
  188. package/tasks/qa-migration-validation.md +58 -0
  189. package/tasks/qa-nfr-assess.md +45 -0
  190. package/tasks/qa-review-story.md +56 -0
  191. package/tasks/qa-risk-profile.md +45 -0
  192. package/tasks/qa-security-checklist.md +64 -0
  193. package/tasks/qa-test-design.md +47 -0
  194. package/tasks/qa-trace-requirements.md +48 -0
  195. package/tasks/release-management.md +53 -0
  196. package/tasks/repository-cleanup.md +61 -0
  197. package/tasks/route.md +44 -0
  198. package/tasks/run-tests.md +50 -0
  199. package/tasks/security-audit.md +54 -0
  200. package/tasks/setup-database.md +60 -0
  201. package/tasks/setup-design-system.md +60 -0
  202. package/tasks/shard-doc.md +60 -0
  203. package/tasks/spec-assess-complexity.md +55 -0
  204. package/tasks/spec-critique.md +64 -0
  205. package/tasks/spec-gather-requirements.md +48 -0
  206. package/tasks/spec-research-dependencies.md +42 -0
  207. package/tasks/spec-write-spec.md +50 -0
  208. package/tasks/test-as-user.md +52 -0
  209. package/tasks/ux-create-wireframe.md +54 -0
  210. package/tasks/ux-user-research.md +55 -0
  211. package/tasks/validate-next-story.md +61 -0
  212. package/tasks/validate-squad.md +55 -0
  213. package/tasks/verify-subtask.md +52 -0
  214. package/tasks/version-management.md +45 -0
  215. package/templates/README.md +47 -0
  216. package/templates/architecture-tmpl.md +115 -0
  217. package/templates/competitor-analysis-tmpl.md +87 -0
  218. package/templates/epic-tmpl.md +83 -0
  219. package/templates/front-end-spec-tmpl.md +110 -0
  220. package/templates/market-research-tmpl.md +98 -0
  221. package/templates/migration-plan-tmpl.md +92 -0
  222. package/templates/prd-tmpl.md +95 -0
  223. package/templates/project-brief-tmpl.md +100 -0
  224. package/templates/qa-verdict-tmpl.md +73 -0
  225. package/templates/rls-policies-tmpl.md +93 -0
  226. package/templates/schema-design-tmpl.md +107 -0
  227. package/templates/spec-tmpl.md +88 -0
  228. package/templates/squad/agent-dna-tmpl.md +72 -0
  229. package/templates/squad/chief-dna-tmpl.md +98 -0
  230. package/templates/squad/squad-task-tmpl.md +50 -0
  231. package/templates/squad/squad-yaml-tmpl.md +47 -0
  232. package/templates/story-tmpl.md +63 -0
@@ -0,0 +1,59 @@
1
+ ---
2
+ id: po-sync-story
3
+ agent: po
4
+ title: Sincronizar uma story com a ferramenta de PM (push de metadados)
5
+ inputs: [story, ferramenta (clickup|github|jira|local)]
6
+ outputs: [story refletida na ferramenta de PM, mapa de IDs atualizado]
7
+ elicit: false
8
+ modes: [interactive, yolo]
9
+ ---
10
+
11
+ # Sincronizar uma story com a ferramenta de PM (push de metadados)
12
+
13
+ **Objetivo:** refletir o estado de uma story de `docs/stories/` na ferramenta de gestão de projeto
14
+ configurada (ClickUp / GitHub Issues / Jira / local), mantendo título, status, ACs e File List
15
+ consistentes nos dois lados.
16
+
17
+ **Pré-condições:**
18
+ - A story existe em `docs/stories/` e a ferramenta de PM alvo está configurada em `.nexus/`. Se não
19
+ houver provider configurado, **pare** e reporte — não invento integração.
20
+ - A operação é de **metadados de story** (título, status, descrição, ACs, checklist). Operações de
21
+ git remoto e gestão de repositório **não** entram aqui.
22
+
23
+ ## Passos
24
+
25
+ 1. **Leia a story** em `docs/stories/` e extraia os campos sincronizáveis: título, status, ACs,
26
+ File List, prioridade, epic de origem.
27
+ 2. **Identifique o provider** alvo (`clickup` | `github` | `jira` | `local`) a partir da config em
28
+ `.nexus/`. Recupere o ID externo da story, se já sincronizada antes.
29
+ 3. **Detecte divergências** entre a story local e o item remoto: o que mudou de cada lado desde a
30
+ última sincronização (status, ACs, descrição).
31
+ 4. **Aplique a sincronização local→remoto** (esta task é push de metadados): crie o item se não
32
+ existir, ou atualize os campos divergentes no item existente. Marque os ACs como checklist na
33
+ ferramenta quando suportado.
34
+ 5. **Persista o mapa de IDs** (story local ↔ ID externo) em `.nexus/` para que o próximo
35
+ `*sync-story` / `*pull-story` saiba a correspondência.
36
+ 6. **Registre no Change Log da story** a data da sincronização e o destino.
37
+ 7. **Não opere git remoto.** Mesmo aqui, eu sincronizo **metadados de story** — não faço `git push`,
38
+ não abro PR, não mexo em MCP. Qualquer subida de código ou integração de repositório é
39
+ **exclusiva do `@devops`**, sem exceção.
40
+
41
+ ## Critério de pronto (DoD)
42
+
43
+ - [ ] Campos sincronizáveis extraídos da story
44
+ - [ ] Provider identificado e ID externo recuperado (ou item criado)
45
+ - [ ] Divergências detectadas antes de aplicar
46
+ - [ ] Metadados refletidos local→remoto (campos + checklist de ACs quando suportado)
47
+ - [ ] Mapa de IDs (local ↔ externo) persistido em `.nexus/`
48
+ - [ ] Change Log da story atualizado com data e destino da sync
49
+ - [ ] Nenhuma operação de git remoto / PR / MCP executada (delegada ao @devops)
50
+
51
+ ## Falha / recuperação
52
+
53
+ - **Provider de PM não configurado** → paro e reporto; não invento credenciais nem integração.
54
+ - **Conflito de edição** (story e item remoto mudaram o mesmo campo) → não sobrescrevo cegamente;
55
+ sinalizo o conflito e peço a decisão antes de aplicar.
56
+ - **A operação exigiu push de código / PR / configuração de MCP** → fora do meu escopo; delego ao
57
+ @devops.
58
+ - **Falha de autenticação na ferramenta** → reporto o erro com contexto; gestão de credenciais/MCP é
59
+ do @devops.
@@ -0,0 +1,50 @@
1
+ ---
2
+ id: pr-automation
3
+ agent: devops
4
+ title: Abrir Pull Request com descrição gerada
5
+ inputs: [story, branch atual, veredito do pre-push-quality-gate]
6
+ outputs: [PR aberto, URL do PR, status checks verificados]
7
+ elicit: true
8
+ modes: [interactive]
9
+ ---
10
+
11
+ # Abrir Pull Request com descrição gerada
12
+
13
+ **Objetivo:** abrir um PR da branch atual com descrição gerada a partir da story, após o gate verde e a
14
+ confirmação humana — e verificar os status checks. Criação e merge de PR são exclusivos do @devops.
15
+
16
+ **Pré-condições:**
17
+ - O `pre-push-quality-gate` deu **PASS** e a branch já está no remoto (via `*push`). Se não está
18
+ publicada, **pare** e rode `*push` antes.
19
+ - A branch atual NÃO é `main`/`master` — PR sai de feature branch. Se estou na branch base, **pare**.
20
+
21
+ ## Passos
22
+
23
+ 1. **Detecte o contexto do repositório** — remoto, branch base (default do repo) e branch atual. Nunca
24
+ assuma repo fixo.
25
+ 2. **Gere a descrição do PR a partir da story** — título no padrão conventional com o id da story;
26
+ corpo com resumo, ACs atendidos e File List. Sem invenção: tudo rastreia à story/spec.
27
+ 3. **Revele o PR proposto.** Mostre título, branch base ← branch atual e o corpo gerado ao usuário.
28
+ 4. **[ELICITAÇÃO] Peça o "ok" explícito** para abrir o PR. Criar PR é operação de remoto — exige
29
+ confirmação humana.
30
+ 5. **Abra o PR** (`gh pr create`) contra a branch base detectada, com o título e corpo aprovados.
31
+ 6. **Verifique os status checks** (`gh pr view --json statusCheckRollup`). Se algum check vermelho,
32
+ sinalize — o PR fica aberto mas não recomendo merge sobre check falho.
33
+ 7. **Reporte.** Devolvo a URL do PR e o estado dos checks. Merge é operação separada e só com nova
34
+ confirmação humana — eu nunca faço merge automático.
35
+
36
+ ## Critério de pronto (DoD)
37
+
38
+ - [ ] Branch publicada no remoto antes de abrir o PR
39
+ - [ ] Descrição gerada a partir da story (título conventional + corpo rastreável)
40
+ - [ ] Confirmação humana obtida antes de `gh pr create`
41
+ - [ ] PR aberto contra a branch base detectada dinamicamente
42
+ - [ ] Status checks verificados e reportados; URL do PR devolvida
43
+
44
+ ## Falha / recuperação
45
+
46
+ - **Gate não está PASS ou branch não publicada** → não abro PR; volto ao gate/`*push`.
47
+ - **Usuário não confirma** → não crio o PR.
48
+ - **Status check vermelho** → reporto, não recomendo merge; devolvo ao @dev se o check é de qualidade.
49
+ - **PR já existe para a branch** → não duplico; reporto o PR existente e seu estado.
50
+ - **Pedido de merge sem confirmação humana** → recuso; merge é irreversível e pede "ok" explícito.
@@ -0,0 +1,54 @@
1
+ ---
2
+ id: pre-push-quality-gate
3
+ agent: devops
4
+ title: Gate de qualidade pré-push
5
+ inputs: [story, branch atual]
6
+ outputs: [veredito do gate (PASS/FAIL), relatório de gate]
7
+ elicit: false
8
+ modes: [interactive, yolo]
9
+ ---
10
+
11
+ # Gate de qualidade pré-push
12
+
13
+ **Objetivo:** rodar todos os gates de qualidade (lint, typecheck, test, build, revisão automatizada) e
14
+ emitir um veredito objetivo — PASS libera a subida; FAIL devolve ao dono do conserto. Nada vermelho
15
+ chega à porta de saída.
16
+
17
+ **Pré-condições:**
18
+ - Existe trabalho a subir: branch com commits locais à frente do remoto. Se não há nada novo, **pare**
19
+ e reporte "nada a subir".
20
+ - A story está em `Ready for Review`/`Done` com gate de QA aprovado. Se a story não passou pelo
21
+ quality gate do @qa, **pare** e devolva ao @qa antes de tocar nos gates de push.
22
+
23
+ ## Passos
24
+
25
+ 1. **Detecte o contexto do repositório** — remoto, modo (framework-dev vs project-dev) e branch atual.
26
+ Nunca assuma um repo fixo. Se for greenfield (sem git), **pare** e recomende `*environment-bootstrap`.
27
+ 2. **Varra por segredos** no diff a subir (`git diff origin/{branch}...HEAD`): credencial, token, chave
28
+ ou `.env`. Qualquer match → FAIL imediato, antes de qualquer outro gate. O que vaza pra `main` não volta.
29
+ 3. **Rode lint.** Vermelho → registre os erros e marque o gate como FAIL.
30
+ 4. **Rode typecheck.** Qualquer erro de tipo → FAIL.
31
+ 5. **Rode a suíte de testes.** Um teste falho → FAIL. Suíte verde é pré-requisito da subida.
32
+ 6. **Rode build.** Falha de build → FAIL.
33
+ 7. **Rode a revisão automatizada de código** na mudança a subir. Classifique os achados:
34
+ CRITICAL → bloqueia (FAIL); HIGH → sinalizo e recomendo correção; MEDIUM/LOW → documento, não bloqueio.
35
+ 8. **Emita o veredito.** PASS somente se: sem segredos, lint limpo, typecheck 0, suíte verde, build ok e
36
+ sem CRITICAL. Caso contrário FAIL, com o relatório do que reprovou.
37
+ 9. **Roteie.** PASS → libera para `*push`/`*create-pr` (com confirmação humana). FAIL → devolvo ao @dev
38
+ o relatório de correção; se o que falta é o gate de story, devolvo ao @qa. Eu não corrijo o código.
39
+
40
+ ## Critério de pronto (DoD)
41
+
42
+ - [ ] Varredura de segredos executada — diff limpo de credenciais/`.env`
43
+ - [ ] lint, typecheck, test e build executados, todos verdes
44
+ - [ ] Revisão automatizada rodada e achados classificados (sem CRITICAL aberto)
45
+ - [ ] Veredito explícito emitido (PASS ou FAIL) com relatório
46
+ - [ ] Em FAIL, story devolvida ao dono do conserto (@dev ou @qa) — não subi nada
47
+
48
+ ## Falha / recuperação
49
+
50
+ - **Qualquer gate vermelho** → veredito FAIL, push bloqueado, relatório devolvido a @dev. Pressa não fura gate.
51
+ - **CRITICAL da revisão** → FAIL; devolvo a @dev e não libero a subida.
52
+ - **Segredo no diff** → FAIL imediato; oriento a remover do histórico antes de qualquer push.
53
+ - **Ferramenta de gate indisponível** (lint/build não configurado) → registro a lacuna e escalo; não
54
+ declaro PASS sobre um gate que não rodou.
package/tasks/push.md ADDED
@@ -0,0 +1,53 @@
1
+ ---
2
+ id: push
3
+ agent: devops
4
+ title: Subir ao remoto (git push)
5
+ inputs: [story, branch atual, veredito do pre-push-quality-gate]
6
+ outputs: [commits no remoto, confirmação de push, caminho de rollback]
7
+ elicit: true
8
+ modes: [interactive]
9
+ ---
10
+
11
+ # Subir ao remoto (git push)
12
+
13
+ **Objetivo:** executar `git push` para o remoto detectado, somente após o gate verde e a confirmação
14
+ humana explícita — com o caminho de reversão claro. Eu sou o único guardião da porta de saída.
15
+
16
+ **Pré-condições:**
17
+ - O `pre-push-quality-gate` deu **PASS**. Sem PASS, **pare** e rode o gate antes — não subo sobre gate
18
+ não verificado.
19
+ - Existe branch com commits locais à frente do remoto. Se não há diferença, **pare** e reporte.
20
+
21
+ ## Passos
22
+
23
+ 1. **Detecte o contexto do repositório** — URL do remoto, branch atual e tracking. Nunca assuma repo
24
+ fixo. Se for greenfield (sem git), **pare** e recomende `*environment-bootstrap`.
25
+ 2. **Confirme o gate.** O `pre-push-quality-gate` foi PASS para este HEAD? Se o HEAD mudou desde o gate,
26
+ re-rode o gate — não subo um estado não auditado.
27
+ 3. **Revele o destino.** Mostre ao usuário: branch local → remoto/branch alvo, número de commits, e o
28
+ resumo do diff (`git log --oneline origin/{branch}..HEAD`).
29
+ 4. **[ELICITAÇÃO] Peça o "ok" explícito.** Apresento o resumo do gate (o que passou, o que avisou) e o
30
+ destino. Só avanço com a confirmação humana — push é irreversível na prática.
31
+ 5. **Bloqueie force na branch protegida.** Se o pedido for `--force` sobre `main`/`master`, **recuse**:
32
+ histórico de branch protegida não se reescreve.
33
+ 6. **Execute o push.** `git push` para o remoto/branch confirmado (com `-u` se a branch ainda não tem
34
+ upstream). Para feature branch sem PR, sinalize que `*create-pr` é o próximo passo.
35
+ 7. **Reporte e deixe o rollback claro.** Devolvo o resultado (branch atualizada, hash subido) e o
36
+ caminho de reversão (ex.: o hash anterior do remoto para um eventual revert). Operação registrada.
37
+
38
+ ## Critério de pronto (DoD)
39
+
40
+ - [ ] Gate pre-push confirmado como PASS para o HEAD subido
41
+ - [ ] Destino do push revelado (branch, nº de commits, resumo do diff)
42
+ - [ ] Confirmação humana explícita obtida antes de empurrar
43
+ - [ ] Push executado para o remoto detectado dinamicamente
44
+ - [ ] Resultado reportado com caminho de rollback explícito
45
+
46
+ ## Falha / recuperação
47
+
48
+ - **Gate não está PASS** → não subo; devolvo ao `pre-push-quality-gate`.
49
+ - **Usuário não confirma** → cancelo o push, nada vai ao remoto.
50
+ - **Push rejeitado (non-fast-forward)** → reporto, oriento sincronizar (`git pull --rebase`) e
51
+ re-rodar o gate; nunca resolvo com `--force` em branch protegida.
52
+ - **Segredo descoberto após o push** → escalo imediato: oriento revogar a credencial e limpar o
53
+ histórico; segredo vazado não se desfaz só com revert.
@@ -0,0 +1,52 @@
1
+ ---
2
+ id: qa-browser-console-check
3
+ agent: qa
4
+ title: Checagem do console do browser
5
+ inputs: [story, app rodando]
6
+ outputs: [evidência de console limpo, entrada na seção QA Results]
7
+ elicit: false
8
+ modes: [interactive, yolo]
9
+ ---
10
+
11
+ # Checagem do console do browser
12
+
13
+ **Objetivo:** confirmar com evidência que a mudança de UI da story não introduz erros, warnings ou
14
+ falhas de rede no console do browser — "funciona na minha tela" não é evidência; console limpo é.
15
+
16
+ **Pré-condições:**
17
+ - A story tem componente de UI/front. Se a mudança é puramente backend, esta task não se aplica.
18
+ - O app sobe localmente (URL conhecida). Sem app rodando, não há console para inspecionar.
19
+
20
+ ## Passos
21
+
22
+ 1. **Suba e navegue.** Abra o app na rota afetada pela story usando automação de browser. Reproduza o
23
+ fluxo descrito nas ACs — não só a tela inicial, o caminho inteiro da feature.
24
+ 2. **Capture o console.** Colete as mensagens do console durante o fluxo: erros, warnings, exceptions
25
+ não tratadas. Console limpo significa zero erro e zero warning novo introduzido pela mudança.
26
+ 3. **Inspecione a rede.** Verifique as requisições: nenhuma 4xx/5xx inesperada, nenhuma chamada
27
+ pendente travada, nenhum recurso 404. Falha de rede silenciosa é defeito.
28
+ 4. **Tire a evidência.** Screenshot do estado final + o log de console capturado. Sem o artefato, o
29
+ "limpo" é palavra, não prova — e palavra não passa no meu gate.
30
+ 5. **Triagem dos achados.** Erro/exception → FAIL. Warning novo relevante → CONCERNS. Ruído de
31
+ terceiros pré-existente e não relacionado → registro mas não bloqueio.
32
+ 6. **Escreva o resultado** SOMENTE na seção "QA Results": fluxo testado, console (limpo/sujo),
33
+ achados de rede, com a evidência anexada.
34
+ 7. **Roteie.** Erro de console rastreável à mudança → `*create-fix-request` ao @dev com o stack/linha.
35
+
36
+ ## Critério de pronto (DoD)
37
+
38
+ - [ ] Fluxo das ACs reproduzido no browser, não só a tela inicial
39
+ - [ ] Console capturado: zero erro/warning novo introduzido
40
+ - [ ] Rede inspecionada: sem 4xx/5xx/404 inesperados
41
+ - [ ] Evidência anexada (screenshot + log de console)
42
+ - [ ] Resultado escrito só na seção QA Results e roteado
43
+
44
+ ## Falha / recuperação
45
+
46
+ - **App não sobe localmente** → HALT, reporto o bloqueio de ambiente; não aprovo UI que não consigo
47
+ rodar.
48
+ - **Erro de console rastreável à mudança** → FAIL; fix-request ao @dev com stack trace e passo de
49
+ reprodução.
50
+ - **Falha de rede (5xx) em chamada da feature** → FAIL; aponto o endpoint e devolvo ao @dev.
51
+ - **A causa está em infra/ambiente, não no código** → registro e delego ao @devops; eu aponto, ele
52
+ opera o ambiente.
@@ -0,0 +1,58 @@
1
+ ---
2
+ id: qa-create-fix-request
3
+ agent: qa
4
+ title: Gerar o QA_FIX_REQUEST para o @dev
5
+ inputs: [story, achados do gate]
6
+ outputs: [QA_FIX_REQUEST rastreável, roteamento ao @dev]
7
+ elicit: false
8
+ modes: [interactive, yolo]
9
+ ---
10
+
11
+ # Gerar o QA_FIX_REQUEST para o @dev
12
+
13
+ **Objetivo:** converter os achados de um gate FAIL/CONCERNS num pedido de correção preciso e acionável
14
+ para o @dev — defeito por defeito, com causa, evidência e critério de aceite da correção. Eu aponto;
15
+ o conserto é dele.
16
+
17
+ **Pré-condições:**
18
+ - Existe um veredito de gate (`*review`/`*gate`) com pelo menos um achado FAIL ou CONCERNS. Sem
19
+ achado, não há fix-request — não invento defeito.
20
+ - Cada achado já rastreia a uma AC/NFR/CON ou risco real autoevidente. Achado sem âncora não vira
21
+ pedido de correção.
22
+
23
+ ## Passos
24
+
25
+ 1. **Selecione os achados acionáveis.** Pegue do gate os FAIL e os CONCERNS que pedem correção.
26
+ Ordene por severidade (CRITICAL → HIGH → MEDIUM → LOW) — o @dev ataca o que mais pesa primeiro.
27
+ 2. **Descreva cada defeito com precisão.** Para cada achado: o quê (sintoma), onde (arquivo/linha),
28
+ por quê (causa-raiz, não sintoma) e a evidência (log/teste/screenshot/stack). Defeito vago é
29
+ retrabalho garantido.
30
+ 3. **Defina o critério de aceite da correção.** Diga o que torna o defeito resolvido: qual teste de
31
+ regressão precisa existir e passar, qual comportamento deve mudar. O @dev sabe exatamente quando
32
+ parou.
33
+ 4. **Anexe a rastreabilidade.** Ligue cada defeito à AC/NFR/CON que ele viola. Isso prova que não é
34
+ preferência minha — é o contrato sendo cobrado.
35
+ 5. **Escreva o QA_FIX_REQUEST** como artefato da story (na seção QA Results / fix-request), sem tocar
36
+ em ACs, escopo, status ou Dev Record — esses são intocáveis para mim.
37
+ 6. **Roteie ao @dev.** Entrego o fix-request e devolvo a story ao @dev para correção. Eu **não**
38
+ escrevo o código que conserta — juiz não é réu. Quando ele devolver, eu re-reviso.
39
+
40
+ ## Critério de pronto (DoD)
41
+
42
+ - [ ] Cada achado acionável virou um item de defeito ordenado por severidade
43
+ - [ ] Cada defeito tem: sintoma, local, causa-raiz e evidência
44
+ - [ ] Cada defeito tem critério de aceite (teste de regressão exigido)
45
+ - [ ] Cada defeito rastreia a uma AC/NFR/CON ou risco real
46
+ - [ ] Escrito só na seção QA Results; story devolvida ao @dev
47
+ - [ ] Eu não escrevi nenhum código de produção
48
+
49
+ ## Falha / recuperação
50
+
51
+ - **Um achado não rastreia a contrato nem risco real** → não entra no fix-request; eu não bloqueio por
52
+ preferência estética.
53
+ - **O @dev devolve a correção** → re-reviso (encadeio `*false-positive-check` e `*evidence-check`)
54
+ antes de reabrir o gate. Não dou PASS sem verificar a correção.
55
+ - **A correção exige escopo fora do @dev** (schema, infra, UI) → roteio o item ao dono certo
56
+ (@data-engineer, @devops, @ux-design-expert) em vez de empilhar tudo no @dev.
57
+ - **Tentei reverter ao @dev mais de uma vez sem convergir** → escalo ao @nexus-master em vez de
58
+ iterar no escuro indefinidamente.
@@ -0,0 +1,55 @@
1
+ ---
2
+ id: qa-evidence-requirements
3
+ agent: qa
4
+ title: Verificação de QA baseada em evidência
5
+ inputs: [story]
6
+ outputs: [veredito de suficiência de evidência, entrada na seção QA Results]
7
+ elicit: false
8
+ modes: [interactive, yolo]
9
+ ---
10
+
11
+ # Verificação de QA baseada em evidência
12
+
13
+ **Objetivo:** confirmar que toda afirmação de "pronto/funciona" na story está sustentada por evidência
14
+ verificável — teste verde, log, screenshot, console limpo — e não por palavra. Sem evidência, não
15
+ aconteceu.
16
+
17
+ **Pré-condições:**
18
+ - A story está em review (status pós-implementação). Se ainda está em Draft/InProgress, não há o que
19
+ auditar.
20
+ - A story tem ACs e seção de Testing. Sem contrato, não há padrão de evidência a exigir.
21
+
22
+ ## Passos
23
+
24
+ 1. **Liste as afirmações.** Extraia da story tudo que se declara feito: cada AC marcada, cada item de
25
+ Completion Notes, cada "corrigido/validado". Cada uma é uma alegação que precisa de prova.
26
+ 2. **Case alegação ↔ evidência.** Para cada afirmação, localize a prova: o teste que a cobre (e está
27
+ verde), o log, o screenshot, a saída de console. Alegação sem prova é buraco nomeado, não fechado.
28
+ 3. **Verifique a qualidade da prova.** O teste de fato exercita o AC (não é asserção vazia)? O
29
+ screenshot mostra o estado certo? O log é da execução real, não copiado? Prova fraca = sem prova.
30
+ 4. **Confirme a rastreabilidade.** Toda AC mapeia a pelo menos um teste em Given-When-Then. AC órfã
31
+ entra como gap com severidade — não fecho os olhos para o que não foi coberto.
32
+ 5. **Pontue a suficiência.** Cobertura completa com prova forte → PASS. Lacunas em área de baixo risco
33
+ → CONCERNS documentado. Lacuna em caminho crítico/dado sensível → FAIL.
34
+ 6. **Escreva o resultado** SOMENTE na seção "QA Results": tabela alegação→evidência, gaps com
35
+ severidade, e o veredito de suficiência.
36
+ 7. **Roteie.** Gaps que bloqueiam → `*create-fix-request` ao @dev pedindo a evidência ausente
37
+ (teste, log, screenshot).
38
+
39
+ ## Critério de pronto (DoD)
40
+
41
+ - [ ] Todas as afirmações de "pronto/funciona" listadas
42
+ - [ ] Cada alegação casada com evidência verificável (ou marcada como gap)
43
+ - [ ] Qualidade da prova verificada (teste real, não asserção vazia)
44
+ - [ ] Cada AC rastreada a teste Given-When-Then; órfãs registradas
45
+ - [ ] Veredito de suficiência escrito só na seção QA Results e roteado
46
+
47
+ ## Falha / recuperação
48
+
49
+ - **Afirmação de "funciona" sem nenhuma evidência** → CONCERNS no mínimo; FAIL se for caminho crítico.
50
+ Devolvo pedindo a prova.
51
+ - **Teste existe mas é asserção vazia / não exercita o AC** → trato como sem prova; fix-request ao @dev.
52
+ - **AC marcada feita mas sem teste** → gap de rastreabilidade registrado no gate, severidade conforme
53
+ risco.
54
+ - **A evidência exige rodar o app/browser** → encadeio `*console-check` ou peço ao @dev o artefato;
55
+ não infiro o resultado.
@@ -0,0 +1,55 @@
1
+ ---
2
+ id: qa-false-positive-detection
3
+ agent: qa
4
+ title: Detecção de falso-positivo em correções
5
+ inputs: [story, diff, teste de regressão]
6
+ outputs: [veredito de autenticidade da correção, entrada na seção QA Results]
7
+ elicit: false
8
+ modes: [interactive, yolo]
9
+ ---
10
+
11
+ # Detecção de falso-positivo em correções
12
+
13
+ **Objetivo:** verificar que um "bug corrigido" foi de fato corrigido na causa-raiz — com um teste que
14
+ reproduzia o bug original e agora guarda a porta — e não apenas mascarado no sintoma.
15
+
16
+ **Pré-condições:**
17
+ - A story/fix declara um defeito como corrigido. Sem afirmação de correção, esta task não se aplica.
18
+ - Existe um `diff` da correção e (idealmente) o teste de regressão. Se o teste não existe, esse já é o
19
+ primeiro sinal de falso-positivo.
20
+
21
+ ## Passos
22
+
23
+ 1. **Reconstrua o bug original.** A partir da story/fix-request, identifique o sintoma, o input que o
24
+ dispara e o comportamento esperado. Se não dá para reconstruir, o defeito nunca foi entendido —
25
+ suspeito.
26
+ 2. **Exija o teste que reproduz.** Confirme que existe um teste que **falharia** no código antigo e
27
+ **passa** no novo. Sem esse teste, a correção é hipótese, não fato → CONCERNS no mínimo.
28
+ 3. **Verifique causa, não sintoma.** Leia o diff: a mudança ataca a raiz (validação, lógica, estado) ou
29
+ só silencia o efeito (try/catch vazio, guarda no ponto errado, valor mágico)? Mascaramento → FAIL.
30
+ 4. **Cace o efeito colateral.** A correção quebra algum consumidor ou abre um caminho de erro novo?
31
+ Caminho feliz consertado mas borda quebrada continua sendo defeito.
32
+ 5. **Confirme a regressão na suíte.** Rode os testes da área: o de regressão verde E os antigos
33
+ continuam verdes. Verde no novo + vermelho no antigo = correção que quebrou outra coisa.
34
+ 6. **Emita o veredito** SOMENTE na seção "QA Results": correção autêntica (PASS), suspeita
35
+ (CONCERNS, com o que falta) ou falso-positivo (FAIL, com a evidência do mascaramento).
36
+ 7. **Roteie.** FAIL/CONCERNS → `*create-fix-request` ao @dev, nomeando o teste de regressão ausente ou
37
+ a causa não atacada.
38
+
39
+ ## Critério de pronto (DoD)
40
+
41
+ - [ ] Bug original reconstruído (sintoma + input + esperado)
42
+ - [ ] Teste de regressão confirmado: falha no antigo, passa no novo
43
+ - [ ] Diff ataca a causa-raiz, não o sintoma
44
+ - [ ] Suíte da área inteira verde (sem regressão colateral)
45
+ - [ ] Veredito escrito só na seção QA Results e roteado
46
+
47
+ ## Falha / recuperação
48
+
49
+ - **Não existe teste que reproduza o bug** → CONCERNS/FAIL: devolvo ao @dev pedindo o teste de
50
+ regressão. Sem ele, não há prova de correção.
51
+ - **A correção mascara o sintoma** (catch vazio, flag, valor mágico) → FAIL com a linha apontada;
52
+ fix-request ao @dev.
53
+ - **A correção introduziu regressão em outro teste** → FAIL; aponto o teste quebrado e devolvo.
54
+ - **Não consigo reconstruir o bug a partir da story** → registro a lacuna e devolvo ao @sm/@po; não
55
+ invento o defeito que faltou descrever.
@@ -0,0 +1,55 @@
1
+ ---
2
+ id: qa-fix-issues
3
+ agent: dev
4
+ title: Corrigir issues do QA_FIX_REQUEST.md (workflow de 8 fases)
5
+ inputs: [QA_FIX_REQUEST.md, story]
6
+ outputs: [código corrigido, testes, QA_FIX_RESPONSE.md, File List atualizada]
7
+ elicit: false
8
+ modes: [yolo, interactive]
9
+ ---
10
+
11
+ # Corrigir issues do QA_FIX_REQUEST.md (workflow de 8 fases)
12
+
13
+ **Objetivo:** executar o ciclo estruturado de correção de um `QA_FIX_REQUEST.md` — da triagem à
14
+ resposta — fechando cada issue listada com correção testada e rastreável.
15
+
16
+ **Pré-condições:**
17
+ - Existe um `QA_FIX_REQUEST.md` com issues numeradas, cada uma com severidade e AC/local afetado.
18
+ Sem esse arquivo, **pare** — esta task opera sobre ele.
19
+ - A story de origem está acessível (para rastrear cada issue ao seu AC). Se faltar, devolvo ao @qa.
20
+
21
+ ## Passos
22
+
23
+ 1. **Fase 1 — Triagem.** Leio todas as issues do `QA_FIX_REQUEST.md`, classifico por severidade
24
+ (CRITICAL/HIGH/MEDIUM/LOW) e separo o que é minha lane (código/teste) do que é AC/escopo (devolvo
25
+ ao @sm/@po, não corrijo).
26
+ 2. **Fase 2 — Plano de ataque.** Ordeno as issues: bloqueadores primeiro; agrupo as que tocam os
27
+ mesmos arquivos para evitar idas e vindas. Sem super-engenharia: o plano é uma lista, não um doc.
28
+ 3. **Fase 3 — Reprodução.** Para cada issue, reproduzo o problema (teste que falha / passo que
29
+ quebra) antes de corrigir. Não corrijo o que não consigo reproduzir — peço evidência ao @qa.
30
+ 4. **Fase 4 — Correção.** Aplico a correção mínima por issue, reusando o que já existe antes de criar.
31
+ 5. **Fase 5 — Teste.** Escrevo/ajusto o teste que prova que a issue foi fechada (inclui o caso de
32
+ borda que a quebrou). Issue sem teste verde não está fechada.
33
+ 6. **Fase 6 — Regressão.** Rodo lint + typecheck + toda a suíte. Corrigir uma issue não pode abrir
34
+ outra. Vermelho não fecha o ciclo.
35
+ 7. **Fase 7 — Resposta.** Escrevo `QA_FIX_RESPONSE.md` mapeando cada issue → correção aplicada →
36
+ teste que a prova → arquivos tocados. Atualizo a File List da story.
37
+ 8. **Fase 8 — Roteamento.** Commit local (conventional commit citando o id da story). **Não** dou
38
+ `git push` — delego ao @devops. Roteio o `QA_FIX_RESPONSE.md` de volta ao @qa para re-review.
39
+
40
+ ## Critério de pronto (DoD)
41
+
42
+ - [ ] Toda issue da minha lane no `QA_FIX_REQUEST.md` foi reproduzida, corrigida e coberta por teste
43
+ - [ ] Issues de AC/escopo foram devolvidas ao @sm/@po, não "consertadas" por mim
44
+ - [ ] Regressão completa verde: lint limpo, typecheck 0, suíte passando
45
+ - [ ] `QA_FIX_RESPONSE.md` escrito com o mapa issue → fix → teste → arquivos
46
+ - [ ] File List atualizada; commit local feito, sem `git push` (delegado ao @devops)
47
+
48
+ ## Falha / recuperação
49
+
50
+ - **Uma issue não reproduz** → não corrijo às cegas; peço ao @qa o passo/evidência de reprodução.
51
+ - **Uma issue é de AC/escopo, não de código** → devolvo ao @sm/@po; registro no `QA_FIX_RESPONSE.md`
52
+ como fora de escopo de correção de código.
53
+ - **A correção abre regressão** → paro, registro e resolvo antes de fechar o ciclo.
54
+ - **3 tentativas falhas na mesma issue** → HALT, marco a issue como bloqueada no `QA_FIX_RESPONSE.md`
55
+ e reporto; não empurro com gambiarra.
@@ -0,0 +1,53 @@
1
+ ---
2
+ id: qa-gate
3
+ agent: qa
4
+ title: Emitir a decisão de quality gate
5
+ inputs: [story, achados do review]
6
+ outputs: [decisão PASS/CONCERNS/FAIL/WAIVED na seção "QA Results", roteamento]
7
+ elicit: false
8
+ modes: [interactive, yolo]
9
+ ---
10
+
11
+ # Emitir a decisão de quality gate
12
+
13
+ **Objetivo:** consolidar os achados do review numa decisão de gate única e fundamentada —
14
+ PASS / CONCERNS / FAIL / WAIVED — rastreável a risco real, escrita só na seção "QA Results".
15
+
16
+ **Pré-condições:**
17
+ - O review já produziu achados (risco, scan, segurança, NFR, rastreabilidade, evidência). Sem
18
+ achados, **pare**: gate sem análise é carimbo, não veredito.
19
+ - A story está em `Ready for Review` ou `InReview`. Não emito gate sobre story em `Draft`.
20
+
21
+ ## Passos
22
+
23
+ 1. **Reúno os achados** de cada eixo do review e classifico por severidade (CRITICAL/HIGH/MEDIUM/LOW),
24
+ cada um rastreado a uma AC, NFR ou CON. Achado sem rastro não entra na decisão.
25
+ 2. **Aplico a régua de decisão:**
26
+ - **FAIL** — há CRITICAL/HIGH aberto, AC não atendida, ou ausência de evidência em ponto de risco.
27
+ - **CONCERNS** — sem bloqueador, mas há dívida registrada (MEDIUM/LOW, gap não-crítico) que o time
28
+ deve conhecer; progresso não é barrado por preferência estética.
29
+ - **PASS** — todas as ACs atendidas com teste verde, sem CRITICAL/HIGH, evidência presente.
30
+ - **WAIVED** — risco conhecido e explicitamente aceito pelo dono (@pm/@po), com justificativa
31
+ registrada. Eu não dou waiver sozinha — registro o aceite.
32
+ 3. **Fundamento a decisão.** Para cada item que pesa no veredito, escrevo o porquê e o rastro à AC/
33
+ NFR/CON. Advisory, nunca arbitrário: bloqueio só com motivo rastreável.
34
+ 4. **Escrevo a seção "QA Results"** da story com o veredito, os achados e a fundamentação. NÃO toco em
35
+ Status, ACs, Tasks, Dev Notes ou Change Log — alterar o contrato que julgo é conflito de interesse.
36
+ 5. **Roteio.** FAIL/CONCERNS → fix-request (`qa-create-fix-request`) ao @dev. PASS e pronto pra subir
37
+ → @devops. Eu nunca subo nada eu mesma.
38
+
39
+ ## Critério de pronto (DoD)
40
+
41
+ - [ ] Cada achado rastreado a AC/NFR/CON e classificado por severidade
42
+ - [ ] Veredito único emitido pela régua (PASS/CONCERNS/FAIL/WAIVED)
43
+ - [ ] Fundamentação escrita para cada item que pesou na decisão
44
+ - [ ] Apenas a seção "QA Results" foi escrita
45
+ - [ ] WAIVED, se houver, registra aceite explícito do dono — não decisão minha
46
+ - [ ] Saída roteada (@dev ou @devops)
47
+
48
+ ## Falha / recuperação
49
+
50
+ - **Achado sem rastro a AC/NFR/CON** → descarto do veredito; não invento critério avulso.
51
+ - **Pressão para PASS sem evidência** → recuso; CONCERNS no mínimo. Nunca aprovo no escuro.
52
+ - **Pedido de WAIVED sem dono identificado** → HALT até o aceite explícito do @pm/@po.
53
+ - **Veredito exige correção** → delego ao @dev via fix-request; não comito nem corrijo código.
@@ -0,0 +1,58 @@
1
+ ---
2
+ id: qa-migration-validation
3
+ agent: qa
4
+ title: Validação de migrations de schema
5
+ inputs: [story, arquivos de migration]
6
+ outputs: [veredito de segurança da migration, entrada na seção QA Results]
7
+ elicit: false
8
+ modes: [interactive, yolo]
9
+ ---
10
+
11
+ # Validação de migrations de schema
12
+
13
+ **Objetivo:** assegurar que uma migration de schema é reversível, não-destrutiva por acidente e segura
14
+ para rodar em produção — antes que ela corrompa dado ou trave a aplicação.
15
+
16
+ **Pré-condições:**
17
+ - A story toca o schema e existe pelo menos um arquivo de migration. Sem migration, esta task não se
18
+ aplica.
19
+ - Eu valido a segurança do scan; o desenho fino de DDL e otimização de query é do @data-engineer —
20
+ delego o que passar do meu escopo de gate.
21
+
22
+ ## Passos
23
+
24
+ 1. **Identifique o tipo de mudança.** Aditiva (coluna/tabela nova) é baixo risco; destrutiva (drop,
25
+ rename, mudança de tipo, NOT NULL em coluna populada) é alto risco e recebe mergulho profundo.
26
+ 2. **Verifique a reversibilidade.** Existe `down`/rollback que desfaz a mudança sem perder dado? Drop
27
+ sem caminho de volta é FAIL salvo justificativa explícita na story.
28
+ 3. **Cace destruição implícita.** `DROP COLUMN`, `TRUNCATE`, mudança de tipo que trunca, `NOT NULL`
29
+ sem default em tabela com linhas — cada um é potencial perda de dado. Marque com evidência.
30
+ 4. **Avalie o impacto de lock/downtime.** A migration trava a tabela por quanto tempo? Em tabela grande,
31
+ `ALTER` síncrono pode derrubar a app. Sinalize para estratégia online se o risco apontar.
32
+ 5. **Confirme ordem e idempotência.** A migration roda limpa em base vazia E em base existente? É
33
+ idempotente ou falha se rodar duas vezes? Numeração/timestamp em ordem correta.
34
+ 6. **Rastreie ao contrato.** A mudança de schema corresponde a uma AC/spec? Schema inventado fora da
35
+ story viola No Invention → bloqueio.
36
+ 7. **Emita o veredito** SOMENTE na seção "QA Results": tipo, reversibilidade, riscos destrutivos,
37
+ impacto de lock, e PASS/CONCERNS/FAIL com evidência.
38
+ 8. **Roteie.** Risco destrutivo ou irreversível → `*create-fix-request` ao @dev e delego validação fina
39
+ ao @data-engineer. A subida (aplicar em prod) é sempre do @devops — eu nunca aplico migration.
40
+
41
+ ## Critério de pronto (DoD)
42
+
43
+ - [ ] Tipo de mudança classificado (aditiva vs destrutiva)
44
+ - [ ] Reversibilidade verificada (rollback existe e funciona)
45
+ - [ ] Riscos destrutivos e de lock/downtime sinalizados com evidência
46
+ - [ ] Idempotência e ordem confirmadas
47
+ - [ ] Mudança rastreia a uma AC/spec
48
+ - [ ] Veredito escrito só na seção QA Results e roteado
49
+
50
+ ## Falha / recuperação
51
+
52
+ - **Migration destrutiva sem rollback** → FAIL; fix-request ao @dev e validação fina ao
53
+ @data-engineer.
54
+ - **Risco de lock/downtime em tabela grande** → CONCERNS com recomendação de migration online; delego
55
+ a estratégia ao @data-engineer.
56
+ - **Schema não rastreia a nenhuma AC/spec** → bloqueio por No Invention; devolvo ao @sm/@po.
57
+ - **Preciso aplicar a migration para validar comportamento** → eu não aplico em prod; peço ambiente de
58
+ validação e delego a aplicação ao @devops.
@@ -0,0 +1,45 @@
1
+ ---
2
+ id: qa-nfr-assess
3
+ agent: qa
4
+ title: Validar requisitos não-funcionais da story
5
+ inputs: [story]
6
+ outputs: [avaliação de NFRs (perf, segurança, confiabilidade, manutenibilidade) com veredito por eixo]
7
+ elicit: false
8
+ modes: [interactive, yolo]
9
+ ---
10
+
11
+ # Validar requisitos não-funcionais da story
12
+
13
+ **Objetivo:** verificar que a story atende os NFRs que importam para seu risco — performance,
14
+ segurança, confiabilidade, manutenibilidade — com evidência por eixo, não com afirmação.
15
+
16
+ **Pré-condições:**
17
+ - A story existe e o risco já foi perfilado (`qa-risk-profile`), para calibrar profundidade.
18
+ - Existem NFRs/CONs rastreáveis (na story, na spec ou no padrão do projeto). Sem alvo, registro a
19
+ ausência como gap — não invento o número.
20
+
21
+ ## Passos
22
+
23
+ 1. **Seleciono os eixos relevantes** pelo perfil de risco. Caminho crítico exige perf e
24
+ confiabilidade; dado sensível exige segurança. Não avalio eixo irrelevante só para encher.
25
+ 2. **Para cada eixo, defino o alvo** rastreável (ex.: latência p95 < X, sem secret em log, retry em
26
+ falha transitória). Alvo vem da story/spec/CON; se ausente, registro gap.
27
+ 3. **Coleto evidência** contra o alvo: resultado de teste de carga, scan de segurança, log de falha
28
+ injetada, métrica. Evidência ou não aconteceu — afirmação de "é rápido" não vale.
29
+ 4. **Emito veredito por eixo:** PASS (alvo atingido com evidência), CONCERNS (dívida sem bloqueio),
30
+ FAIL (alvo violado ou sem evidência em ponto de risco).
31
+ 5. **Consolido** os vereditos como insumo para `qa-gate`, cada um rastreado ao NFR/CON correspondente.
32
+
33
+ ## Critério de pronto (DoD)
34
+
35
+ - [ ] Eixos de NFR selecionados pelo perfil de risco, não por checklist cego
36
+ - [ ] Cada eixo tem alvo rastreável (story/spec/CON) ou gap registrado
37
+ - [ ] Cada veredito sustentado por evidência concreta
38
+ - [ ] Vereditos consolidados e rastreados para o gate
39
+
40
+ ## Falha / recuperação
41
+
42
+ - **Eixo de risco sem alvo definido** → registro gap e levo ao gate como CONCERNS; não estipulo o
43
+ número eu mesma.
44
+ - **Sem evidência para um eixo crítico** → FAIL nesse eixo; não presumo conformidade.
45
+ - **Correção de NFR exige código/infra** → delego ao @dev (código) ou @devops (infra) via fix-request.