@polymorphism-tech/morph-spec 2.4.0 → 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 (218) hide show
  1. package/CLAUDE.md +158 -26
  2. package/LICENSE +72 -72
  3. package/bin/detect-agents.js +225 -225
  4. package/bin/morph-spec.js +8 -0
  5. package/bin/render-template.js +302 -302
  6. package/bin/semantic-detect-agents.js +246 -246
  7. package/bin/validate-agents-skills.js +251 -251
  8. package/bin/validate-agents.js +69 -69
  9. package/bin/validate-phase.js +263 -263
  10. package/content/.azure/README.md +293 -293
  11. package/content/.azure/docs/azure-devops-setup.md +454 -454
  12. package/content/.azure/docs/branch-strategy.md +398 -398
  13. package/content/.azure/docs/local-development.md +515 -515
  14. package/content/.azure/pipelines/pipeline-variables.yml +34 -34
  15. package/content/.azure/pipelines/prod-pipeline.yml +319 -319
  16. package/content/.azure/pipelines/staging-pipeline.yml +234 -234
  17. package/content/.azure/pipelines/templates/build-dotnet.yml +75 -75
  18. package/content/.azure/pipelines/templates/deploy-app-service.yml +94 -94
  19. package/content/.azure/pipelines/templates/deploy-container-app.yml +120 -120
  20. package/content/.azure/pipelines/templates/infra-deploy.yml +90 -90
  21. package/content/.claude/commands/morph-archive.md +79 -79
  22. package/content/.claude/commands/morph-deploy.md +529 -0
  23. package/content/.claude/commands/morph-infra.md +209 -209
  24. package/content/.claude/commands/morph-preflight.md +227 -227
  25. package/content/.claude/commands/morph-troubleshoot.md +122 -122
  26. package/content/.claude/settings.local.json +15 -15
  27. package/content/.claude/skills/infra/azure-deploy-specialist.md +699 -0
  28. package/content/.claude/skills/level-0-meta/README.md +7 -0
  29. package/content/.claude/skills/{checklists → level-0-meta}/morph-checklist.md +117 -117
  30. package/content/.claude/skills/level-1-workflows/README.md +7 -0
  31. package/content/.claude/skills/{workflows → level-1-workflows}/morph-replicate.md +213 -213
  32. package/content/.claude/skills/{workflows → level-1-workflows}/phase-clarify.md +131 -131
  33. package/content/.claude/skills/{workflows → level-1-workflows}/phase-design.md +213 -205
  34. package/content/.claude/skills/{workflows → level-1-workflows}/phase-setup.md +106 -92
  35. package/content/.claude/skills/{workflows → level-1-workflows}/phase-tasks.md +164 -164
  36. package/content/.claude/skills/{workflows → level-1-workflows}/phase-uiux.md +169 -138
  37. package/content/.claude/skills/level-2-domains/README.md +14 -0
  38. package/content/.claude/skills/{specialists → level-2-domains/quality}/testing-specialist.md +126 -126
  39. package/content/.claude/skills/level-3-technologies/README.md +7 -0
  40. package/content/.claude/skills/level-4-patterns/README.md +7 -0
  41. package/content/.claude/skills/specialists/prompt-engineer.md +189 -0
  42. package/content/.claude/skills/specialists/seo-growth-hacker.md +320 -0
  43. package/content/.morph/.morphversion +5 -5
  44. package/content/.morph/archive/.gitkeep +25 -25
  45. package/content/.morph/config/agents.json +742 -358
  46. package/content/.morph/config/config.template.json +33 -0
  47. package/content/.morph/docs/STORY-DRIVEN-DEVELOPMENT.md +392 -392
  48. package/content/.morph/docs/workflows/enforcement-pipeline.md +668 -0
  49. package/content/.morph/examples/api-nextjs/README.md +241 -241
  50. package/content/.morph/examples/api-nextjs/contracts.ts +307 -307
  51. package/content/.morph/examples/api-nextjs/spec.md +399 -399
  52. package/content/.morph/examples/api-nextjs/tasks.md +168 -168
  53. package/content/.morph/examples/micro-saas/README.md +125 -125
  54. package/content/.morph/examples/micro-saas/contracts.cs +358 -358
  55. package/content/.morph/examples/micro-saas/decisions.md +246 -246
  56. package/content/.morph/examples/micro-saas/spec.md +236 -236
  57. package/content/.morph/examples/micro-saas/tasks.md +150 -150
  58. package/content/.morph/examples/multi-agent/README.md +309 -309
  59. package/content/.morph/examples/multi-agent/contracts.cs +433 -433
  60. package/content/.morph/examples/multi-agent/spec.md +479 -479
  61. package/content/.morph/examples/multi-agent/tasks.md +185 -185
  62. package/content/.morph/examples/scheduled-reports/decisions.md +158 -158
  63. package/content/.morph/examples/scheduled-reports/proposal.md +95 -95
  64. package/content/.morph/examples/scheduled-reports/spec.md +267 -267
  65. package/content/.morph/examples/state-v3.json +188 -188
  66. package/content/.morph/features/.gitkeep +25 -25
  67. package/content/.morph/hooks/README.md +158 -0
  68. package/content/.morph/hooks/pre-commit-all.sh +48 -48
  69. package/content/.morph/hooks/pre-commit-specs.sh +49 -49
  70. package/content/.morph/hooks/pre-commit-tests.sh +60 -60
  71. package/content/.morph/hooks/task-completed.js +73 -0
  72. package/content/.morph/hooks/teammate-idle.js +68 -0
  73. package/content/.morph/project.md +160 -160
  74. package/content/.morph/schemas/agent.schema.json +296 -296
  75. package/content/.morph/schemas/tasks.schema.json +220 -220
  76. package/content/.morph/specs/.gitkeep +20 -20
  77. package/content/.morph/standards/agent-teams-workflow.md +474 -0
  78. package/content/.morph/standards/coding.md +377 -377
  79. package/content/.morph/standards/fluent-ui-setup.md +590 -590
  80. package/content/.morph/standards/migration-guide.md +514 -514
  81. package/content/.morph/standards/passkeys-auth.md +423 -423
  82. package/content/.morph/standards/vector-search-rag.md +536 -536
  83. package/content/.morph/state.json +17 -17
  84. package/content/.morph/templates/CONTEXT-FEATURE.md +276 -0
  85. package/content/.morph/templates/CONTEXT.md +170 -0
  86. package/content/.morph/templates/FluentDesignTheme.cs +149 -149
  87. package/content/.morph/templates/MudTheme.cs +281 -281
  88. package/content/.morph/templates/clarify-questions.md +159 -159
  89. package/content/.morph/templates/component.razor +239 -239
  90. package/content/.morph/templates/contracts/Commands.cs +74 -74
  91. package/content/.morph/templates/contracts/Entities.cs +25 -25
  92. package/content/.morph/templates/contracts/Queries.cs +74 -74
  93. package/content/.morph/templates/contracts/README.md +74 -74
  94. package/content/.morph/templates/contracts.cs +217 -217
  95. package/content/.morph/templates/design-system.css +226 -226
  96. package/content/.morph/templates/infra/.dockerignore.example +89 -89
  97. package/content/.morph/templates/infra/Dockerfile.example +82 -82
  98. package/content/.morph/templates/infra/README.md +286 -286
  99. package/content/.morph/templates/infra/app-insights.bicep +63 -63
  100. package/content/.morph/templates/infra/app-service.bicep +164 -164
  101. package/content/.morph/templates/infra/azure-pipelines-deploy.yml +480 -0
  102. package/content/.morph/templates/infra/container-app-env.bicep +49 -49
  103. package/content/.morph/templates/infra/container-app.bicep +156 -156
  104. package/content/.morph/templates/infra/deploy-checklist.md +426 -426
  105. package/content/.morph/templates/infra/deploy.ps1 +229 -229
  106. package/content/.morph/templates/infra/deploy.sh +208 -208
  107. package/content/.morph/templates/infra/key-vault.bicep +91 -91
  108. package/content/.morph/templates/infra/main.bicep +189 -189
  109. package/content/.morph/templates/infra/parameters.dev.json +29 -29
  110. package/content/.morph/templates/infra/parameters.prod.json +29 -29
  111. package/content/.morph/templates/infra/parameters.staging.json +29 -29
  112. package/content/.morph/templates/infra/sql-database.bicep +103 -103
  113. package/content/.morph/templates/infra/storage.bicep +106 -106
  114. package/content/.morph/templates/integrations/asaas-client.cs +387 -387
  115. package/content/.morph/templates/integrations/asaas-webhook.cs +351 -351
  116. package/content/.morph/templates/integrations/azure-identity-config.cs +288 -288
  117. package/content/.morph/templates/integrations/clerk-config.cs +258 -258
  118. package/content/.morph/templates/job.cs +171 -171
  119. package/content/.morph/templates/migration.cs +83 -83
  120. package/content/.morph/templates/repository.cs +141 -141
  121. package/content/.morph/templates/saas/subscription.cs +347 -347
  122. package/content/.morph/templates/saas/tenant.cs +338 -338
  123. package/content/.morph/templates/service.cs +139 -139
  124. package/content/.morph/templates/sprint-status.yaml +68 -68
  125. package/content/.morph/templates/story.md +143 -143
  126. package/content/.morph/templates/test.cs +239 -239
  127. package/content/.morph/templates/ui-design-system.md +286 -286
  128. package/content/.morph/templates/ui-flows.md +336 -336
  129. package/content/.morph/templates/ui-mockups.md +133 -133
  130. package/content/.morph/test-infra/example.bicep +59 -59
  131. package/content/README.md +79 -79
  132. package/detectors/config-detector.js +223 -223
  133. package/detectors/conversation-analyzer.js +163 -163
  134. package/detectors/index.js +84 -84
  135. package/detectors/standards-generator.js +275 -275
  136. package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.svg +977 -977
  137. package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.svg +1048 -1048
  138. package/docs/api/scripts/collapse.js +38 -38
  139. package/docs/api/scripts/commonNav.js +28 -28
  140. package/docs/api/scripts/linenumber.js +25 -25
  141. package/docs/api/scripts/nav.js +12 -12
  142. package/docs/api/scripts/polyfill.js +3 -3
  143. package/docs/api/scripts/prettify/Apache-License-2.0.txt +202 -202
  144. package/docs/api/scripts/prettify/lang-css.js +2 -2
  145. package/docs/api/scripts/prettify/prettify.js +28 -28
  146. package/docs/api/scripts/search.js +98 -98
  147. package/docs/api/styles/jsdoc.css +776 -776
  148. package/docs/api/styles/prettify.css +80 -80
  149. package/docs/examples.md +328 -328
  150. package/docs/templates.md +418 -418
  151. package/package.json +1 -1
  152. package/scripts/postinstall.js +132 -132
  153. package/src/commands/advance-phase.js +83 -0
  154. package/src/commands/analyze-blazor-concurrency.js +193 -193
  155. package/src/commands/create-story.js +351 -351
  156. package/src/commands/deploy.js +780 -0
  157. package/src/commands/detect-agents.js +34 -6
  158. package/src/commands/detect.js +104 -104
  159. package/src/commands/generate-context.js +40 -0
  160. package/src/commands/generate.js +149 -149
  161. package/src/commands/lint-fluent.js +352 -352
  162. package/src/commands/rollback-phase.js +185 -185
  163. package/src/commands/session-summary.js +291 -291
  164. package/src/commands/shard-spec.js +224 -224
  165. package/src/commands/sprint-status.js +250 -250
  166. package/src/commands/state.js +333 -333
  167. package/src/commands/sync.js +167 -167
  168. package/src/commands/troubleshoot.js +222 -222
  169. package/src/commands/validate-blazor-state.js +210 -210
  170. package/src/commands/validate-blazor.js +156 -156
  171. package/src/commands/validate-css.js +84 -84
  172. package/src/commands/validate-phase.js +221 -221
  173. package/src/lib/blazor-concurrency-analyzer.js +288 -288
  174. package/src/lib/blazor-state-validator.js +291 -291
  175. package/src/lib/blazor-validator.js +374 -374
  176. package/src/lib/context-generator.js +513 -0
  177. package/src/lib/css-validator.js +352 -352
  178. package/src/lib/design-system-detector.js +187 -0
  179. package/src/lib/design-system-generator.js +298 -298
  180. package/src/lib/design-system-scaffolder.js +299 -0
  181. package/src/lib/hook-executor.js +256 -0
  182. package/src/lib/learning-system.js +520 -520
  183. package/src/lib/mockup-generator.js +366 -366
  184. package/src/lib/spec-validator.js +258 -0
  185. package/src/lib/standards-context-injector.js +287 -0
  186. package/src/lib/team-orchestrator.js +322 -0
  187. package/src/lib/troubleshoot-grep.js +194 -194
  188. package/src/lib/troubleshoot-index.js +144 -144
  189. package/src/lib/ui-detector.js +350 -350
  190. package/src/lib/validation-runner.js +65 -13
  191. package/src/lib/validators/architecture-validator.js +387 -387
  192. package/src/lib/validators/design-system-validator.js +231 -0
  193. package/src/lib/validators/package-validator.js +360 -360
  194. package/src/lib/validators/ui-contrast-validator.js +422 -422
  195. package/src/utils/file-copier.js +9 -1
  196. package/src/utils/logger.js +32 -32
  197. package/src/utils/version-checker.js +175 -175
  198. /package/content/.claude/skills/{checklists → level-0-meta}/code-review.md +0 -0
  199. /package/content/.claude/skills/{checklists → level-0-meta}/simulation-checklist.md +0 -0
  200. /package/content/.claude/skills/{specialists → level-2-domains/ai-agents}/ai-system-architect.md +0 -0
  201. /package/content/.claude/skills/{specialists → level-2-domains/architecture}/po-pm-advisor.md +0 -0
  202. /package/content/.claude/skills/{specialists → level-2-domains/architecture}/standards-architect.md +0 -0
  203. /package/content/.claude/skills/{specialists → level-2-domains/backend}/dotnet-senior.md +0 -0
  204. /package/content/.claude/skills/{specialists → level-2-domains/backend}/ef-modeler.md +0 -0
  205. /package/content/.claude/skills/{specialists → level-2-domains/backend}/hangfire-orchestrator.md +0 -0
  206. /package/content/.claude/skills/{specialists → level-2-domains/backend}/ms-agent-expert.md +0 -0
  207. /package/content/.claude/skills/{stacks/dotnet-blazor.md → level-2-domains/frontend/blazor-builder.md} +0 -0
  208. /package/content/.claude/skills/{stacks/dotnet-nextjs.md → level-2-domains/frontend/nextjs-expert.md} +0 -0
  209. /package/content/.claude/skills/{specialists → level-2-domains/frontend}/ui-ux-designer.md +0 -0
  210. /package/content/.claude/skills/{specialists → level-2-domains/infrastructure}/azure-architect.md +0 -0
  211. /package/content/.claude/skills/{infra → level-2-domains/infrastructure}/bicep-architect.md +0 -0
  212. /package/content/.claude/skills/{infra → level-2-domains/infrastructure}/container-specialist.md +0 -0
  213. /package/content/.claude/skills/{infra → level-2-domains/infrastructure}/devops-engineer.md +0 -0
  214. /package/content/.claude/skills/{integrations → level-2-domains/integrations}/asaas-financial.md +0 -0
  215. /package/content/.claude/skills/{integrations → level-2-domains/integrations}/azure-identity.md +0 -0
  216. /package/content/.claude/skills/{integrations → level-2-domains/integrations}/clerk-auth.md +0 -0
  217. /package/content/.claude/skills/{integrations → level-2-domains/integrations}/resend-email.md +0 -0
  218. /package/content/.claude/skills/{specialists → level-2-domains/quality}/code-analyzer.md +0 -0
