aiox-core 5.0.7 → 5.0.8

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 (191) hide show
  1. package/.aiox-core/cli/commands/pro/buyer.js +379 -0
  2. package/.aiox-core/cli/commands/pro/index.js +191 -52
  3. package/.aiox-core/cli/commands/validate/index.js +2 -0
  4. package/.aiox-core/core/code-intel/helpers/dev-helper.js +1 -1
  5. package/.aiox-core/core/code-intel/helpers/devops-helper.js +0 -1
  6. package/.aiox-core/core/code-intel/helpers/planning-helper.js +1 -1
  7. package/.aiox-core/core/code-intel/helpers/qa-helper.js +2 -2
  8. package/.aiox-core/core/config/schemas/framework-config.schema.json +1 -0
  9. package/.aiox-core/core/config/template-overrides.js +1 -1
  10. package/.aiox-core/core/doctor/checks/ide-sync.js +81 -25
  11. package/.aiox-core/core/doctor/checks/rules-files.js +0 -1
  12. package/.aiox-core/core/doctor/checks/skills-count.js +83 -15
  13. package/.aiox-core/core/graph-dashboard/cli.js +1 -2
  14. package/.aiox-core/core/graph-dashboard/data-sources/code-intel-source.js +1 -1
  15. package/.aiox-core/core/ids/layer-classifier.js +1 -1
  16. package/.aiox-core/core/pro/pro-updater.js +578 -0
  17. package/.aiox-core/core/synapse/context/context-tracker.js +107 -9
  18. package/.aiox-core/core/synapse/layers/layer-processor.js +1 -1
  19. package/.aiox-core/core-config.yaml +15 -1
  20. package/.aiox-core/data/capability-detection.js +15 -15
  21. package/.aiox-core/data/entity-registry.yaml +18 -2
  22. package/.aiox-core/data/registry-update-log.jsonl +5 -0
  23. package/.aiox-core/data/tok3-token-comparison.js +0 -4
  24. package/.aiox-core/data/tool-search-validation.js +1 -1
  25. package/.aiox-core/development/agents/aiox-master.md +44 -6
  26. package/.aiox-core/development/agents/data-engineer.md +4 -4
  27. package/.aiox-core/development/agents/devops.md +52 -2
  28. package/.aiox-core/development/agents/po.md +1 -1
  29. package/.aiox-core/development/agents/qa.md +5 -11
  30. package/.aiox-core/development/agents/sm.md +3 -3
  31. package/.aiox-core/development/agents/ux-design-expert.md +1 -1
  32. package/.aiox-core/development/scripts/unified-activation-pipeline.js +29 -3
  33. package/.aiox-core/development/tasks/dev-develop-story.md +46 -7
  34. package/.aiox-core/development/tasks/devops-pro-access-grant.md +93 -0
  35. package/.aiox-core/development/tasks/devops-pro-activate.md +42 -0
  36. package/.aiox-core/development/tasks/devops-pro-check-access.md +34 -0
  37. package/.aiox-core/development/tasks/devops-pro-request-reset.md +34 -0
  38. package/.aiox-core/development/tasks/devops-pro-resend-verification.md +32 -0
  39. package/.aiox-core/development/tasks/devops-pro-reset-password.md +36 -0
  40. package/.aiox-core/development/tasks/devops-pro-validate-login.md +36 -0
  41. package/.aiox-core/development/tasks/devops-pro-verify-status.md +33 -0
  42. package/.aiox-core/development/tasks/qa-gate.md +54 -4
  43. package/.aiox-core/development/tasks/validate-next-story.md +39 -2
  44. package/.aiox-core/framework-config.yaml +1 -0
  45. package/.aiox-core/infrastructure/scripts/codex-skills-sync/README.md +69 -0
  46. package/.aiox-core/infrastructure/scripts/codex-skills-sync/bootstrap.js +727 -0
  47. package/.aiox-core/infrastructure/scripts/codex-skills-sync/index.js +10 -0
  48. package/.aiox-core/infrastructure/scripts/codex-skills-sync/validate.js +65 -4
  49. package/.aiox-core/infrastructure/scripts/generate-settings-json.js +29 -4
  50. package/.aiox-core/infrastructure/scripts/ide-sync/agent-parser.js +4 -0
  51. package/.aiox-core/infrastructure/scripts/ide-sync/index.js +67 -7
  52. package/.aiox-core/infrastructure/scripts/ide-sync/transformers/claude-code.js +145 -3
  53. package/.aiox-core/infrastructure/scripts/repair-agent-references.js +263 -0
  54. package/.aiox-core/infrastructure/scripts/validate-claude-integration.js +60 -8
  55. package/.aiox-core/infrastructure/scripts/validate-paths.js +13 -0
  56. package/.aiox-core/install-manifest.yaml +134 -82
  57. package/.aiox-core/utils/filters/index.js +2 -1
  58. package/.claude/commands/AIOX/agents/aiox-master.md +21 -0
  59. package/.claude/commands/AIOX/agents/analyst.md +21 -0
  60. package/.claude/commands/AIOX/agents/architect.md +21 -0
  61. package/.claude/commands/AIOX/agents/data-engineer.md +21 -0
  62. package/.claude/commands/AIOX/agents/dev.md +21 -0
  63. package/.claude/commands/AIOX/agents/devops.md +21 -0
  64. package/.claude/commands/AIOX/agents/pm.md +21 -0
  65. package/.claude/commands/AIOX/agents/po.md +21 -0
  66. package/.claude/commands/AIOX/agents/qa.md +21 -0
  67. package/.claude/commands/AIOX/agents/sm.md +21 -0
  68. package/.claude/commands/AIOX/agents/squad-creator.md +21 -0
  69. package/.claude/commands/AIOX/agents/ux-design-expert.md +21 -0
  70. package/.claude/commands/AIOX/scripts/agent-config-loader.js +624 -0
  71. package/.claude/commands/AIOX/scripts/generate-greeting.js +160 -0
  72. package/.claude/commands/AIOX/scripts/greeting-builder.js +866 -0
  73. package/.claude/commands/AIOX/scripts/session-context-loader.js +286 -0
  74. package/.claude/commands/AIOX/stories/story-6.1.4.md +1404 -0
  75. package/.claude/commands/cohort-squad/agents/cohort-manager.md +156 -0
  76. package/.claude/commands/design-system/agents/brad-frost.md +1097 -0
  77. package/.claude/commands/design-system/agents/dan-mall.md +857 -0
  78. package/.claude/commands/design-system/agents/dave-malouf.md +2272 -0
  79. package/.claude/commands/design-system/agents/design-chief.md +102 -0
  80. package/.claude/commands/design-system/agents/nano-banana-generator.md +162 -0
  81. package/.claude/commands/greet.md +101 -0
  82. package/.claude/commands/synapse/manager.md +75 -0
  83. package/.claude/commands/synapse/tasks/add-rule.md +94 -0
  84. package/.claude/commands/synapse/tasks/create-command.md +109 -0
  85. package/.claude/commands/synapse/tasks/create-domain.md +127 -0
  86. package/.claude/commands/synapse/tasks/diagnose-synapse.md +245 -0
  87. package/.claude/commands/synapse/tasks/edit-rule.md +109 -0
  88. package/.claude/commands/synapse/tasks/suggest-domain.md +116 -0
  89. package/.claude/commands/synapse/tasks/toggle-domain.md +83 -0
  90. package/.claude/commands/synapse/templates/domain-template +8 -0
  91. package/.claude/commands/synapse/templates/manifest-entry-template +4 -0
  92. package/.claude/commands/synapse/utils/manifest-parser-reference.md +134 -0
  93. package/.claude/hooks/precompact-session-digest.cjs +2 -2
  94. package/.claude/skills/AIOX/agents/aiox-master/SKILL.md +511 -0
  95. package/.claude/skills/AIOX/agents/analyst/SKILL.md +281 -0
  96. package/.claude/skills/AIOX/agents/architect/SKILL.md +482 -0
  97. package/.claude/skills/AIOX/agents/data-engineer/SKILL.md +503 -0
  98. package/.claude/skills/AIOX/agents/dev/SKILL.md +568 -0
  99. package/.claude/skills/AIOX/agents/devops/SKILL.md +597 -0
  100. package/.claude/skills/AIOX/agents/pm/SKILL.md +385 -0
  101. package/.claude/skills/AIOX/agents/po/SKILL.md +343 -0
  102. package/.claude/skills/AIOX/agents/qa/SKILL.md +451 -0
  103. package/.claude/skills/AIOX/agents/sm/SKILL.md +295 -0
  104. package/.claude/skills/AIOX/agents/squad-creator/SKILL.md +352 -0
  105. package/.claude/skills/AIOX/agents/ux-design-expert/SKILL.md +503 -0
  106. package/.claude/skills/architect-first/SKILL.md +275 -0
  107. package/.claude/skills/architect-first/assets/architecture-template.md +505 -0
  108. package/.claude/skills/architect-first/assets/config-template.yaml +351 -0
  109. package/.claude/skills/architect-first/references/architecture-checklist.md +216 -0
  110. package/.claude/skills/architect-first/references/pre-implementation-checklist.md +119 -0
  111. package/.claude/skills/architect-first/references/stop-rules-guide.md +291 -0
  112. package/.claude/skills/architect-first/references/testing-strategy-guide.md +477 -0
  113. package/.claude/skills/architect-first/scripts/architecture_validator.py +490 -0
  114. package/.claude/skills/architect-first/scripts/check_coupling.py +306 -0
  115. package/.claude/skills/architect-first/scripts/validate_risk_mitigation.py +382 -0
  116. package/.claude/skills/checklist-runner/SKILL.md +113 -0
  117. package/.claude/skills/clone-mind.md +329 -0
  118. package/.claude/skills/coderabbit-review/SKILL.md +106 -0
  119. package/.claude/skills/course-generation-workflow.md +76 -0
  120. package/.claude/skills/enhance-workflow.md +466 -0
  121. package/.claude/skills/mcp-builder/LICENSE.txt +202 -0
  122. package/.claude/skills/mcp-builder/SKILL.md +328 -0
  123. package/.claude/skills/mcp-builder/reference/evaluation.md +602 -0
  124. package/.claude/skills/mcp-builder/reference/mcp_best_practices.md +915 -0
  125. package/.claude/skills/mcp-builder/reference/node_mcp_server.md +916 -0
  126. package/.claude/skills/mcp-builder/reference/python_mcp_server.md +752 -0
  127. package/.claude/skills/mcp-builder/scripts/connections.py +151 -0
  128. package/.claude/skills/mcp-builder/scripts/evaluation.py +373 -0
  129. package/.claude/skills/mcp-builder/scripts/example_evaluation.xml +22 -0
  130. package/.claude/skills/mcp-builder/scripts/requirements.txt +2 -0
  131. package/.claude/skills/ralph.md +181 -0
  132. package/.claude/skills/skill-creator/LICENSE.txt +202 -0
  133. package/.claude/skills/skill-creator/SKILL.md +209 -0
  134. package/.claude/skills/skill-creator/scripts/init_skill.py +303 -0
  135. package/.claude/skills/skill-creator/scripts/package_skill.py +110 -0
  136. package/.claude/skills/skill-creator/scripts/quick_validate.py +65 -0
  137. package/.claude/skills/squad.md +301 -0
  138. package/.claude/skills/synapse/SKILL.md +132 -0
  139. package/.claude/skills/synapse/assets/README.md +50 -0
  140. package/.claude/skills/synapse/references/brackets.md +100 -0
  141. package/.claude/skills/synapse/references/commands.md +118 -0
  142. package/.claude/skills/synapse/references/domains.md +126 -0
  143. package/.claude/skills/synapse/references/layers.md +186 -0
  144. package/.claude/skills/synapse/references/manifest.md +142 -0
  145. package/.claude/skills/tech-search/SKILL.md +431 -0
  146. package/.claude/skills/tech-search/prompts/page-extract.md +133 -0
  147. package/README.en.md +2 -2
  148. package/README.md +8 -2
  149. package/bin/aiox.js +55 -4
  150. package/bin/utils/framework-guard.js +4 -2
  151. package/bin/utils/pro-detector.js +119 -28
  152. package/bin/utils/validate-publish.js +6 -6
  153. package/docs/aiox-agent-flows/devops-system.md +18 -0
  154. package/docs/aiox-workflows/README.md +1 -0
  155. package/docs/aiox-workflows/pro-access-grant-workflow.md +218 -0
  156. package/docs/guides/pro/access-grant-ops-playbook.md +370 -0
  157. package/docs/guides/pro/install-gate-setup.md +12 -6
  158. package/docs/guides/pro/squad-creator-handoff-pro-access-ops.md +134 -0
  159. package/docs/guides/supabase-ops-handoff.md +768 -0
  160. package/package.json +12 -1
  161. package/packages/aiox-pro-cli/bin/aiox-pro.js +33 -12
  162. package/packages/installer/src/config/configure-environment.js +118 -50
  163. package/packages/installer/src/installer/aiox-core-installer.js +124 -27
  164. package/packages/installer/src/installer/brownfield-upgrader.js +66 -9
  165. package/packages/installer/src/installer/dependency-installer.js +4 -0
  166. package/packages/installer/src/pro/pro-scaffolder.js +5 -5
  167. package/packages/installer/src/updater/index.js +151 -10
  168. package/packages/installer/src/wizard/ide-config-generator.js +73 -7
  169. package/packages/installer/src/wizard/index.js +119 -31
  170. package/packages/installer/src/wizard/pro-setup.js +118 -47
  171. package/packages/installer/src/wizard/validation/validators/dependency-validator.js +32 -25
  172. package/packages/installer/src/wizard/validation/validators/file-structure-validator.js +26 -0
  173. package/packages/installer/tests/unit/artifact-copy-pipeline/artifact-copy-pipeline.test.js +84 -1
  174. package/packages/installer/tests/unit/claude-md-template-v5/claude-md-template-v5.test.js +1 -1
  175. package/packages/installer/tests/unit/doctor/doctor-checks.test.js +85 -19
  176. package/packages/installer/tests/unit/entity-registry-bootstrap.test.js +4 -4
  177. package/packages/installer/tests/unit/generate-settings-json/generate-settings-json.test.js +5 -5
  178. package/packages/installer/tests/unit/ide-sync-integration/ide-sync-integration.test.js +4 -4
  179. package/packages/installer/tests/unit/merger/yaml-merger.test.js +11 -11
  180. package/pro/README.md +12 -1
  181. package/pro/license/index.js +3 -11
  182. package/pro/license/license-api.js +25 -0
  183. package/pro/license/license-cache.js +135 -31
  184. package/pro/license/license-crypto.js +59 -3
  185. package/pro/package.json +5 -4
  186. package/pro/squads/README.md +16 -16
  187. package/pro/squads/index.js +1 -1
  188. package/scripts/e2e/installed-skills-smoke.js +264 -0
  189. package/scripts/package-synapse.js +3 -3
  190. package/scripts/validate-package-completeness.js +8 -11
  191. package/.aiox-core/lib/build.json +0 -1
