@polymorphism-tech/morph-spec 2.2.0 → 2.4.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 (251) hide show
  1. package/CLAUDE.md +314 -1673
  2. package/LICENSE +72 -72
  3. package/README.md +515 -516
  4. package/bin/detect-agents.js +225 -225
  5. package/bin/morph-spec.js +358 -173
  6. package/bin/render-template.js +302 -302
  7. package/bin/semantic-detect-agents.js +246 -246
  8. package/bin/task-manager.js +429 -0
  9. package/bin/validate-agents-skills.js +251 -251
  10. package/bin/validate-agents.js +69 -69
  11. package/bin/validate-phase.js +263 -263
  12. package/bin/validate.js +369 -0
  13. package/content/.azure/README.md +293 -293
  14. package/content/.azure/docs/azure-devops-setup.md +454 -454
  15. package/content/.azure/docs/branch-strategy.md +398 -398
  16. package/content/.azure/docs/local-development.md +515 -515
  17. package/content/.azure/pipelines/pipeline-variables.yml +34 -34
  18. package/content/.azure/pipelines/prod-pipeline.yml +319 -319
  19. package/content/.azure/pipelines/staging-pipeline.yml +234 -234
  20. package/content/.azure/pipelines/templates/build-dotnet.yml +75 -75
  21. package/content/.azure/pipelines/templates/deploy-app-service.yml +94 -94
  22. package/content/.azure/pipelines/templates/deploy-container-app.yml +120 -120
  23. package/content/.azure/pipelines/templates/infra-deploy.yml +90 -90
  24. package/content/.claude/commands/morph-apply.md +221 -158
  25. package/content/.claude/commands/morph-archive.md +79 -79
  26. package/content/.claude/commands/morph-infra.md +209 -209
  27. package/content/.claude/commands/morph-preflight.md +227 -0
  28. package/content/.claude/commands/morph-proposal.md +122 -101
  29. package/content/.claude/commands/morph-status.md +86 -86
  30. package/content/.claude/commands/morph-troubleshoot.md +122 -0
  31. package/content/.claude/settings.local.json +15 -15
  32. package/content/.claude/skills/checklists/code-review.md +226 -0
  33. package/content/.claude/skills/checklists/morph-checklist.md +117 -0
  34. package/content/.claude/skills/checklists/simulation-checklist.md +77 -0
  35. package/content/.claude/skills/infra/bicep-architect.md +126 -419
  36. package/content/.claude/skills/infra/container-specialist.md +131 -437
  37. package/content/.claude/skills/infra/devops-engineer.md +119 -405
  38. package/content/.claude/skills/integrations/asaas-financial.md +130 -333
  39. package/content/.claude/skills/integrations/azure-identity.md +142 -309
  40. package/content/.claude/skills/integrations/clerk-auth.md +108 -290
  41. package/content/.claude/skills/integrations/resend-email.md +119 -0
  42. package/content/.claude/skills/specialists/ai-system-architect.md +192 -604
  43. package/content/.claude/skills/specialists/azure-architect.md +142 -142
  44. package/content/.claude/skills/specialists/code-analyzer.md +235 -0
  45. package/content/.claude/skills/specialists/dotnet-senior.md +287 -0
  46. package/content/.claude/skills/specialists/ef-modeler.md +113 -200
  47. package/content/.claude/skills/specialists/hangfire-orchestrator.md +126 -245
  48. package/content/.claude/skills/specialists/ms-agent-expert.md +109 -263
  49. package/content/.claude/skills/specialists/po-pm-advisor.md +197 -197
  50. package/content/.claude/skills/specialists/standards-architect.md +156 -78
  51. package/content/.claude/skills/specialists/testing-specialist.md +126 -0
  52. package/content/.claude/skills/specialists/ui-ux-designer.md +191 -1060
  53. package/content/.claude/skills/stacks/dotnet-blazor.md +210 -588
  54. package/content/.claude/skills/stacks/dotnet-nextjs.md +154 -402
  55. package/content/.claude/skills/workflows/morph-replicate.md +213 -0
  56. package/content/.claude/{commands/morph-clarify.md → skills/workflows/phase-clarify.md} +5 -58
  57. package/content/.claude/{commands/morph-design.md → skills/workflows/phase-design.md} +16 -86
  58. package/content/.claude/{commands/morph-setup.md → skills/workflows/phase-setup.md} +9 -17
  59. package/content/.claude/skills/workflows/phase-tasks.md +164 -0
  60. package/content/.claude/{commands/morph-uiux.md → skills/workflows/phase-uiux.md} +15 -88
  61. package/content/.morph/.morphversion +5 -5
  62. package/content/.morph/archive/.gitkeep +25 -25
  63. package/content/.morph/config/agents.json +378 -242
  64. package/content/.morph/config/config.template.json +89 -108
  65. package/content/.morph/docs/STORY-DRIVEN-DEVELOPMENT.md +392 -392
  66. package/content/.morph/docs/workflows/design-impl.md +37 -0
  67. package/content/.morph/docs/workflows/fast-track.md +29 -0
  68. package/content/.morph/docs/workflows/full-morph.md +76 -0
  69. package/content/.morph/docs/workflows/standard.md +44 -0
  70. package/content/.morph/docs/workflows/ui-refresh.md +39 -0
  71. package/content/.morph/examples/api-nextjs/README.md +241 -241
  72. package/content/.morph/examples/api-nextjs/contracts.ts +307 -307
  73. package/content/.morph/examples/api-nextjs/spec.md +399 -399
  74. package/content/.morph/examples/api-nextjs/tasks.md +168 -168
  75. package/content/.morph/examples/micro-saas/README.md +125 -125
  76. package/content/.morph/examples/micro-saas/contracts.cs +358 -358
  77. package/content/.morph/examples/micro-saas/decisions.md +246 -246
  78. package/content/.morph/examples/micro-saas/spec.md +236 -236
  79. package/content/.morph/examples/micro-saas/tasks.md +150 -150
  80. package/content/.morph/examples/multi-agent/README.md +309 -309
  81. package/content/.morph/examples/multi-agent/contracts.cs +433 -433
  82. package/content/.morph/examples/multi-agent/spec.md +479 -479
  83. package/content/.morph/examples/multi-agent/tasks.md +185 -185
  84. package/content/.morph/examples/scheduled-reports/decisions.md +158 -0
  85. package/content/.morph/examples/scheduled-reports/proposal.md +95 -0
  86. package/content/.morph/examples/scheduled-reports/spec.md +267 -0
  87. package/content/.morph/examples/state-v3.json +188 -0
  88. package/content/.morph/features/.gitkeep +25 -25
  89. package/content/.morph/hooks/README.md +190 -239
  90. package/content/.morph/hooks/pre-commit-agents.sh +24 -24
  91. package/content/.morph/hooks/pre-commit-all.sh +48 -48
  92. package/content/.morph/hooks/pre-commit-specs.sh +49 -49
  93. package/content/.morph/hooks/pre-commit-tests.sh +60 -60
  94. package/content/.morph/project.md +160 -160
  95. package/content/.morph/schemas/agent.schema.json +296 -296
  96. package/content/.morph/schemas/tasks.schema.json +220 -0
  97. package/content/.morph/specs/.gitkeep +20 -20
  98. package/content/.morph/standards/agent-framework-blazor-ui.md +359 -0
  99. package/content/.morph/standards/agent-framework-production.md +410 -0
  100. package/content/.morph/standards/agent-framework-setup.md +413 -453
  101. package/content/.morph/standards/agent-framework-workflows.md +349 -0
  102. package/content/.morph/standards/architecture.md +325 -325
  103. package/content/.morph/standards/azure.md +605 -379
  104. package/content/.morph/standards/coding.md +377 -377
  105. package/content/.morph/standards/dotnet10-migration.md +520 -494
  106. package/content/.morph/standards/fluent-ui-setup.md +590 -590
  107. package/content/.morph/standards/migration-guide.md +514 -514
  108. package/content/.morph/standards/passkeys-auth.md +423 -423
  109. package/content/.morph/standards/vector-search-rag.md +536 -536
  110. package/content/.morph/state.json +17 -17
  111. package/content/.morph/templates/FluentDesignTheme.cs +149 -149
  112. package/content/.morph/templates/MudTheme.cs +281 -281
  113. package/content/.morph/templates/agent.cs +163 -172
  114. package/content/.morph/templates/clarify-questions.md +159 -0
  115. package/content/.morph/templates/component.razor +239 -239
  116. package/content/.morph/templates/contracts/Commands.cs +74 -0
  117. package/content/.morph/templates/contracts/Entities.cs +25 -0
  118. package/content/.morph/templates/contracts/Queries.cs +74 -0
  119. package/content/.morph/templates/contracts/README.md +74 -0
  120. package/content/.morph/templates/contracts.cs +217 -217
  121. package/content/.morph/templates/decisions.md +123 -106
  122. package/content/.morph/templates/design-system.css +226 -226
  123. package/content/.morph/templates/infra/.dockerignore.example +89 -89
  124. package/content/.morph/templates/infra/Dockerfile.example +82 -82
  125. package/content/.morph/templates/infra/README.md +286 -286
  126. package/content/.morph/templates/infra/app-insights.bicep +63 -63
  127. package/content/.morph/templates/infra/app-service.bicep +164 -164
  128. package/content/.morph/templates/infra/container-app-env.bicep +49 -49
  129. package/content/.morph/templates/infra/container-app.bicep +156 -156
  130. package/content/.morph/templates/infra/deploy-checklist.md +426 -0
  131. package/content/.morph/templates/infra/deploy.ps1 +229 -229
  132. package/content/.morph/templates/infra/deploy.sh +208 -208
  133. package/content/.morph/templates/infra/key-vault.bicep +91 -91
  134. package/content/.morph/templates/infra/main.bicep +189 -189
  135. package/content/.morph/templates/infra/parameters.dev.json +29 -29
  136. package/content/.morph/templates/infra/parameters.prod.json +29 -29
  137. package/content/.morph/templates/infra/parameters.staging.json +29 -29
  138. package/content/.morph/templates/infra/sql-database.bicep +103 -103
  139. package/content/.morph/templates/infra/storage.bicep +106 -106
  140. package/content/.morph/templates/integrations/asaas-client.cs +387 -387
  141. package/content/.morph/templates/integrations/asaas-webhook.cs +351 -351
  142. package/content/.morph/templates/integrations/azure-identity-config.cs +288 -288
  143. package/content/.morph/templates/integrations/clerk-config.cs +258 -258
  144. package/content/.morph/templates/job.cs +171 -171
  145. package/content/.morph/templates/migration.cs +83 -83
  146. package/content/.morph/templates/proposal.md +141 -155
  147. package/content/.morph/templates/recap.md +94 -105
  148. package/content/.morph/templates/repository.cs +141 -141
  149. package/content/.morph/templates/saas/subscription.cs +347 -347
  150. package/content/.morph/templates/saas/tenant.cs +338 -338
  151. package/content/.morph/templates/service.cs +139 -139
  152. package/content/.morph/templates/simulation.md +353 -0
  153. package/content/.morph/templates/spec.md +149 -148
  154. package/content/.morph/templates/sprint-status.yaml +68 -68
  155. package/content/.morph/templates/state.template.json +222 -222
  156. package/content/.morph/templates/story.md +143 -143
  157. package/content/.morph/templates/tasks.md +257 -235
  158. package/content/.morph/templates/test.cs +239 -239
  159. package/content/.morph/templates/ui-components.md +362 -276
  160. package/content/.morph/templates/ui-design-system.md +286 -286
  161. package/content/.morph/templates/ui-flows.md +336 -336
  162. package/content/.morph/templates/ui-mockups.md +133 -133
  163. package/content/.morph/test-infra/example.bicep +59 -59
  164. package/content/CLAUDE.md +150 -442
  165. package/content/README.md +79 -79
  166. package/detectors/config-detector.js +223 -223
  167. package/detectors/conversation-analyzer.js +163 -163
  168. package/detectors/index.js +84 -84
  169. package/detectors/standards-generator.js +275 -275
  170. package/detectors/structure-detector.js +245 -250
  171. package/docs/README.md +144 -149
  172. package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.svg +977 -977
  173. package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.svg +1048 -1048
  174. package/docs/api/scripts/collapse.js +38 -38
  175. package/docs/api/scripts/commonNav.js +28 -28
  176. package/docs/api/scripts/linenumber.js +25 -25
  177. package/docs/api/scripts/nav.js +12 -12
  178. package/docs/api/scripts/polyfill.js +3 -3
  179. package/docs/api/scripts/prettify/Apache-License-2.0.txt +202 -202
  180. package/docs/api/scripts/prettify/lang-css.js +2 -2
  181. package/docs/api/scripts/prettify/prettify.js +28 -28
  182. package/docs/api/scripts/search.js +98 -98
  183. package/docs/api/styles/jsdoc.css +776 -776
  184. package/docs/api/styles/prettify.css +80 -80
  185. package/docs/examples.md +328 -328
  186. package/docs/getting-started.md +301 -302
  187. package/docs/installation.md +361 -361
  188. package/docs/templates.md +418 -418
  189. package/docs/validation-checklist.md +265 -266
  190. package/package.json +80 -80
  191. package/scripts/postinstall.js +132 -132
  192. package/src/commands/advance-phase.js +183 -0
  193. package/src/commands/analyze-blazor-concurrency.js +193 -0
  194. package/src/commands/create-story.js +351 -351
  195. package/src/commands/detect-agents.js +139 -0
  196. package/src/commands/detect.js +104 -104
  197. package/src/commands/doctor.js +356 -280
  198. package/src/commands/generate.js +149 -149
  199. package/src/commands/init.js +258 -245
  200. package/src/commands/lint-fluent.js +352 -0
  201. package/src/commands/rollback-phase.js +185 -0
  202. package/src/commands/session-summary.js +291 -0
  203. package/src/commands/shard-spec.js +224 -224
  204. package/src/commands/sprint-status.js +250 -250
  205. package/src/commands/state.js +333 -333
  206. package/src/commands/sync.js +167 -167
  207. package/src/commands/task.js +78 -0
  208. package/src/commands/troubleshoot.js +222 -0
  209. package/src/commands/update.js +192 -159
  210. package/src/commands/validate-blazor-state.js +210 -0
  211. package/src/commands/validate-blazor.js +156 -0
  212. package/src/commands/validate-css.js +84 -0
  213. package/src/commands/validate-phase.js +221 -0
  214. package/src/lib/blazor-concurrency-analyzer.js +288 -0
  215. package/src/lib/blazor-state-validator.js +291 -0
  216. package/src/lib/blazor-validator.js +374 -0
  217. package/src/lib/complexity-analyzer.js +441 -292
  218. package/src/lib/continuous-validator.js +421 -0
  219. package/src/lib/css-validator.js +352 -0
  220. package/src/lib/decision-constraint-loader.js +109 -0
  221. package/src/lib/design-system-generator.js +298 -298
  222. package/src/lib/learning-system.js +520 -0
  223. package/src/lib/mockup-generator.js +366 -0
  224. package/src/lib/recap-generator.js +205 -0
  225. package/src/lib/state-manager.js +397 -340
  226. package/src/lib/troubleshoot-grep.js +194 -0
  227. package/src/lib/troubleshoot-index.js +144 -0
  228. package/src/lib/ui-detector.js +350 -0
  229. package/src/lib/validation-runner.js +231 -0
  230. package/src/lib/validators/architecture-validator.js +387 -0
  231. package/src/lib/validators/contract-compliance-validator.js +273 -0
  232. package/src/lib/validators/package-validator.js +360 -0
  233. package/src/lib/validators/ui-contrast-validator.js +422 -0
  234. package/src/utils/file-copier.js +179 -139
  235. package/src/utils/logger.js +32 -32
  236. package/src/utils/version-checker.js +175 -175
  237. package/content/.claude/commands/morph-costs.md +0 -206
  238. package/content/.claude/commands/morph-tasks.md +0 -319
  239. package/content/.claude/skills/specialists/cost-guardian.md +0 -110
  240. package/content/.claude/skills/stacks/shopify.md +0 -445
  241. package/content/.morph/config/azure-pricing.json +0 -70
  242. package/content/.morph/config/azure-pricing.schema.json +0 -50
  243. package/content/.morph/hooks/pre-commit-costs.sh +0 -91
  244. package/docs/api/cost-calculator.js.html +0 -513
  245. package/docs/api/design-system-generator.js.html +0 -382
  246. package/docs/api/global.html +0 -5263
  247. package/docs/api/index.html +0 -96
  248. package/docs/api/state-manager.js.html +0 -423
  249. package/src/commands/cost.js +0 -181
  250. package/src/commands/update-pricing.js +0 -206
  251. package/src/lib/cost-calculator.js +0 -429
@@ -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*