@@ -1,398 +1,398 @@
1
- # Estratégia de Branches - MORPH-SPEC
2
-
3
- > **Git Flow simplificado para one-person business**
4
-
5
- ---
6
-
7
- ## 🌳 Estrutura de Branches
8
-
9
- ```
10
- main/master (produção)
11
-
12
- │ PR (com aprovação)
13
-
14
- staging (homologação)
15
-
16
- │ PR (automático merge)
17
-
18
- feature/* (desenvolvimento)
19
- ```
20
-
21
- ###**Branches Principais**
22
-
23
- | Branch | Propósito | Deploy | Aprovação |
24
- |--------|-----------|--------|-----------|
25
- | **`main`** ou **`master`** | Produção | Container Apps (always-on) | ✅ Obrigatória |
26
- | **`staging`** | Homologação/QA | Container Apps (scale-to-zero) | ❌ Nenhuma |
27
-
28
- ### **Branches Temporárias**
29
-
30
- | Padrão | Exemplo | Propósito |
31
- |--------|---------|-----------|
32
- | `feature/*` | `feature/add-payments` | Nova funcionalidade |
33
- | `bugfix/*` | `bugfix/fix-login` | Correção de bug |
34
- | `hotfix/*` | `hotfix/critical-security` | Correção urgente em prod |
35
-
36
- ---
37
-
38
- ## 🔄 Workflow Completo
39
-
40
- ### 1. Nova Feature
41
-
42
- ```bash
43
- # Atualizar staging
44
- git checkout staging
45
- git pull origin staging
46
-
47
- # Criar feature branch
48
- git checkout -b feature/pagamentos-asaas
49
-
50
- # Desenvolver localmente
51
- # ... code, test, commit ...
52
-
53
- # Push
54
- git push origin feature/pagamentos-asaas
55
-
56
- # Criar PR para staging
57
- ```
58
-
59
- **Azure DevOps**:
60
- 1. **Repos** → **Pull Requests** → **New**
61
- 2. Source: `feature/pagamentos-asaas`
62
- 3. Target: `staging`
63
- 4. Title: "feat: integração com Asaas para pagamentos recorrentes"
64
- 5. Description: Detalhar mudanças
65
- 6. **Create**
66
- 7. **Approve** (você mesmo) e **Complete**
67
-
68
- **Resultado**: Pipeline staging triggado automaticamente
69
-
70
- ---
71
-
72
- ### 2. Bug Fix
73
-
74
- ```bash
75
- # Partir de staging
76
- git checkout staging
77
- git pull origin staging
78
-
79
- # Criar bugfix branch
80
- git checkout -b bugfix/corrigir-calculo-total
81
-
82
- # Corrigir + testar
83
- git add .
84
- git commit -m "fix: corrige cálculo de total no carrinho"
85
-
86
- # Push e PR para staging
87
- git push origin bugfix/corrigir-calculo-total
88
- ```
89
-
90
- ---
91
-
92
- ### 3. Hotfix (Produção)
93
-
94
- ```bash
95
- # Partir de main (produção)
96
- git checkout main
97
- git pull origin main
98
-
99
- # Criar hotfix branch
100
- git checkout -b hotfix/vulnerabilidade-critica
101
-
102
- # Corrigir urgentemente
103
- git add .
104
- git commit -m "fix: corrige vulnerabilidade SQL injection"
105
-
106
- # Push
107
- git push origin hotfix/vulnerabilidade-critica
108
-
109
- # Criar 2 PRs:
110
- # 1. hotfix → main (deploy imediato)
111
- # 2. hotfix → staging (manter ambientes sincronizados)
112
- ```
113
-
114
- **Atenção**: Hotfix é para emergências! Use com moderação.
115
-
116
- ---
117
-
118
- ### 4. Release (Staging → Produção)
119
-
120
- ```bash
121
- # Quando staging estiver estável e testado
122
-
123
- # Criar PR no Azure DevOps:
124
- # Source: staging
125
- # Target: main
126
-
127
- # Self-review checklist:
128
- # - [ ] Funcionalidades testadas em staging
129
- # - [ ] Performance OK
130
- # - [ ] Sem erros nos logs
131
- # - [ ] Migrations aplicadas
132
- # - [ ] Documentação atualizada
133
-
134
- # Approve e Complete
135
- # Pipeline prod triggará
136
- # ⏸️ Approval gate aparecerá
137
- # Aprovar após validar deployment summary
138
- ```
139
-
140
- ---
141
-
142
- ## ⚙️ Configuração Azure DevOps
143
-
144
- ### Branch Policies (Staging)
145
-
146
- **Repos** → **Branches** → `staging` → **Branch policies**:
147
-
148
- ```
149
- ✅ Require a minimum number of reviewers: 0
150
- (você pode fazer self-merge)
151
-
152
- ✅ Check for linked work items: Recommended
153
- (boa prática para rastreabilidade)
154
-
155
- ✅ Check for comment resolution: All
156
- (resolver comentários antes de merge)
157
-
158
- ✅ Build validation:
159
- - Pipeline: staging-pipeline
160
- - Trigger: Automatic
161
- - Policy requirement: Required
162
- ```
163
-
164
- ### Branch Policies (Main)
165
-
166
- **Repos** → **Branches** → `main` → **Branch policies**:
167
-
168
- ```
169
- ✅ Require a minimum number of reviewers: 0
170
- (você faz self-review com approval gate no pipeline)
171
-
172
- ✅ Check for linked work items: Required
173
- (obrigatório para rastreabilidade)
174
-
175
- ✅ Check for comment resolution: All
176
-
177
- ✅ Build validation:
178
- - Pipeline: prod-pipeline
179
- - Trigger: Automatic
180
- - Policy requirement: Required
181
-
182
- ❌ Limit merge types:
183
- ✅ Squash merge only (recomendado)
184
- (mantém histórico limpo)
185
- ```
186
-
187
- ---
188
-
189
- ## 🎯 Boas Práticas
190
-
191
- ### Commits
192
-
193
- ```bash
194
- # Use Conventional Commits
195
- feat: adiciona integração com Asaas
196
- fix: corrige cálculo de desconto
197
- docs: atualiza README com instruções de deploy
198
- refactor: simplifica lógica de autenticação
199
- test: adiciona testes para carrinho de compras
200
- chore: atualiza dependências do projeto
201
-
202
- # Seja descritivo no body (se necessário)
203
- git commit -m "feat: integração Asaas" -m "
204
- - Adiciona AsaasClient para chamadas API
205
- - Implementa webhook para notificações
206
- - Cria tabela Subscriptions para assinaturas
207
- - Adiciona testes de integração
208
- "
209
- ```
210
-
211
- ### Feature Branches
212
-
213
- ```bash
214
- # ✅ Bom
215
- feature/add-asaas-integration
216
- feature/user-dashboard
217
- bugfix/fix-login-redirect
218
-
219
- # ❌ Ruim
220
- my-changes
221
- temp
222
- test
223
- wip
224
- ```
225
-
226
- ### Merge vs Squash vs Rebase
227
-
228
- **Recomendação para one-person business**: **Squash merge**
229
-
230
- ```
231
- # Vantagens squash:
232
- - Histórico limpo em main/staging
233
- - Cada merge = 1 commit = 1 feature
234
- - Fácil reverter feature inteira
235
- - Fácil ler changelog
236
-
237
- # Configurar no Azure DevOps:
238
- Branch Policies → Limit merge types → Squash merge only
239
- ```
240
-
241
- ---
242
-
243
- ## 📊 Visualização do Fluxo
244
-
245
- ```
246
- ┌─────────────────────────────────────────────────────────┐
247
- │ Developer Local │
248
- │ │
249
- │ feature/pagamentos-asaas │
250
- │ │ │
251
- │ ├─ commit: adiciona AsaasClient │
252
- │ ├─ commit: implementa webhook │
253
- │ └─ commit: adiciona testes │
254
- └──────────────────────│──────────────────────────────────┘
255
-
256
- │ git push
257
- │ + PR para staging
258
-
259
- ┌─────────────────────────────────────────────────────────┐
260
- │ Staging Branch │
261
- │ │
262
- │ Squash merge │
263
- │ └─ feat: integração completa com Asaas │
264
- │ │
265
- │ Pipeline staging-pipeline triggado │
266
- │ └─ Deploy automático para staging │
267
- └──────────────────────│──────────────────────────────────┘
268
-
269
- │ Testes manuais OK
270
- │ PR staging → main
271
-
272
- ┌─────────────────────────────────────────────────────────┐
273
- │ Main Branch (Produção) │
274
- │ │
275
- │ Squash merge │
276
- │ └─ feat: integração completa com Asaas │
277
- │ │
278
- │ Pipeline prod-pipeline triggado │
279
- │ ├─ Build & Security Scan │
280
- │ ├─ ⏸️ Approval gate (você aprova) │
281
- │ └─ Deploy para produção │
282
- └─────────────────────────────────────────────────────────┘
283
- ```
284
-
285
- ---
286
-
287
- ## 🆘 Cenários Comuns
288
-
289
- ### Conflito de Merge
290
-
291
- ```bash
292
- # Atualizar feature branch com staging
293
- git checkout feature/minha-feature
294
- git fetch origin
295
- git merge origin/staging
296
-
297
- # Resolver conflitos manualmente
298
- # Editar arquivos, escolher versão correta
299
-
300
- git add .
301
- git commit -m "merge: resolve conflitos com staging"
302
- git push origin feature/minha-feature
303
- ```
304
-
305
- ### Reverter um Merge
306
-
307
- ```bash
308
- # Se merge em staging deu problema
309
- git checkout staging
310
- git revert -m 1 <commit-hash-do-merge>
311
- git push origin staging
312
-
313
- # Pipeline triggará e deployará versão sem a feature
314
- ```
315
-
316
- ### Sincronizar Branch Desatualizada
317
-
318
- ```bash
319
- # Sua feature ficou muito desatualizada
320
- git checkout feature/antiga
321
- git fetch origin
322
- git merge origin/staging
323
-
324
- # Ou, se preferir histórico limpo (rebase)
325
- git rebase origin/staging
326
-
327
- # Se houver conflitos, resolve e continua
328
- git rebase --continue
329
-
330
- git push origin feature/antiga --force-with-lease
331
- ```
332
-
333
- ### Deletar Branch Remota
334
-
335
- ```bash
336
- # Após merge, deletar feature branch
337
- git push origin --delete feature/minha-feature
338
-
339
- # Deletar local também
340
- git branch -d feature/minha-feature
341
- ```
342
-
343
- ---
344
-
345
- ## 📅 Cadência Recomendada
346
-
347
- ### Para One-Person Business
348
-
349
- | Atividade | Frequência | Descrição |
350
- |-----------|------------|-----------|
351
- | **Commits** | Várias vezes/dia | Commits pequenos e frequentes |
352
- | **Push** | 1-2x/dia | Push ao final do dia ou feature completa |
353
- | **PR → Staging** | 1-3x/semana | Quando feature está funcional |
354
- | **Deploy Staging** | Automático | Após merge no staging |
355
- | **PR → Prod** | 1x/semana ou quinzenal | Quando staging está estável |
356
- | **Deploy Prod** | Conforme necessário | Após aprovação manual |
357
-
358
- **Dica**: Não acumule muitas features antes de fazer release. Releases pequenos e frequentes são mais seguros.
359
-
360
- ---
361
-
362
- ## ✅ Checklist de PR
363
-
364
- ### Antes de Criar PR
365
-
366
- - [ ] Código testado localmente
367
- - [ ] Unit tests passando (`dotnet test`)
368
- - [ ] Sem warnings de compilação
369
- - [ ] Código formatado/lint OK
370
- - [ ] Commits com mensagens descritivas
371
- - [ ] Branch atualizada com target (staging ou main)
372
-
373
- ### Ao Criar PR
374
-
375
- - [ ] Título descritivo (feat/fix/docs/etc)
376
- - [ ] Descrição clara do que mudou
377
- - [ ] Linkar work item se houver
378
- - [ ] Adicionar screenshots se for UI
379
-
380
- ### Antes de Aprovar (Self-Review)
381
-
382
- - [ ] Revisar diff completo
383
- - [ ] Verificar se não commitou secrets/senhas
384
- - [ ] Verificar se não tem console.log/debug temporário
385
- - [ ] Pipeline de build passou
386
- - [ ] Sem conflitos
387
-
388
- ---
389
-
390
- ## 📚 Referências
391
-
392
- - [Git Flow](https://nvie.com/posts/a-successful-git-branching-model/)
393
- - [Conventional Commits](https://www.conventionalcommits.org/)
394
- - [Azure Repos Branch Policies](https://learn.microsoft.com/azure/devops/repos/git/branch-policies)
395
-
396
- ---
397
-
398
- *MORPH-SPEC by Polymorphism Tech*
1
+ # Estratégia de Branches - MORPH-SPEC
2
+
3
+ > **Git Flow simplificado para one-person business**
4
+
5
+ ---
6
+
7
+ ## 🌳 Estrutura de Branches
8
+
9
+ ```
10
+ main/master (produção)
11
+
12
+ │ PR (com aprovação)
13
+
14
+ staging (homologação)
15
+
16
+ │ PR (automático merge)
17
+
18
+ feature/* (desenvolvimento)
19
+ ```
20
+
21
+ ###**Branches Principais**
22
+
23
+ | Branch | Propósito | Deploy | Aprovação |
24
+ |--------|-----------|--------|-----------|
25
+ | **`main`** ou **`master`** | Produção | Container Apps (always-on) | ✅ Obrigatória |
26
+ | **`staging`** | Homologação/QA | Container Apps (scale-to-zero) | ❌ Nenhuma |
27
+
28
+ ### **Branches Temporárias**
29
+
30
+ | Padrão | Exemplo | Propósito |
31
+ |--------|---------|-----------|
32
+ | `feature/*` | `feature/add-payments` | Nova funcionalidade |
33
+ | `bugfix/*` | `bugfix/fix-login` | Correção de bug |
34
+ | `hotfix/*` | `hotfix/critical-security` | Correção urgente em prod |
35
+
36
+ ---
37
+
38
+ ## 🔄 Workflow Completo
39
+
40
+ ### 1. Nova Feature
41
+
42
+ ```bash
43
+ # Atualizar staging
44
+ git checkout staging
45
+ git pull origin staging
46
+
47
+ # Criar feature branch
48
+ git checkout -b feature/pagamentos-asaas
49
+
50
+ # Desenvolver localmente
51
+ # ... code, test, commit ...
52
+
53
+ # Push
54
+ git push origin feature/pagamentos-asaas
55
+
56
+ # Criar PR para staging
57
+ ```
58
+
59
+ **Azure DevOps**:
60
+ 1. **Repos** → **Pull Requests** → **New**
61
+ 2. Source: `feature/pagamentos-asaas`
62
+ 3. Target: `staging`
63
+ 4. Title: "feat: integração com Asaas para pagamentos recorrentes"
64
+ 5. Description: Detalhar mudanças
65
+ 6. **Create**
66
+ 7. **Approve** (você mesmo) e **Complete**
67
+
68
+ **Resultado**: Pipeline staging triggado automaticamente
69
+
70
+ ---
71
+
72
+ ### 2. Bug Fix
73
+
74
+ ```bash
75
+ # Partir de staging
76
+ git checkout staging
77
+ git pull origin staging
78
+
79
+ # Criar bugfix branch
80
+ git checkout -b bugfix/corrigir-calculo-total
81
+
82
+ # Corrigir + testar
83
+ git add .
84
+ git commit -m "fix: corrige cálculo de total no carrinho"
85
+
86
+ # Push e PR para staging
87
+ git push origin bugfix/corrigir-calculo-total
88
+ ```
89
+
90
+ ---
91
+
92
+ ### 3. Hotfix (Produção)
93
+
94
+ ```bash
95
+ # Partir de main (produção)
96
+ git checkout main
97
+ git pull origin main
98
+
99
+ # Criar hotfix branch
100
+ git checkout -b hotfix/vulnerabilidade-critica
101
+
102
+ # Corrigir urgentemente
103
+ git add .
104
+ git commit -m "fix: corrige vulnerabilidade SQL injection"
105
+
106
+ # Push
107
+ git push origin hotfix/vulnerabilidade-critica
108
+
109
+ # Criar 2 PRs:
110
+ # 1. hotfix → main (deploy imediato)
111
+ # 2. hotfix → staging (manter ambientes sincronizados)
112
+ ```
113
+
114
+ **Atenção**: Hotfix é para emergências! Use com moderação.
115
+
116
+ ---
117
+
118
+ ### 4. Release (Staging → Produção)
119
+
120
+ ```bash
121
+ # Quando staging estiver estável e testado
122
+
123
+ # Criar PR no Azure DevOps:
124
+ # Source: staging
125
+ # Target: main
126
+
127
+ # Self-review checklist:
128
+ # - [ ] Funcionalidades testadas em staging
129
+ # - [ ] Performance OK
130
+ # - [ ] Sem erros nos logs
131
+ # - [ ] Migrations aplicadas
132
+ # - [ ] Documentação atualizada
133
+
134
+ # Approve e Complete
135
+ # Pipeline prod triggará
136
+ # ⏸️ Approval gate aparecerá
137
+ # Aprovar após validar deployment summary
138
+ ```
139
+
140
+ ---
141
+
142
+ ## ⚙️ Configuração Azure DevOps
143
+
144
+ ### Branch Policies (Staging)
145
+
146
+ **Repos** → **Branches** → `staging` → **Branch policies**:
147
+
148
+ ```
149
+ ✅ Require a minimum number of reviewers: 0
150
+ (você pode fazer self-merge)
151
+
152
+ ✅ Check for linked work items: Recommended
153
+ (boa prática para rastreabilidade)
154
+
155
+ ✅ Check for comment resolution: All
156
+ (resolver comentários antes de merge)
157
+
158
+ ✅ Build validation:
159
+ - Pipeline: staging-pipeline
160
+ - Trigger: Automatic
161
+ - Policy requirement: Required
162
+ ```
163
+
164
+ ### Branch Policies (Main)
165
+
166
+ **Repos** → **Branches** → `main` → **Branch policies**:
167
+
168
+ ```
169
+ ✅ Require a minimum number of reviewers: 0
170
+ (você faz self-review com approval gate no pipeline)
171
+
172
+ ✅ Check for linked work items: Required
173
+ (obrigatório para rastreabilidade)
174
+
175
+ ✅ Check for comment resolution: All
176
+
177
+ ✅ Build validation:
178
+ - Pipeline: prod-pipeline
179
+ - Trigger: Automatic
180
+ - Policy requirement: Required
181
+
182
+ ❌ Limit merge types:
183
+ ✅ Squash merge only (recomendado)
184
+ (mantém histórico limpo)
185
+ ```
186
+
187
+ ---
188
+
189
+ ## 🎯 Boas Práticas
190
+
191
+ ### Commits
192
+
193
+ ```bash
194
+ # Use Conventional Commits
195
+ feat: adiciona integração com Asaas
196
+ fix: corrige cálculo de desconto
197
+ docs: atualiza README com instruções de deploy
198
+ refactor: simplifica lógica de autenticação
199
+ test: adiciona testes para carrinho de compras
200
+ chore: atualiza dependências do projeto
201
+
202
+ # Seja descritivo no body (se necessário)
203
+ git commit -m "feat: integração Asaas" -m "
204
+ - Adiciona AsaasClient para chamadas API
205
+ - Implementa webhook para notificações
206
+ - Cria tabela Subscriptions para assinaturas
207
+ - Adiciona testes de integração
208
+ "
209
+ ```
210
+
211
+ ### Feature Branches
212
+
213
+ ```bash
214
+ # ✅ Bom
215
+ feature/add-asaas-integration
216
+ feature/user-dashboard
217
+ bugfix/fix-login-redirect
218
+
219
+ # ❌ Ruim
220
+ my-changes
221
+ temp
222
+ test
223
+ wip
224
+ ```
225
+
226
+ ### Merge vs Squash vs Rebase
227
+
228
+ **Recomendação para one-person business**: **Squash merge**
229
+
230
+ ```
231
+ # Vantagens squash:
232
+ - Histórico limpo em main/staging
233
+ - Cada merge = 1 commit = 1 feature
234
+ - Fácil reverter feature inteira
235
+ - Fácil ler changelog
236
+
237
+ # Configurar no Azure DevOps:
238
+ Branch Policies → Limit merge types → Squash merge only
239
+ ```
240
+
241
+ ---
242
+
243
+ ## 📊 Visualização do Fluxo
244
+
245
+ ```
246
+ ┌─────────────────────────────────────────────────────────┐
247
+ │ Developer Local │
248
+ │ │
249
+ │ feature/pagamentos-asaas │
250
+ │ │ │
251
+ │ ├─ commit: adiciona AsaasClient │
252
+ │ ├─ commit: implementa webhook │
253
+ │ └─ commit: adiciona testes │
254
+ └──────────────────────│──────────────────────────────────┘
255
+
256
+ │ git push
257
+ │ + PR para staging
258
+
259
+ ┌─────────────────────────────────────────────────────────┐
260
+ │ Staging Branch │
261
+ │ │
262
+ │ Squash merge │
263
+ │ └─ feat: integração completa com Asaas │
264
+ │ │
265
+ │ Pipeline staging-pipeline triggado │
266
+ │ └─ Deploy automático para staging │
267
+ └──────────────────────│──────────────────────────────────┘
268
+
269
+ │ Testes manuais OK
270
+ │ PR staging → main
271
+
272
+ ┌─────────────────────────────────────────────────────────┐
273
+ │ Main Branch (Produção) │
274
+ │ │
275
+ │ Squash merge │
276
+ │ └─ feat: integração completa com Asaas │
277
+ │ │
278
+ │ Pipeline prod-pipeline triggado │
279
+ │ ├─ Build & Security Scan │
280
+ │ ├─ ⏸️ Approval gate (você aprova) │
281
+ │ └─ Deploy para produção │
282
+ └─────────────────────────────────────────────────────────┘
283
+ ```
284
+
285
+ ---
286
+
287
+ ## 🆘 Cenários Comuns
288
+
289
+ ### Conflito de Merge
290
+
291
+ ```bash
292
+ # Atualizar feature branch com staging
293
+ git checkout feature/minha-feature
294
+ git fetch origin
295
+ git merge origin/staging
296
+
297
+ # Resolver conflitos manualmente
298
+ # Editar arquivos, escolher versão correta
299
+
300
+ git add .
301
+ git commit -m "merge: resolve conflitos com staging"
302
+ git push origin feature/minha-feature
303
+ ```
304
+
305
+ ### Reverter um Merge
306
+
307
+ ```bash
308
+ # Se merge em staging deu problema
309
+ git checkout staging
310
+ git revert -m 1 <commit-hash-do-merge>
311
+ git push origin staging
312
+
313
+ # Pipeline triggará e deployará versão sem a feature
314
+ ```
315
+
316
+ ### Sincronizar Branch Desatualizada
317
+
318
+ ```bash
319
+ # Sua feature ficou muito desatualizada
320
+ git checkout feature/antiga
321
+ git fetch origin
322
+ git merge origin/staging
323
+
324
+ # Ou, se preferir histórico limpo (rebase)
325
+ git rebase origin/staging
326
+
327
+ # Se houver conflitos, resolve e continua
328
+ git rebase --continue
329
+
330
+ git push origin feature/antiga --force-with-lease
331
+ ```
332
+
333
+ ### Deletar Branch Remota
334
+
335
+ ```bash
336
+ # Após merge, deletar feature branch
337
+ git push origin --delete feature/minha-feature
338
+
339
+ # Deletar local também
340
+ git branch -d feature/minha-feature
341
+ ```
342
+
343
+ ---
344
+
345
+ ## 📅 Cadência Recomendada
346
+
347
+ ### Para One-Person Business
348
+
349
+ | Atividade | Frequência | Descrição |
350
+ |-----------|------------|-----------|
351
+ | **Commits** | Várias vezes/dia | Commits pequenos e frequentes |
352
+ | **Push** | 1-2x/dia | Push ao final do dia ou feature completa |
353
+ | **PR → Staging** | 1-3x/semana | Quando feature está funcional |
354
+ | **Deploy Staging** | Automático | Após merge no staging |
355
+ | **PR → Prod** | 1x/semana ou quinzenal | Quando staging está estável |
356
+ | **Deploy Prod** | Conforme necessário | Após aprovação manual |
357
+
358
+ **Dica**: Não acumule muitas features antes de fazer release. Releases pequenos e frequentes são mais seguros.
359
+
360
+ ---
361
+
362
+ ## ✅ Checklist de PR
363
+
364
+ ### Antes de Criar PR
365
+
366
+ - [ ] Código testado localmente
367
+ - [ ] Unit tests passando (`dotnet test`)
368
+ - [ ] Sem warnings de compilação
369
+ - [ ] Código formatado/lint OK
370
+ - [ ] Commits com mensagens descritivas
371
+ - [ ] Branch atualizada com target (staging ou main)
372
+
373
+ ### Ao Criar PR
374
+
375
+ - [ ] Título descritivo (feat/fix/docs/etc)
376
+ - [ ] Descrição clara do que mudou
377
+ - [ ] Linkar work item se houver
378
+ - [ ] Adicionar screenshots se for UI
379
+
380
+ ### Antes de Aprovar (Self-Review)
381
+
382
+ - [ ] Revisar diff completo
383
+ - [ ] Verificar se não commitou secrets/senhas
384
+ - [ ] Verificar se não tem console.log/debug temporário
385
+ - [ ] Pipeline de build passou
386
+ - [ ] Sem conflitos
387
+
388
+ ---
389
+
390
+ ## 📚 Referências
391
+
392
+ - [Git Flow](https://nvie.com/posts/a-successful-git-branching-model/)
393
+ - [Conventional Commits](https://www.conventionalcommits.org/)
394
+ - [Azure Repos Branch Policies](https://learn.microsoft.com/azure/devops/repos/git/branch-policies)
395
+
396
+ ---
397
+
398
+ *MORPH-SPEC by Polymorphism Tech*