@@ -0,0 +1,768 @@
1
+ # AIOX-Pro Access Ops Handoff
2
+
3
+ **Version:** 3.0.0
4
+ **Last Updated:** 2026-04-19
5
+ **Status:** Active
6
+
7
+ ---
8
+
9
+ ## Overview
10
+
11
+ Este handoff não é para descoberta genérica de Supabase.
12
+
13
+ Ele existe para operações repetíveis do AIOX-Pro access/licensing, onde o projeto, o serviço e o fluxo já são conhecidos. O foco aqui é permitir que o squad-creator gere tasks específicas para operações como:
14
+
15
+ - criar novo acesso
16
+ - liberar Pro para um e-mail existente
17
+ - reenviar verificação
18
+ - confirmar e-mail por admin
19
+ - reset de senha
20
+ - diagnosticar por que um login/acesso falhou
21
+
22
+ O documento precisa ser profundo o suficiente para evitar que a task gerada repita investigação desnecessária ou tome atalhos perigosos.
23
+
24
+ ---
25
+
26
+ ## Fixed Context
27
+
28
+ Para este fluxo, os fatos já conhecidos são:
29
+
30
+ - serviço real: `https://aiox-license-server.vercel.app`
31
+ - projeto Supabase correto: `aios-license-server`
32
+ - project ref: `evvvnarpwcdybxdvcwjh`
33
+ - auth backend: Supabase Auth do projeto `evvvnarpwcdybxdvcwjh`
34
+ - entitlement/buyer oracle: tabela `public.buyers`
35
+ - tabelas auxiliares relevantes:
36
+ - `public.buyer_validations`
37
+ - `public.licenses`
38
+ - `public.activations`
39
+
40
+ **Regra:** para operações de acesso AIOX-Pro, não gastar tempo redescobrindo projeto. Começar direto deste contexto.
41
+
42
+ ---
43
+
44
+ ## What We Already Learned In Practice
45
+
46
+ Este fluxo já foi executado manualmente e os aprendizados abaixo devem ser tratados como conhecimento operacional consolidado:
47
+
48
+ - `POST /api/v1/auth/check-email` é o pré-check oficial do backend
49
+ - ele retorna `isBuyer` e `hasAccount`
50
+ - ele deve ser o primeiro oracle de estado do usuário
51
+
52
+ - `POST /api/v1/auth/login` é o segundo oracle
53
+ - se retornar `EMAIL_NOT_VERIFIED`, o problema é confirmação de e-mail
54
+ - se retornar `INVALID_CREDENTIALS`, o problema é senha
55
+ - se retornar `200`, auth está funcional
56
+
57
+ - no projeto `evvvnarpwcdybxdvcwjh`, o login real depende do Supabase Auth
58
+
59
+ - o entitlement Pro não vem de `public.licenses`
60
+ - o oracle operacional para buyer é `public.buyers`
61
+ - se `buyers` não tiver o e-mail ativo, `check-email` não sobe `isBuyer`
62
+
63
+ - `public.licenses` e `public.activations` são importantes para licença e máquinas
64
+ - mas não são o primeiro write para “liberar acesso”
65
+
66
+ - não é necessário ativar licença em máquina para concluir onboarding/access ops
67
+ - ativação consome seat/estado operacional e deve ficar fora de tasks de provisionamento básico
68
+
69
+ ---
70
+
71
+ ## Operational Goal
72
+
73
+ Toda task derivada deste handoff deve responder claramente:
74
+
75
+ - o usuário já existe no auth?
76
+ - o e-mail está confirmado?
77
+ - o e-mail já está liberado em `buyers`?
78
+ - o fluxo final no serviço real funciona?
79
+
80
+ ---
81
+
82
+ ## Known Endpoints
83
+
84
+ Endpoints do serviço real que importam:
85
+
86
+ - `POST /api/v1/auth/check-email`
87
+ - `POST /api/v1/auth/signup`
88
+ - `POST /api/v1/auth/login`
89
+ - `POST /api/v1/auth/activate-pro`
90
+ - `POST /api/v1/auth/request-reset`
91
+ - `POST /api/v1/auth/resend-verification`
92
+
93
+ UI/flow auxiliar:
94
+
95
+ - reset de senha: `https://aiox-license-server.vercel.app/reset-password`
96
+
97
+ ---
98
+
99
+ ## Endpoint Semantics
100
+
101
+ ### `POST /api/v1/auth/check-email`
102
+
103
+ Usar para classificar o caso antes de qualquer write.
104
+
105
+ Resposta de interesse:
106
+
107
+ - `isBuyer: boolean`
108
+ - `hasAccount: boolean`
109
+ - `email`
110
+
111
+ Interpretação:
112
+
113
+ - `isBuyer=false`, `hasAccount=false`
114
+ - falta conta e falta entitlement
115
+ - `isBuyer=false`, `hasAccount=true`
116
+ - conta existe, falta buyer
117
+ - `isBuyer=true`, `hasAccount=false`
118
+ - caso inconsistente ou migração parcial; investigar auth
119
+ - `isBuyer=true`, `hasAccount=true`
120
+ - provisioning quase completo; validar login
121
+
122
+ ### `POST /api/v1/auth/signup`
123
+
124
+ Usar somente quando `hasAccount=false`.
125
+
126
+ Saída útil:
127
+
128
+ - `userId`
129
+ - `message`
130
+
131
+ ### `POST /api/v1/auth/login`
132
+
133
+ Usar para validar se o usuário consegue de fato entrar.
134
+
135
+ Saídas/erros úteis:
136
+
137
+ - `200` com `accessToken`, `userId`, `emailVerified`
138
+ - `EMAIL_NOT_VERIFIED`
139
+ - `INVALID_CREDENTIALS`
140
+
141
+ ### `POST /api/v1/auth/request-reset`
142
+
143
+ Usar para recovery padrão quando não for desejável reset manual por admin.
144
+
145
+ ### `POST /api/v1/auth/resend-verification`
146
+
147
+ Usar quando a conta existe mas ainda depende do inbox do usuário.
148
+
149
+ ---
150
+
151
+ ## Tables That Matter
152
+
153
+ ### `public.buyers`
154
+
155
+ Oracle de entitlement Pro.
156
+
157
+ Campos relevantes:
158
+
159
+ - `email`
160
+ - `source`
161
+ - `purchased_at`
162
+ - `is_active`
163
+ - `metadata`
164
+
165
+ Regra prática:
166
+
167
+ - se o e-mail não está ativo em `buyers`, `check-email` não vai retornar `isBuyer: true`
168
+ - para “liberar acesso Pro”, este é o write primário
169
+
170
+ ### `public.buyer_validations`
171
+
172
+ Cache/registro de validação de buyer por usuário autenticado.
173
+
174
+ Campos relevantes:
175
+
176
+ - `user_id`
177
+ - `email`
178
+ - `is_valid`
179
+ - `validated_at`
180
+ - `expires_at`
181
+
182
+ Regra prática:
183
+
184
+ - é tabela de apoio/cache
185
+ - não é o primeiro write para grant manual
186
+ - pode ser inspecionada em diagnóstico, mas o provisioning deve preferir `buyers`
187
+
188
+ ### `public.licenses`
189
+
190
+ Licenças emitidas pelo backend.
191
+
192
+ Campos relevantes:
193
+
194
+ - `key`
195
+ - `customer_email`
196
+ - `features`
197
+ - `max_seats`
198
+ - `expires_at`
199
+ - `user_id`
200
+
201
+ Regra prática:
202
+
203
+ - relevante para emissão/licença existente
204
+ - não usar como primeiro mecanismo de grant manual de acesso
205
+
206
+ ### `public.activations`
207
+
208
+ Ativações por máquina.
209
+
210
+ Campos relevantes:
211
+
212
+ - `license_id`
213
+ - `machine_id`
214
+ - `activated_at`
215
+ - `deactivated_at`
216
+
217
+ Regra prática:
218
+
219
+ - só entra em cena quando o problema é ativação/seat/machine lifecycle
220
+ - não é etapa padrão de criar acesso ou reset de senha
221
+
222
+ ---
223
+
224
+ ## Non-Negotiable Rules
225
+
226
+ - não redescobrir projeto Supabase para AIOX-Pro access ops
227
+ - não escrever em `full-agent` para resolver licensing
228
+ - não inferir schema diferente do que já está confirmado acima
229
+ - não encerrar tarefa sem validar no serviço real
230
+ - não expor `service_role`, `anon`, JWT, reset token ou access token
231
+ - não consumir seat/activation sem necessidade explícita
232
+ - não escrever em `licenses` para resolver um caso que é apenas buyer/auth
233
+ - não usar `buyer_validations` como substitute de `buyers`
234
+
235
+ ---
236
+
237
+ ## Mandatory Diagnostic Order
238
+
239
+ Toda task deve seguir esta ordem, mesmo quando parecer óbvio o que está errado:
240
+
241
+ 1. `check-email`
242
+ 2. `login` se houver senha (read-only, classifica auth rapidamente)
243
+ 3. `auth admin` por e-mail
244
+ 4. `buyers` por e-mail
245
+ 5. `buyer_validations` apenas se houver dúvida de cache/estado intermediário
246
+ 6. `licenses` por `customer_email` apenas se o problema incluir licença
247
+ 7. `activations` apenas se o problema incluir máquina/seat
248
+
249
+ > Esta ordem é a mesma da seção [Better Triage Order In Practice](#better-triage-order-in-practice) abaixo — única lista canônica. `check-email + login` classifica a maioria dos casos sem write.
250
+
251
+ Justificativa:
252
+
253
+ - esta ordem minimiza writes
254
+ - evita tocar licença quando o problema é apenas auth
255
+ - evita tocar auth quando o problema é apenas buyer
256
+ - evita consumir seat durante suporte básico
257
+
258
+ ---
259
+
260
+ ## Decision Tree
261
+
262
+ ### Case A
263
+
264
+ `check-email => isBuyer=false, hasAccount=false`
265
+
266
+ Fazer:
267
+
268
+ 1. `signup`
269
+ 2. confirmar e-mail por admin se acesso imediato for necessário
270
+ 3. inserir `buyers`
271
+ 4. revalidar `check-email`
272
+ 5. validar `login`
273
+
274
+ ### Case B
275
+
276
+ `check-email => isBuyer=false, hasAccount=true`
277
+
278
+ Fazer:
279
+
280
+ 1. localizar auth user
281
+ 2. inserir `buyers` se ausente
282
+ 3. se login falhar por `EMAIL_NOT_VERIFIED`, confirmar e-mail por admin ou reenviar verificação
283
+ 4. revalidar `check-email`
284
+ 5. validar `login`
285
+
286
+ ### Case C
287
+
288
+ `check-email => isBuyer=true, hasAccount=true`, mas login falha por `EMAIL_NOT_VERIFIED`
289
+
290
+ Fazer:
291
+
292
+ 1. confirmar e-mail por admin ou reenviar verificação
293
+ 2. revalidar `login`
294
+
295
+ ### Case D
296
+
297
+ `check-email => isBuyer=true, hasAccount=true`, mas login falha por `INVALID_CREDENTIALS`
298
+
299
+ Fazer:
300
+
301
+ 1. `request-reset` se o fluxo for self-service
302
+ 2. ou update manual de senha por admin se o suporte precisar entregar senha provisória
303
+ 3. validar `login`
304
+
305
+ ### Case E
306
+
307
+ `check-email => isBuyer=true, hasAccount=false`
308
+
309
+ Fazer:
310
+
311
+ 1. tratar como estado inconsistente
312
+ 2. inspecionar auth admin
313
+ 3. criar conta somente se confirmar ausência de user
314
+ 4. não tocar licença antes de resolver auth
315
+
316
+ ---
317
+
318
+ ## Standard Validation Sequence
319
+
320
+ Toda task deve terminar com esta sequência:
321
+
322
+ 1. validar `check-email`
323
+ 2. validar `login` se houver senha conhecida
324
+ 3. só validar `activate-pro` se o objetivo da task for ativação real em máquina
325
+
326
+ Estados esperados:
327
+
328
+ - acesso liberado:
329
+ - `isBuyer: true`
330
+ - `hasAccount: true`
331
+ - login funcionando:
332
+ - status `200`
333
+ - `emailVerified: true`
334
+
335
+ Se a task não consegue provar esses estados, ela não está concluída.
336
+
337
+ ---
338
+
339
+ ## Evidence Pack Required
340
+
341
+ Toda execução operacional deve sair com um pacote mínimo de evidências:
342
+
343
+ - resultado inicial de `check-email`
344
+ - existência ou ausência do usuário no auth
345
+ - existência ou ausência do e-mail em `buyers`
346
+ - writes executados
347
+ - resultado final de `check-email`
348
+ - resultado final de `login`, se aplicável
349
+
350
+ Formato esperado do resumo:
351
+
352
+ - `initial_check`
353
+ - `auth_state`
354
+ - `buyer_state`
355
+ - `writes`
356
+ - `final_check`
357
+ - `final_login`
358
+
359
+ ---
360
+
361
+ ## Playbook 1: Criar Novo Acesso Pro
362
+
363
+ ### Use When
364
+
365
+ - o e-mail ainda não tem conta
366
+ - o e-mail precisa ganhar acesso Pro
367
+ - há senha inicial definida para onboarding/manual setup
368
+
369
+ ### Inputs
370
+
371
+ - `email`
372
+ - `password`
373
+ - origem da liberação, ex.: `manual`
374
+ - motivo operacional
375
+
376
+ ### Steps
377
+
378
+ 1. checar `POST /api/v1/auth/check-email`
379
+ 2. se `hasAccount: false`, criar conta com `signup`
380
+ 3. localizar usuário no `auth admin`
381
+ 4. confirmar e-mail por admin se a operação exigir acesso imediato
382
+ 5. verificar se existe registro em `public.buyers`
383
+ 6. se não existir, inserir buyer ativo
384
+ 7. revalidar `check-email`
385
+ 8. validar `login`
386
+
387
+ ### Writes Allowed
388
+
389
+ - criar `auth user`
390
+ - inserir linha em `buyers`
391
+ - update admin de confirmação de e-mail
392
+
393
+ ### Writes Not Allowed
394
+
395
+ - criar activation
396
+ - inventar linha em `licenses`
397
+ - alterar outras tabelas fora do fluxo
398
+
399
+ ### Success Criteria
400
+
401
+ - `isBuyer: true`
402
+ - `hasAccount: true`
403
+ - `login` retorna `200`
404
+ - `emailVerified: true`
405
+
406
+ ### Minimal Data Write
407
+
408
+ - `auth user`
409
+ - `public.buyers`
410
+
411
+ ---
412
+
413
+ ## Playbook 2: Liberar Pro Para Conta Já Existente
414
+
415
+ ### Use When
416
+
417
+ - o usuário já tem conta
418
+ - o problema é só falta de entitlement
419
+
420
+ ### Steps
421
+
422
+ 1. checar `POST /api/v1/auth/check-email`
423
+ 2. confirmar que `hasAccount: true`
424
+ 3. verificar `public.buyers` por e-mail
425
+ 4. se ausente, inserir buyer ativo
426
+ 5. revalidar `check-email`
427
+ 6. validar `login` se a senha for conhecida
428
+
429
+ ### Writes Allowed
430
+
431
+ - inserir ou corrigir `buyers`
432
+ - update admin de confirmação de e-mail, se necessário para destravar login
433
+
434
+ ### Success Criteria
435
+
436
+ - `isBuyer: true`
437
+ - conta existente preservada
438
+ - nenhum write extra além de `buyers`, salvo necessidade explícita
439
+
440
+ ---
441
+
442
+ ## Playbook 3: Reenviar Verificação de E-mail
443
+
444
+ ### Use When
445
+
446
+ - a conta existe
447
+ - o login falha por e-mail não confirmado
448
+ - não é desejável confirmar por admin imediatamente
449
+
450
+ ### Steps
451
+
452
+ 1. confirmar que a conta existe
453
+ 2. chamar `POST /api/v1/auth/resend-verification`
454
+ 3. registrar que o usuário precisa abrir o link recebido
455
+ 4. se a operação exigir liberação imediata, usar o Playbook 4
456
+
457
+ ### Output Contract
458
+
459
+ - informar explicitamente se ainda há dependência de ação do usuário
460
+ - não reportar “acesso resolvido” se ainda depende do inbox
461
+
462
+ ### Success Criteria
463
+
464
+ - endpoint responde com sucesso
465
+ - comunicação deixa claro que a ação do usuário ainda é necessária
466
+
467
+ ---
468
+
469
+ ## Playbook 4: Confirmar E-mail Por Admin
470
+
471
+ ### Use When
472
+
473
+ - existe conta
474
+ - e-mail não confirmado
475
+ - é necessário desbloquear acesso imediatamente sem esperar inbox
476
+
477
+ ### Steps
478
+
479
+ 1. localizar o usuário no `auth admin`
480
+ 2. aplicar update admin com `email_confirm: true`
481
+ 3. revalidar login
482
+
483
+ ### Why This Exists
484
+
485
+ - evita bloquear acesso imediato por dependência do inbox
486
+ - é o caminho de suporte quando a operação não pode esperar e-mail do usuário
487
+
488
+ ### Success Criteria
489
+
490
+ - `email_confirmed_at` preenchido
491
+ - `login` retorna `200`
492
+
493
+ ### Caution
494
+
495
+ - usar somente quando o processo permitir override administrativo
496
+
497
+ ---
498
+
499
+ ## Playbook 5: Reset de Senha
500
+
501
+ ### Use When
502
+
503
+ - o usuário esqueceu a senha
504
+ - não é necessário impor uma senha manual por admin
505
+
506
+ ### Steps
507
+
508
+ 1. confirmar se a conta existe
509
+ 2. chamar `POST /api/v1/auth/request-reset`
510
+ 3. orientar uso de `https://aiox-license-server.vercel.app/reset-password`
511
+ 4. não mudar entitlement durante reset
512
+
513
+ ### Important Distinction
514
+
515
+ - reset de senha não corrige buyer
516
+ - reset de senha não corrige e-mail não confirmado
517
+ - reset de senha é só para credenciais
518
+
519
+ ### Success Criteria
520
+
521
+ - request-reset responde com sucesso
522
+ - usuário consegue seguir o fluxo de recuperação
523
+
524
+ ---
525
+
526
+ ## Playbook 6: Definir Nova Senha Manualmente
527
+
528
+ ### Use When
529
+
530
+ - suporte precisa definir uma senha inicial ou temporária
531
+ - a operação é administrativa e explícita
532
+
533
+ ### Steps
534
+
535
+ 1. localizar usuário no `auth admin`
536
+ 2. atualizar a senha por admin
537
+ 3. validar `login` com a nova senha
538
+
539
+ ### When Preferred Over Request Reset
540
+
541
+ - onboarding assistido
542
+ - suporte executivo/manual
543
+ - ambiente onde a senha inicial precisa ser entregue explicitamente
544
+
545
+ ### Success Criteria
546
+
547
+ - login com a nova senha funciona
548
+ - nenhuma outra tabela é alterada sem necessidade
549
+
550
+ ---
551
+
552
+ ## Playbook 7: Diagnosticar Falha de Acesso
553
+
554
+ ### Use When
555
+
556
+ - o usuário diz “não consigo entrar”
557
+ - o acesso Pro não ativa
558
+ - não está claro se o problema é auth, buyer ou licença
559
+
560
+ ### Diagnostic Order
561
+
562
+ 1. `check-email`
563
+ 2. `auth admin users` por e-mail
564
+ 3. `buyers` por e-mail
565
+ 4. `login`
566
+ 5. `licenses` por `customer_email`
567
+ 6. `buyer_validations` por `email` ou `user_id`
568
+
569
+ ### Better Triage Order In Practice
570
+
571
+ Use esta priorização:
572
+
573
+ 1. `check-email`
574
+ 2. `login`
575
+ 3. `auth admin`
576
+ 4. `buyers`
577
+ 5. `buyer_validations`
578
+ 6. `licenses`
579
+ 7. `activations`
580
+
581
+ Motivo:
582
+
583
+ - `check-email + login` já classificam a maioria dos casos sem write
584
+
585
+ ### Interpretation
586
+
587
+ - `isBuyer: false` e `hasAccount: false`
588
+ - falta conta e falta entitlement
589
+ - `isBuyer: false` e `hasAccount: true`
590
+ - conta existe, falta buyer
591
+ - `isBuyer: true` e login falha por `EMAIL_NOT_VERIFIED`
592
+ - buyer ok, falta confirmação de e-mail
593
+ - `isBuyer: true` e login falha por credenciais
594
+ - entitlement ok, problema é senha
595
+
596
+ - `isBuyer: true`, login ok, ativação falha
597
+ - sair do escopo de access ops e abrir investigação de licença/activation
598
+
599
+ ---
600
+
601
+ ## Minimal Command/Action Contract For Tasks
602
+
603
+ Uma task boa para o squad-creator não deve pedir “investigar como fazer”.
604
+
605
+ Ela deve declarar explicitamente:
606
+
607
+ 1. quais leituras fará primeiro
608
+ 2. qual write mínimo fará em cada ramo da árvore de decisão
609
+ 3. qual validação final provará o sucesso
610
+ 4. quais writes estão proibidos naquele caso
611
+
612
+ Exemplo de contrato ruim:
613
+
614
+ - “verificar Supabase e resolver acesso”
615
+
616
+ Exemplo de contrato bom:
617
+
618
+ - “rodar check-email; se hasAccount=false criar auth user; se buyer ausente inserir em buyers; confirmar e-mail por admin apenas se acesso imediato for necessário; validar check-email e login”
619
+
620
+ ---
621
+
622
+ ## Expected Task Outputs
623
+
624
+ Toda task gerada a partir deste handoff deve devolver:
625
+
626
+ - ação executada
627
+ - e-mail alvo
628
+ - writes realizados
629
+ - estado final de `check-email`
630
+ - estado final de `login`, se aplicável
631
+ - pendências restantes, se houver
632
+
633
+ Também deve devolver:
634
+
635
+ - classificação do caso na árvore de decisão
636
+ - motivo para cada write executado
637
+ - confirmação explícita de que nenhuma activation/seat foi consumida, salvo pedido explícito
638
+
639
+ ---
640
+
641
+ ## Squad-Creator Task Briefs
642
+
643
+ ### Brief A: Criar Novo Acesso AIOX-Pro
644
+
645
+ ```md
646
+ Criar task operacional para criar um novo acesso AIOX-Pro no backend de licensing já conhecido.
647
+
648
+ Contexto fixo:
649
+ - serviço: https://aiox-license-server.vercel.app
650
+ - projeto Supabase: evvvnarpwcdybxdvcwjh
651
+ - oracle de buyer: public.buyers
652
+
653
+ A task deve:
654
+ - rodar check-email e classificar o caso
655
+ - receber email e senha inicial
656
+ - criar conta se não existir
657
+ - confirmar email por admin quando necessário para liberação imediata
658
+ - inserir buyer ativo se ausente
659
+ - validar via check-email e login
660
+ - listar writes permitidos e proibidos
661
+
662
+ Done:
663
+ - isBuyer=true
664
+ - hasAccount=true
665
+ - login 200
666
+ ```
667
+
668
+ ### Brief B: Liberar Pro Para Conta Existente
669
+
670
+ ```md
671
+ Criar task operacional para liberar entitlement Pro para uma conta já existente no AIOX-Pro.
672
+
673
+ Contexto fixo:
674
+ - serviço: https://aiox-license-server.vercel.app
675
+ - projeto Supabase: evvvnarpwcdybxdvcwjh
676
+ - tabela de entitlement: public.buyers
677
+
678
+ A task deve:
679
+ - confirmar existência da conta
680
+ - inserir buyer ativo apenas se ausente
681
+ - confirmar e-mail por admin apenas se login falhar por não verificado
682
+ - revalidar check-email
683
+ - validar login se houver senha fornecida
684
+
685
+ Done:
686
+ - isBuyer=true
687
+ - conta preservada
688
+ ```
689
+
690
+ ### Brief C: Reenviar Verificação
691
+
692
+ ```md
693
+ Criar task operacional para reenviar verificação de email do AIOX-Pro.
694
+
695
+ Contexto fixo:
696
+ - serviço: https://aiox-license-server.vercel.app
697
+ - projeto Supabase: evvvnarpwcdybxdvcwjh
698
+
699
+ A task deve:
700
+ - confirmar que a conta existe
701
+ - chamar resend-verification
702
+ - reportar claramente se ainda depende de ação do usuário
703
+ - proibir conclusão “resolvido” sem prova de login, salvo se o objetivo explícito for apenas reenvio
704
+ ```
705
+
706
+ ### Brief D: Confirmar E-mail Por Admin
707
+
708
+ ```md
709
+ Criar task operacional para confirmar por admin o email de uma conta do AIOX-Pro.
710
+
711
+ Contexto fixo:
712
+ - auth backend: Supabase Auth do projeto evvvnarpwcdybxdvcwjh
713
+
714
+ A task deve:
715
+ - localizar user por email
716
+ - aplicar email_confirm=true
717
+ - validar login após a confirmação
718
+ - explicitar que não deve tocar buyers/licenças se o problema for apenas verificação
719
+ ```
720
+
721
+ ### Brief E: Reset de Senha
722
+
723
+ ```md
724
+ Criar task operacional para reset de senha do AIOX-Pro.
725
+
726
+ Contexto fixo:
727
+ - serviço: https://aiox-license-server.vercel.app
728
+ - página de recovery: https://aiox-license-server.vercel.app/reset-password
729
+
730
+ A task deve:
731
+ - confirmar existência da conta
732
+ - chamar request-reset
733
+ - reportar o próximo passo para o usuário
734
+ - explicitar que reset não resolve buyer nem verificação de e-mail
735
+ ```
736
+
737
+ ### Brief F: Diagnóstico de Falha de Acesso
738
+
739
+ ```md
740
+ Criar task operacional para diagnosticar por que um usuário não consegue acessar o AIOX-Pro.
741
+
742
+ Contexto fixo:
743
+ - serviço: https://aiox-license-server.vercel.app
744
+ - projeto Supabase: evvvnarpwcdybxdvcwjh
745
+ - tabelas relevantes: buyers, buyer_validations, licenses, activations
746
+
747
+ A task deve:
748
+ - rodar check-email
749
+ - testar login cedo para classificar o erro
750
+ - verificar auth user
751
+ - verificar buyers
752
+ - classificar a falha em: falta conta, falta buyer, email não confirmado, senha inválida ou problema de licença
753
+ - listar o próximo playbook exato a executar
754
+ ```
755
+
756
+ ---
757
+
758
+ ## Definition Of Done
759
+
760
+ - task parte do contexto fixo correto
761
+ - task não perde tempo redescobrindo projeto/licensing
762
+ - task executa apenas o playbook relevante
763
+ - task valida no serviço real
764
+ - resultado final fica objetivo e auditável
765
+
766
+ ---
767
+
768
+ _Last Updated: 2026-04-19 | AIOX Ops_