atlas-workflow 0.9.1 → 0.9.3

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 (169) hide show
  1. package/README.md +5 -2
  2. package/VERSION +1 -1
  3. package/build/bump-version.mjs +6 -21
  4. package/build/cli/atlas-init.mjs +92 -5
  5. package/build/tests/classify-findings.test.mjs +20 -0
  6. package/build/tests/etapa3.test.mjs +161 -0
  7. package/build/tests/test_classify_findings.py +79 -0
  8. package/hosts/opencode/.opencode/agents/atlas-findings-repair.md +4 -0
  9. package/hosts/opencode/.opencode/agents/atlas-task-validator.md +18 -1
  10. package/hosts/opencode/.opencode/atlas/VERSION +1 -1
  11. package/hosts/opencode/.opencode/atlas/orchestrator/README.md +7 -5
  12. package/hosts/opencode/.opencode/atlas/orchestrator/commands/workflow.md +1 -1
  13. package/hosts/opencode/.opencode/atlas/orchestrator/references/host-adapters.md +13 -12
  14. package/hosts/opencode/.opencode/atlas/orchestrator/skills/atlas-workflow-orchestrator/SKILL.md +24 -17
  15. package/hosts/opencode/.opencode/atlas/packages/mcp-server/README.md +1 -1
  16. package/hosts/opencode/.opencode/atlas/packages/mcp-server/package.json +1 -1
  17. package/hosts/opencode/.opencode/atlas/packages/mcp-server/server.js +514 -20
  18. package/hosts/opencode/.opencode/atlas/packages/templates/BACKLOG_MESTRE_TEMPLATE.md +14 -3
  19. package/hosts/opencode/.opencode/atlas/packages/templates/PRD_TEMPLATE.md +2 -1
  20. package/hosts/opencode/.opencode/atlas/packages/templates/STATE_FILE_SCHEMA.md +25 -1
  21. package/hosts/opencode/.opencode/skills/_shared/references/stack-profiles.md +36 -0
  22. package/hosts/opencode/.opencode/skills/_shared/scripts/document_quality.mjs +252 -0
  23. package/hosts/opencode/.opencode/skills/atlas-backlog-generator/SKILL.md +7 -2
  24. package/hosts/opencode/.opencode/skills/atlas-direct-execute/SKILL.md +6 -2
  25. package/hosts/opencode/.opencode/skills/atlas-findings-repair/SKILL.md +11 -1
  26. package/hosts/opencode/.opencode/skills/atlas-plan-execute/SKILL.md +16 -2
  27. package/hosts/opencode/.opencode/skills/atlas-plan-handoff/SKILL.md +6 -4
  28. package/hosts/opencode/.opencode/skills/atlas-prd-interview/SKILL.md +7 -2
  29. package/hosts/opencode/.opencode/skills/atlas-slice-review/SKILL.md +37 -2
  30. package/hosts/opencode/.opencode/skills/atlas-slice-review/references/scenario-lenses.md +8 -0
  31. package/hosts/opencode/.opencode/skills/atlas-slice-review/scripts/classify_findings.mjs +60 -0
  32. package/hosts/opencode/.opencode/skills/atlas-slice-review/scripts/classify_findings.py +9 -41
  33. package/hosts/opencode/.opencode/skills/atlas-sprint-prd-generator/SKILL.md +7 -4
  34. package/hosts/opencode/.opencode/skills/atlas-task-validator/SKILL.md +29 -14
  35. package/hosts/opencode/.opencode/skills/atlas-workflow-orchestrator/SKILL.md +24 -17
  36. package/hosts/pi/.pi/agents/atlas-direct-execute.md +6 -2
  37. package/hosts/pi/.pi/agents/atlas-findings-repair.md +15 -1
  38. package/hosts/pi/.pi/agents/atlas-plan-execute.md +16 -2
  39. package/hosts/pi/.pi/agents/atlas-slice-review.md +37 -2
  40. package/hosts/pi/.pi/agents/atlas-task-validator.md +18 -1
  41. package/hosts/pi/atlas/VERSION +1 -1
  42. package/hosts/pi/atlas/orchestrator/README.md +7 -5
  43. package/hosts/pi/atlas/orchestrator/commands/workflow.md +1 -1
  44. package/hosts/pi/atlas/orchestrator/references/host-adapters.md +13 -12
  45. package/hosts/pi/atlas/orchestrator/skills/atlas-workflow-orchestrator/SKILL.md +24 -17
  46. package/hosts/pi/atlas/packages/mcp-server/README.md +1 -1
  47. package/hosts/pi/atlas/packages/mcp-server/package.json +1 -1
  48. package/hosts/pi/atlas/packages/mcp-server/server.js +514 -20
  49. package/hosts/pi/atlas/packages/templates/BACKLOG_MESTRE_TEMPLATE.md +14 -3
  50. package/hosts/pi/atlas/packages/templates/PRD_TEMPLATE.md +2 -1
  51. package/hosts/pi/atlas/packages/templates/STATE_FILE_SCHEMA.md +25 -1
  52. package/hosts/pi/skills/_shared/references/stack-profiles.md +36 -0
  53. package/hosts/pi/skills/_shared/scripts/document_quality.mjs +252 -0
  54. package/hosts/pi/skills/atlas-backlog-generator/SKILL.md +7 -2
  55. package/hosts/pi/skills/atlas-direct-execute/SKILL.md +6 -2
  56. package/hosts/pi/skills/atlas-findings-repair/SKILL.md +11 -1
  57. package/hosts/pi/skills/atlas-plan-execute/SKILL.md +16 -2
  58. package/hosts/pi/skills/atlas-plan-handoff/SKILL.md +6 -4
  59. package/hosts/pi/skills/atlas-prd-interview/SKILL.md +7 -2
  60. package/hosts/pi/skills/atlas-slice-review/SKILL.md +37 -2
  61. package/hosts/pi/skills/atlas-slice-review/references/scenario-lenses.md +8 -0
  62. package/hosts/pi/skills/atlas-slice-review/scripts/classify_findings.mjs +60 -0
  63. package/hosts/pi/skills/atlas-slice-review/scripts/classify_findings.py +9 -41
  64. package/hosts/pi/skills/atlas-sprint-prd-generator/SKILL.md +7 -4
  65. package/hosts/pi/skills/atlas-task-validator/SKILL.md +29 -14
  66. package/hosts/pi/skills/atlas-workflow-orchestrator/SKILL.md +24 -17
  67. package/hosts/zcode/.zcode-plugin/plugin.json +27 -0
  68. package/hosts/zcode/agents/atlas-direct-execute.md +31 -0
  69. package/hosts/zcode/agents/atlas-findings-repair.md +39 -0
  70. package/hosts/zcode/agents/atlas-plan-execute.md +33 -0
  71. package/hosts/zcode/agents/atlas-slice-review.md +27 -0
  72. package/hosts/zcode/agents/atlas-task-validator.md +138 -0
  73. package/hosts/zcode/packages/mcp-server/README.md +29 -0
  74. package/hosts/zcode/packages/mcp-server/VERSION +1 -0
  75. package/hosts/zcode/packages/mcp-server/package.json +15 -0
  76. package/hosts/zcode/packages/mcp-server/server.js +3897 -0
  77. package/hosts/zcode/packages/orchestrator/README.md +270 -0
  78. package/hosts/zcode/packages/orchestrator/commands/workflow.md +37 -0
  79. package/hosts/zcode/packages/orchestrator/defaults/paths.md +21 -0
  80. package/hosts/zcode/packages/orchestrator/references/host-adapters.md +106 -0
  81. package/hosts/zcode/packages/orchestrator/references/qa_s13_matrix.md +141 -0
  82. package/hosts/zcode/packages/orchestrator/references/subagent_dispatch.md +42 -0
  83. package/hosts/zcode/packages/orchestrator/skills/atlas-workflow-orchestrator/SKILL.md +391 -0
  84. package/hosts/zcode/packages/templates/BACKLOG_MESTRE_TEMPLATE.md +855 -0
  85. package/hosts/zcode/packages/templates/BOUNDARY_PRD_PLAN.md +93 -0
  86. package/hosts/zcode/packages/templates/PERGUNTAS_EM_ABERTO_TEMPLATE.md +139 -0
  87. package/hosts/zcode/packages/templates/PLAN_TEMPLATE.md +146 -0
  88. package/hosts/zcode/packages/templates/PRD_TEMPLATE.md +150 -0
  89. package/hosts/zcode/packages/templates/STATE_FILE_SCHEMA.md +56 -0
  90. package/hosts/zcode/skills/_shared/references/stack-profiles.md +36 -0
  91. package/hosts/zcode/skills/_shared/scripts/document_quality.mjs +252 -0
  92. package/hosts/zcode/skills/atlas-backlog-generator/SKILL.md +93 -0
  93. package/hosts/zcode/skills/atlas-backlog-generator/agents/openai.yaml +4 -0
  94. package/hosts/zcode/skills/atlas-direct-execute/SKILL.md +221 -0
  95. package/hosts/zcode/skills/atlas-direct-execute/agents/openai.yaml +7 -0
  96. package/hosts/zcode/skills/atlas-findings-repair/SKILL.md +158 -0
  97. package/hosts/zcode/skills/atlas-findings-repair/agents/openai.yaml +7 -0
  98. package/hosts/zcode/skills/atlas-plan-execute/SKILL.md +175 -0
  99. package/hosts/zcode/skills/atlas-plan-execute/agents/openai.yaml +7 -0
  100. package/hosts/zcode/skills/atlas-plan-execute/references/plan-contract.md +88 -0
  101. package/hosts/zcode/skills/atlas-plan-execute/references/quality-gates.md +60 -0
  102. package/hosts/zcode/skills/atlas-plan-execute/scripts/check_budget_state.py +96 -0
  103. package/hosts/zcode/skills/atlas-plan-execute/scripts/extract_plan_contract.py +191 -0
  104. package/hosts/zcode/skills/atlas-plan-execute/scripts/validate_gate_result.py +56 -0
  105. package/hosts/zcode/skills/atlas-plan-handoff/SKILL.md +183 -0
  106. package/hosts/zcode/skills/atlas-plan-handoff/agents/openai.yaml +7 -0
  107. package/hosts/zcode/skills/atlas-prd-interview/SKILL.md +82 -0
  108. package/hosts/zcode/skills/atlas-prd-interview/agents/openai.yaml +7 -0
  109. package/hosts/zcode/skills/atlas-slice-review/SKILL.md +156 -0
  110. package/hosts/zcode/skills/atlas-slice-review/agents/openai.yaml +4 -0
  111. package/hosts/zcode/skills/atlas-slice-review/references/review-contract.md +58 -0
  112. package/hosts/zcode/skills/atlas-slice-review/references/scenario-lenses.md +57 -0
  113. package/hosts/zcode/skills/atlas-slice-review/scripts/classify_findings.mjs +60 -0
  114. package/hosts/zcode/skills/atlas-slice-review/scripts/classify_findings.py +24 -0
  115. package/hosts/zcode/skills/atlas-slice-review/scripts/extract_review_slice.py +158 -0
  116. package/hosts/zcode/skills/atlas-sprint-prd-generator/SKILL.md +77 -0
  117. package/hosts/zcode/skills/atlas-sprint-prd-generator/agents/openai.yaml +7 -0
  118. package/hosts/zcode/skills/atlas-task-validator/SKILL.md +173 -0
  119. package/hosts/zcode/skills/atlas-task-validator/agents/openai.yaml +7 -0
  120. package/hosts/zcode/skills/atlas-workflow-orchestrator/SKILL.md +391 -0
  121. package/package.json +1 -1
  122. package/plugins/atlas-workflow-orchestrator/.codex/agents/atlas-findings-repair.toml +1 -1
  123. package/plugins/atlas-workflow-orchestrator/.codex/agents/atlas-task-validator.toml +1 -1
  124. package/plugins/atlas-workflow-orchestrator/.codex-plugin/plugin.json +1 -1
  125. package/plugins/atlas-workflow-orchestrator/VERSION +1 -1
  126. package/plugins/atlas-workflow-orchestrator/agents/atlas-findings-repair.md +4 -0
  127. package/plugins/atlas-workflow-orchestrator/agents/atlas-task-validator.md +18 -1
  128. package/plugins/atlas-workflow-orchestrator/orchestrator/README.md +7 -5
  129. package/plugins/atlas-workflow-orchestrator/orchestrator/commands/workflow.md +1 -1
  130. package/plugins/atlas-workflow-orchestrator/orchestrator/references/host-adapters.md +13 -12
  131. package/plugins/atlas-workflow-orchestrator/orchestrator/skills/atlas-workflow-orchestrator/SKILL.md +24 -17
  132. package/plugins/atlas-workflow-orchestrator/packages/mcp-server/README.md +1 -1
  133. package/plugins/atlas-workflow-orchestrator/packages/mcp-server/package.json +1 -1
  134. package/plugins/atlas-workflow-orchestrator/packages/mcp-server/server.js +514 -20
  135. package/plugins/atlas-workflow-orchestrator/packages/skills/_shared/references/stack-profiles.md +36 -0
  136. package/plugins/atlas-workflow-orchestrator/packages/skills/_shared/scripts/document_quality.mjs +252 -0
  137. package/plugins/atlas-workflow-orchestrator/packages/skills/atlas-backlog-generator/SKILL.md +7 -2
  138. package/plugins/atlas-workflow-orchestrator/packages/skills/atlas-direct-execute/SKILL.md +6 -2
  139. package/plugins/atlas-workflow-orchestrator/packages/skills/atlas-findings-repair/SKILL.md +11 -1
  140. package/plugins/atlas-workflow-orchestrator/packages/skills/atlas-plan-execute/SKILL.md +16 -2
  141. package/plugins/atlas-workflow-orchestrator/packages/skills/atlas-plan-handoff/SKILL.md +6 -4
  142. package/plugins/atlas-workflow-orchestrator/packages/skills/atlas-prd-interview/SKILL.md +7 -2
  143. package/plugins/atlas-workflow-orchestrator/packages/skills/atlas-slice-review/SKILL.md +37 -2
  144. package/plugins/atlas-workflow-orchestrator/packages/skills/atlas-slice-review/references/scenario-lenses.md +8 -0
  145. package/plugins/atlas-workflow-orchestrator/packages/skills/atlas-slice-review/scripts/classify_findings.mjs +60 -0
  146. package/plugins/atlas-workflow-orchestrator/packages/skills/atlas-slice-review/scripts/classify_findings.py +9 -41
  147. package/plugins/atlas-workflow-orchestrator/packages/skills/atlas-sprint-prd-generator/SKILL.md +7 -4
  148. package/plugins/atlas-workflow-orchestrator/packages/skills/atlas-task-validator/SKILL.md +29 -14
  149. package/plugins/atlas-workflow-orchestrator/packages/templates/BACKLOG_MESTRE_TEMPLATE.md +14 -3
  150. package/plugins/atlas-workflow-orchestrator/packages/templates/PRD_TEMPLATE.md +2 -1
  151. package/plugins/atlas-workflow-orchestrator/packages/templates/STATE_FILE_SCHEMA.md +25 -1
  152. package/plugins/atlas-workflow-orchestrator/skills/_shared/references/stack-profiles.md +36 -0
  153. package/plugins/atlas-workflow-orchestrator/skills/_shared/scripts/document_quality.mjs +252 -0
  154. package/plugins/atlas-workflow-orchestrator/skills/atlas-backlog-generator/SKILL.md +7 -2
  155. package/plugins/atlas-workflow-orchestrator/skills/atlas-direct-execute/SKILL.md +6 -2
  156. package/plugins/atlas-workflow-orchestrator/skills/atlas-findings-repair/SKILL.md +11 -1
  157. package/plugins/atlas-workflow-orchestrator/skills/atlas-plan-execute/SKILL.md +16 -2
  158. package/plugins/atlas-workflow-orchestrator/skills/atlas-plan-handoff/SKILL.md +6 -4
  159. package/plugins/atlas-workflow-orchestrator/skills/atlas-prd-interview/SKILL.md +7 -2
  160. package/plugins/atlas-workflow-orchestrator/skills/atlas-slice-review/SKILL.md +37 -2
  161. package/plugins/atlas-workflow-orchestrator/skills/atlas-slice-review/references/scenario-lenses.md +8 -0
  162. package/plugins/atlas-workflow-orchestrator/skills/atlas-slice-review/scripts/classify_findings.mjs +60 -0
  163. package/plugins/atlas-workflow-orchestrator/skills/atlas-slice-review/scripts/classify_findings.py +9 -41
  164. package/plugins/atlas-workflow-orchestrator/skills/atlas-sprint-prd-generator/SKILL.md +7 -4
  165. package/plugins/atlas-workflow-orchestrator/skills/atlas-task-validator/SKILL.md +29 -14
  166. package/plugins/atlas-workflow-orchestrator/skills/atlas-workflow-orchestrator/SKILL.md +24 -17
  167. package/plugins/atlas-workflow-orchestrator/templates/BACKLOG_MESTRE_TEMPLATE.md +14 -3
  168. package/plugins/atlas-workflow-orchestrator/templates/PRD_TEMPLATE.md +2 -1
  169. package/plugins/atlas-workflow-orchestrator/templates/STATE_FILE_SCHEMA.md +25 -1
@@ -0,0 +1,270 @@
1
+ # Atlas Workflow Orchestrator
2
+
3
+ Orquestra pipelines completos de desenvolvimento de features no projeto Atlas, automatizando a sequência de skills (PRD generation → planejamento → execução → review) sob demanda.
4
+
5
+ ## Quick Start
6
+
7
+ ```bash
8
+ /workflow full backlog-item "S05"
9
+ ```
10
+
11
+ Pipeline completo executado automaticamente:
12
+ 1. Gera PRD para sprint S05
13
+ 2. Valida PRD (detecta ambiguidades automaticamente)
14
+ 3. Executa entrevista se houver decisões em aberto
15
+ 4. Cria plano
16
+ 5. Executa plano
17
+ 6. (Opcional) Executa review
18
+
19
+ ## Sintaxe
20
+
21
+ ```
22
+ /workflow <mode> <input-type> [flags]
23
+ ```
24
+
25
+ ### Modes
26
+
27
+ - `full` — Pipeline completo (PRD → plano → executor → review opcional)
28
+ - `direct` — Pipeline enxuto (PRD → executor → review opcional)
29
+ - `interview-only` — Entrevista direta (brainstorm, resolução de decisões)
30
+
31
+ ### Input Types
32
+
33
+ - `backlog-item` — Sprint ID (ex: S05) ou indicação direta
34
+ - `idea` — Indicação/brainstorm curto
35
+ - `prd` — Path para PRD existente
36
+ - `brainstorm` — Texto livre (só para interview-only)
37
+
38
+ ### Flags
39
+
40
+ - `--interview` — Força entrevista de PRD mesmo sem ambiguidades
41
+ - `--review` — Executa slice-review ao final
42
+ - `--help` — Mostra sintaxe completa
43
+
44
+ ## Exemplos
45
+
46
+ ### Full pipeline com sprint S05
47
+
48
+ ```
49
+ /workflow full backlog-item "S05"
50
+ ```
51
+
52
+ Output:
53
+ ```
54
+ ✅ Workflow: claude full backlog-item completed
55
+
56
+ 📄 PRD: /path/to/PRD_S05_login.md
57
+ 📋 Plan: /path/to/PLAN_S05_login.md
58
+ 🚀 Output: [summary do executor]
59
+
60
+ Status:
61
+ ✅ PRD valid
62
+ ✅ Ambiguidades resolvidas (2 decisões coletadas)
63
+ ✅ Plano generated
64
+ ✅ Executor output ready (required in full/direct)
65
+ ⏭️ Slice review: not executed
66
+ ```
67
+
68
+ ### Direct pipeline com PRD existente + review
69
+
70
+ ```
71
+ /workflow direct prd "/path/to/PRD_S05.md" --review
72
+ ```
73
+
74
+ ### Entrevista de brainstorm
75
+
76
+ ```
77
+ /workflow interview-only brainstorm "Que tal dark mode?"
78
+ ```
79
+
80
+ ### Force entrevista mesmo sem ambiguidades
81
+
82
+ ```
83
+ /workflow full idea "melhorar performance" --interview
84
+ ```
85
+
86
+ ## Como funciona
87
+
88
+ ### Full Mode
89
+
90
+ ```
91
+ 1. Parse input (resolve sprint/indicação)
92
+
93
+ 2. Generate PRD (`atlas-sprint-prd-generator`)
94
+
95
+ 3. Validate PRD (busca TBD, "a confirmar", gaps)
96
+
97
+ 4. Interview (automático se ambiguidades OU --interview)
98
+ └─ Atualiza PRD com decisões coletadas
99
+
100
+ 5. Plan (`atlas-plan-handoff`)
101
+
102
+ 6. Validate Plan (tem gaps?)
103
+ └─ Pergunta: volta? continua TBD? adia?
104
+
105
+ 7. Execute obrigatório em `full` (`atlas-plan-execute`, com `atlas-task-validator` sub-agent)
106
+
107
+ 8. Review (se --review)
108
+ └─ `atlas-slice-review`
109
+
110
+ 9. Output (resumo + próximos passos)
111
+ ```
112
+
113
+ ### Direct Mode
114
+
115
+ ```
116
+ 1. Parse/Generate PRD
117
+
118
+ 2. Validate PRD + Interview (condicional)
119
+
120
+ 3. Execute (`atlas-direct-execute`, mantendo `phase: plan_execute`)
121
+
122
+ 4. Review (se --review)
123
+
124
+ 5. Output
125
+ ```
126
+
127
+ ### Interview-Only Mode
128
+
129
+ ```
130
+ 1. Cria draft mínimo pelo `PRD_TEMPLATE.md` quando a entrada é brainstorm
131
+
132
+ 2. Entrevista `atlas-prd-interview` com `prd_path` válido
133
+
134
+ 3. Output (PRD esboço + decisões)
135
+ ```
136
+
137
+ ## Sequências canônicas
138
+
139
+ Atlas é família única. Cliente (Claude Code, Cursor, Codex App) é apenas o host que executa as skills; não existe roteamento por família.
140
+
141
+ | Mode | Sequência |
142
+ |------|-----------|
143
+ | `full` | `atlas-sprint-prd-generator` → `atlas-prd-interview` quando necessário → `atlas-plan-handoff` → `atlas-plan-execute` → `atlas-task-validator` → `atlas-findings-repair` (no `fail`) → `atlas-slice-review` somente com `--review` |
144
+ | `direct` | PRD/spec existente → `atlas-direct-execute` → `atlas-task-validator` → `atlas-findings-repair` (no `fail`) → `atlas-slice-review` somente com `--review` |
145
+ | `interview-only` | draft PRD mínimo (se brainstorm) → `atlas-prd-interview` |
146
+
147
+ ## Validação automática
148
+
149
+ Plugin detecta ambiguidades em:
150
+ - **Contexto e objetivo (§1):** TBD, "a confirmar", vago
151
+ - **Escopo (§2):** incompleto, "depende de"
152
+ - **Decisões (§3):** vazio ou muito vago
153
+ - **Fluxos e cenários UX (§4):** gaps, "a definir"
154
+ - **Contrato funcional e invariantes (§5):** "ainda não definido", "mock"
155
+
156
+ Se encontra ambiguidades → o orquestrador conduz `atlas-prd-interview` automaticamente no fio principal.
157
+
158
+ ## Lógica de decisão
159
+
160
+ Quando há decisões pendentes:
161
+
162
+ ```
163
+ Plugin: Tenho decisões em aberto:
164
+ Q-XXX-01: [decisão 1]
165
+ Q-XXX-02: [decisão 2]
166
+
167
+ Opções:
168
+ A) Volta pra resolver tudo (roda interview agora)
169
+ B) Continua com recomendações (marca TBD)
170
+ C) Adia essas decisões
171
+ ```
172
+
173
+ Você escolhe A/B/C → pipeline continua conforme.
174
+
175
+ ## Integração com seu workflow
176
+
177
+ ### Antes de rodar workflow
178
+
179
+ 1. Opcional: criar backlog mestre explicitamente com `$atlas-backlog-generator`
180
+ 2. Preenchimento de `PERGUNTAS_EM_ABERTO.md` (fora do plugin)
181
+ 3. Resolver perguntas abertas fora do pipeline (se necessário)
182
+
183
+ ### Ao rodar workflow
184
+
185
+ ```
186
+ /workflow full backlog-item "S05"
187
+ ```
188
+
189
+ Plugin automatiza tudo. Você valida output.
190
+
191
+ ### Depois de workflow
192
+
193
+ 1. Validação de output do executor
194
+ 2. (Opcional) Rodada de slice-review quando `--review` foi solicitado
195
+ 3. Avança para S06
196
+
197
+ ## Skills envolvidas
198
+
199
+ | Skill | Função |
200
+ |-------|--------|
201
+ | `atlas-backlog-generator` | Cria backlog mestre a partir de ideia, prompt, conversa ou briefing; uso preparatório explícito, fora da cadeia automática |
202
+ | `atlas-sprint-prd-generator` | Gera PRD a partir de sprint/indicação |
203
+ | `atlas-prd-interview` | Entrevista de PRD (resolve ambiguidades) |
204
+ | `atlas-plan-handoff` | Cria plano executável |
205
+ | `atlas-plan-execute` | Executa plano (com `atlas-task-validator` sub-agent) |
206
+ | `atlas-slice-review` | Review fria de implementação quando `--review` está presente |
207
+
208
+ ## Configuração
209
+
210
+ Plugin usa configuração embutida no MCP para modos, skills `atlas-*` e validadores de ambiguidade. Defaults auxiliares continuam empacotados em `packages/orchestrator/defaults/` e referências em `packages/orchestrator/references/`.
211
+
212
+ ## Error handling
213
+
214
+ - **Sprint não encontrado:** reporta sprints disponíveis
215
+ - **Skill falha:** para, reporta erro, oferece retry/skip/abort
216
+ - **PRD inválido:** reporta sections faltando
217
+ - **Ambiguidades não resolvidas:** pergunta próximos passos
218
+
219
+ ## Dúvidas?
220
+
221
+ Veja este README, `packages/mcp-server/README.md` e os SKILL.md `atlas-*` para o contrato operacional atual.
222
+
223
+ ---
224
+
225
+ **Plugin version:** 0.9.3
226
+ **Author:** Paulo Borini
227
+ **Last updated:** 2026-06-16
228
+
229
+ ### Novidades v0.8.4 — liveness do executor (Gate G12)
230
+
231
+ - `plan_execute` agora tem liveness explícito: `atlas_lock_dispatch(start)` cria deadline de bootstrap e o executor precisa emitir checkpoints materiais.
232
+ - `atlas-plan-execute` deve reportar `executor_started`, `skill_loaded`, `plan_loaded`, `handoff_accepted`, `task_started`, `first_write` e `state_path_created` conforme avança.
233
+ - Se o sub-agent não retornar/progredir, o orquestrador consulta `atlas_lock_dispatch(status)`; bootstrap vencido vira `executor_bootstrap_timeout`, checkpoint antigo sem avanço vira `executor_progress_timeout`; ambos persistem `stalled`, liberam retry e não podem ser tratados como execução em andamento.
234
+ - `atlas_lock_validator(start)` só abre o validator depois de `state_path_created` para o mesmo `state_path`; checkpoint final sem arquivo legível é bloqueado.
235
+
236
+ ### Novidades v0.8.2 — release/npm e procedimento de bump
237
+
238
+ - Pacote npm `atlas-workflow` validado como instalador multi-host (`npm pack`, `npm exec` do tarball e `.npmignore` restritivo).
239
+ - CI de release publica npm com provenance e GitHub Release somente por tag `vX.Y.Z`, com guard de tag = `VERSION` = `package.json.version`.
240
+ - Procedimento de patch/bump documenta o fluxo completo para IA: classificar mudança, atualizar versões, regenerar catálogos, validar CI local, checar pacote npm, taguear e verificar publicação.
241
+
242
+ ### Novidades v0.8.0 — proof-of-work do validador frio (Gate G4, R20)
243
+
244
+ - `atlas_lock_validator(start)` emite um `challenge` (sha256 de um arquivo do boundary do `state_path`); o validador irmão lê via `validator_recovery.challenge`, computa o hash e devolve em `challenge_response`.
245
+ - `atlas_lock_validator(complete)` recomputa o hash do disco e bloqueia (`challenge_failed`) em divergência/ausência, sem fechar o slot — re-despacho do mesmo validador. O re-dispatch é **bounded** por attempt: esgotado o teto, o slot fecha terminal (`challenge_exhausted`, fail-closed).
246
+ - O hash esperado nunca é persistido em estado legível (recomputado on-demand). Best-effort: boundary sem arquivo legível → sem enforcement; arquivo ausente no complete → `unverifiable`, não bloqueia.
247
+ - Escopo honesto: atestação **mecânica** de leitura do boundary, **não** prova de isolamento não-forjável. Schema `atlas_capabilities` v5 intacto.
248
+
249
+ ### Novidades v0.7.1 / v0.7.2 — confiabilidade
250
+
251
+ - `ping().capabilities` derivado de `toolsList()` (fonte única — fim do drift que omitia `atlas_classify_input`); CI job `cross-os` (Windows/macOS); `.gitattributes` para artefatos gerados.
252
+ - `atlas_run_state(upsert)` faz merge top-level (não derruba `dispatch.active`); `findActiveRunConflict` só bloqueia conflito de lock real; `atlas_verify_artifact` aceita `artifact_kind`; Gate G4 endurecido (R17 falha de dispatch = `blocked`; R19 proveniência do `dispatch_token`).
253
+
254
+ ### Novidades v0.7.0 — topologia sibling-only
255
+
256
+ - Validação fria é sempre sub-agent irmão em todos os hosts: o executor escreve `state_path` e encerra; o orquestrador despacha `atlas-task-validator`. Gate JOIN no preflight, `dispatch_token` monotônico, máximo de 2 validators por contrato. `CAPABILITIES_SCHEMA_VERSION` v3 → v5 (BREAKING de contrato, sem mudança de comportamento).
257
+
258
+ ### Novidades v0.6.2 — backlog mestre explícito
259
+
260
+ - `atlas-backlog-generator` cria backlog mestre a partir de ideia, prompt ou conversa somente quando acionado explicitamente.
261
+ - O backlog padrão vai para `.atlas/backlog/BACKLOG_MESTRE_<slug>.md` quando o usuário não informa path.
262
+ - `BACKLOG_MESTRE_TEMPLATE.md` inclui MoSCoW, esforço x ganho, dependências, riscos e próxima sprint executável.
263
+ - A cadeia automática do workflow permanece começando no PRD; backlog é preparação documental opcional.
264
+
265
+ ### Novidades v0.6.1 — fronteira documental no orquestrador
266
+
267
+ - Fases documentais (`PRD`, entrevista, `PLAN_*.md`) são conduzidas no orquestrador; o primeiro sub-agent obrigatório do `full` nasce em `atlas-plan-execute`.
268
+ - Os únicos sub-agents do pipeline são `atlas-plan-execute`/`atlas-direct-execute`, `atlas-task-validator`, `atlas-findings-repair` e `atlas-slice-review`.
269
+ - A topologia é **sibling** em todos os hosts: o orquestrador coordena o validator irmão a partir do `state_path` retornado pelo executor e só reabre execução em `fail`. Host sem join síncrono é rejeitado no preflight (gate JOIN).
270
+ - `atlas_preflight`/dispatchability distinguem skills documentais de skills executoras, evitando exigir sub-agent para entrevista/plano.
@@ -0,0 +1,37 @@
1
+ ---
2
+ description: Orquestra pipeline de desenvolvimento de feature no Atlas (PRD → validação → entrevista → plano → execução → review)
3
+ argument-hint: <mode> <input-type> [input] [--interview] [--review] [--help]
4
+ ---
5
+
6
+ Você está executando o comando `/workflow` do plugin **atlas-workflow-orchestrator**.
7
+
8
+ Argumentos recebidos: `$ARGUMENTS`
9
+
10
+ ## Ação
11
+
12
+ 1. Invoque a skill **`atlas-workflow-orchestrator`** passando os argumentos acima como input.
13
+ 2. A skill é dona de toda a lógica: parsing de `<mode> <input-type> [input] [flags]`, orquestração das sub-skills, validação de ambiguidades, resolução de decisão em aberto via entrevista (não para o pipeline) e formato de output. Siga o `SKILL.md` dela como contrato.
14
+ 3. Se `$ARGUMENTS` estiver vazio ou contiver `--help`, mostre a sintaxe completa da skill e pare.
15
+
16
+ ## Referência rápida de sintaxe
17
+
18
+ ```
19
+ /workflow <mode> <input-type> [input] [flags]
20
+ ```
21
+
22
+ - **mode**: `full` · `direct` · `execute` · `interview-only`
23
+ - **input-type**: `backlog-item` · `idea` · `prd` · `plan` · `brainstorm`
24
+ - **flags**: `--interview` · `--review` · `--help`
25
+
26
+ Exemplos:
27
+
28
+ ```
29
+ /workflow full backlog-item "S05"
30
+ /workflow direct prd "/path/PRD_S05.md" --review
31
+ /workflow execute plan "/path/PLAN_S05.md"
32
+ /workflow interview-only brainstorm "que tal dark mode?"
33
+ ```
34
+
35
+ Não improvise comportamento fora do `SKILL.md`. **Pipeline é fire-and-continue**: uma vez iniciado, avança fase a fase sem pedir permissão entre gates; só para em gate duro `blocked` ou blockage de ambiente real (ver "Princípio de continuação automática"). Nunca invente "Modo Discussão" ou peça "quer que eu gere/continue?". Decisão em aberto não para — dispara entrevista, propaga e segue. Em caso de erro real, siga "Error handling".
36
+
37
+ **Gates duros (v0.3):** o pipeline é orientado a artefato e MCP. Antes de iniciar, rode a **Fase 0 (Pré-flight)** com `atlas_ping` e `atlas_preflight`; use ids `atlas-*`; garanta que cada sub-agent carregue o `SKILL.md` real antes de agir. Se MCP não responder, resultado exigido estiver ausente ou status for bloqueante, **aborte; nunca use fallback narrativo**. Respeite os Gates G1–G11 + TC da SKILL: `atlas_verify_artifact` antes de avançar (G1); em `full`, nenhum código antes de `PLAN_*.md` validado (G2); skills invocadas de verdade (G3); validador frio como sub-agent separado (G4); `atlas_scan_prd` determinístico e logado (G5); status verificado contra disco e MCP (G6); execução/review como sub-agents reais com `atlas_lock_dispatch`, enquanto PRD/entrevista/plano são autoria documental no pai (G7/G8); orquestrador de mãos atadas e dispatch blocking (G9); família única atlas-* via `atlas_preflight` (G10); em `full`, `atlas_assert_after_plan` exige `atlas-plan-execute` após plano (G11); `direct` usa `atlas-direct-execute`; ambos mantêm `phase: plan_execute`; PRD/PLAN exigem `atlas_verify_template_conformance` passed com `pending_count: 0` (TC). Em `interview-only brainstorm`, crie draft mínimo pelo template antes de invocar `atlas-prd-interview` com `prd_path` válido.
@@ -0,0 +1,21 @@
1
+ # Defaults de paths
2
+
3
+ Estes defaults viajam no pacote do plugin. O workflow não exige arquivo de configuração na raiz do repositório usuário.
4
+
5
+ ## Config
6
+
7
+ 1. Usar a configuração embutida no MCP do plugin.
8
+ 2. Usar `defaults/` e `references/` empacotados no plugin.
9
+ 3. Só considerar arquivos equivalentes no workspace quando o usuário apontar explicitamente.
10
+
11
+ ## Artefatos
12
+
13
+ | Artefato | Default |
14
+ |----------|---------|
15
+ | PRD | path informado pelo usuário; senão diretório do backlog/template encontrado pela skill geradora |
16
+ | PLAN | mesmo diretório do PRD, salvo se a skill de handoff resolver path mais específico |
17
+ | Evidência de execução | relatório emitido pelo executor + diff real do workspace |
18
+
19
+ ## Regra
20
+
21
+ Path específico de produto/repo nunca é obrigatório no orquestrador. Skills de PRD/plano podem descobrir templates/backlog no workspace, mas ausência de layout específico não autoriza implementação inline.
@@ -0,0 +1,106 @@
1
+ # Adapters de host
2
+
3
+ Fonte canônica do conhecimento host-específico do Atlas. As skills são host-agnósticas: em runtime devem consultar a tool MCP `atlas_capabilities` e usar o descritor retornado. Este documento é a referência estática equivalente (e o que o `atlas_capabilities` materializa em código no MCP server).
4
+
5
+ ## Por que existe
6
+
7
+ Tools nativas do cliente (`Agent()`, `TodoWrite`, `tasks`, `$skill`) vivem no host, não no MCP. O servidor não consegue chamá-las nem fazer proxy — só **descrever** qual usar. Por isso o adapter é descritivo: centraliza o "qual verbo usar por host" num único lugar (código + este doc), eliminando prosa duplicada espalhada pelas skills.
8
+
9
+ ## Fonte de verdade
10
+
11
+ 1. **Runtime:** `atlas_capabilities` (MCP) — detecta host por env e retorna o descritor. Preferir sempre.
12
+ 2. **Estático:** esta tabela — fallback de leitura/documentação quando o MCP não está disponível.
13
+
14
+ Os dois devem permanecer consistentes. O descritor em código vive em `packages/mcp-server/server.js` (`HOST_ADAPTERS`). ZCode usa o mesmo formato de agentes que Claude (`.md` com frontmatter) por ser Claude Agent SDK compat.
15
+
16
+ ## Detecção de host
17
+
18
+ | Sinal | Host |
19
+ |-------|------|
20
+ | arg `host` explícito na chamada | o valor passado |
21
+ | env `ATLAS_HOST` | o valor da env |
22
+ | env `CLAUDE_PLUGIN_ROOT` presente | `claude` |
23
+ | env `CODEX_HOME` / `CODEX_PLUGIN_ROOT` | `codex` |
24
+ | env `ZCODE_PLUGIN_ROOT` (injetado pelo `.zcode-plugin` do host) | `zcode` |
25
+ | env `ATLAS_HOST=opencode` (injetado por `opencode.json`) | `opencode` |
26
+ | env `ATLAS_HOST=pi` (injetado pela config do `pi-mcp-adapter`) | `pi` |
27
+ | env `ATLAS_HOST=antigravity` (injetado por `mcp_config.json`) | `antigravity` |
28
+ | nenhum | `generic` |
29
+
30
+ ## Matriz de adapters
31
+
32
+ | Concern | `claude` (Claude Code) | `codex` (Codex App) | `opencode` | `pi` (pi cli) | `antigravity` (Gemini) | `zcode` (ZCode) | `generic` |
33
+ |---------|------------------------|---------------------|------------|---------------|------------------------|-----------|-----------|
34
+ | Disparo de subagente | `Agent(subagent_type: "<name>", prompt: "<state_path>")` | `spawn_agent(agent_type: "<name>", items: [{ type: "text", text: "<state_path>" }])` | `@<name>` (ou auto) com `<state_path>` | tool `subagent({ agent: "<name>", task: "<state_path>", context: "fresh" })` (pi-subagents) | `define_subagent` + `invoke_subagent` com `<state_path>` | `Agent(subagent_type: "<name>", prompt: "<state_path>")` | subagente nativo do host, passando só `<state_path>` |
35
+ | Registro do subagente | `agents/<name>.md` na raiz do plugin | `CODEX_HOME/agents/<name>.toml` via `init codex` (`.codex/agents/` no bundle é fonte gerada; custom agent nativo; `developer_instructions` carrega o `SKILL.md`; `atlas-task-validator` pinado em `model="gpt-5.4"` + `model_reasoning_effort="high"`) | `.opencode/agents/<name>.md` (`mode: subagent`) | `.pi/agents/<name>.md` (pi-subagents; frontmatter `name`+`description`+`tools`; **`SKILL.md` canônico embutido no corpo** porque o pi não tem skill loader no sub-agente — fonte única segue `packages/skills/<name>/SKILL.md`, agente é cópia gerada por `build/gen-host-agent.mjs`) | dinâmico via `define_subagent` da skill do orquestrador | `agents/<name>.md` na raiz do plugin (.zcode-plugin) — mesmo formato claude (Claude Agent SDK) | mecanismo nativo equivalente |
36
+ | Topologia do validador frio (G4) | **`sibling`** | **`sibling`** | **`sibling`** | **`sibling`** | **`sibling`** | **`sibling`** | **`sibling`** |
37
+ | Join síncrono (gate JOIN) | `self_evident` (`Agent()` bloqueante) | `self_evident` (confirmado em produção) | `self_evident` (`@<name>` bloqueante) | `must_report` (depende de `pi-subagents`; hard-fail sem report) | `self_evident` (`invoke_subagent` bloqueante) | `self_evident` (`Agent()` bloqueante; Claude Agent SDK) | `must_report` (indeterminado; hard-fail sem report) |
38
+ | Todo nativo | `TodoWrite` | `tasks` | `todowrite` | nenhum (segue sem mirror) | nenhum (segue sem mirror) | `TodoWrite` | nenhum (segue sem mirror) |
39
+ | Config MCP | `plugin.json` `mcpServers` | `.mcp.json` | `opencode.json` `mcp.<name>` (`type:"local"`, `environment.ATLAS_HOST=opencode`) | `.mcp.json` no root (`pi-mcp-adapter`; `env.ATLAS_HOST=pi`; tools chegam proxiadas/prefixadas `atlas_workflow_<tool>`) | `mcp_config.json` (`env.ATLAS_HOST=antigravity`) | `.zcode-plugin/plugin.json` `mcpServers` (stdio; `ZCODE_PLUGIN_ROOT` injetado pelo host) | host MCP-capaz |
40
+ | Deps externas obrigatórias | — | — | — | **`pi-mcp-adapter` + `pi-subagents`** (DEC-005) | — | — | — |
41
+ | Estado de run | `atlas_run_state` (MCP) | `atlas_run_state` (MCP) | `atlas_run_state` (MCP) | `atlas_run_state` (MCP) | `atlas_run_state` (MCP) | `atlas_run_state` (MCP) |
42
+ | Escrita de plano | `.atlas/plans/` | `.atlas/plans/` | `.atlas/plans/` | `.atlas/plans/` | `.atlas/plans/` | `.atlas/plans/` |
43
+ | Leitura de plano (ordem) | `.atlas/plans/` → `.cursor/plans/` → `.codex/plans/` | idem | idem | idem | idem | idem |
44
+
45
+ `.cursor/plans/` e `.codex/plans/` são lidos com deprecation warning por 1 release; escrita só em `.atlas/plans/`. **opencode** instala via `.opencode/` + `opencode.json` (`hosts/opencode/`). **pi** instala via `mcp.json` + `agents/` + `skills/` (`hosts/pi/`) e exige as 2 deps obrigatórias; sem qualquer uma o preflight aborta (gate PREREQ).
46
+
47
+ ## Contrato `atlas_capabilities` (schema v5)
48
+
49
+ Campos retornados (DEC-007):
50
+
51
+ | Campo | Tipo | Significado |
52
+ |---|---|---|
53
+ | `host` / `host_label` / `detected_via` | string | host detectado e como |
54
+ | `schema_version` | int | versão do contrato (atual: **5**) |
55
+ | `subagent_dispatch` | obj | `{mechanism, example, registration}` — verbo nativo de dispatch |
56
+ | `validator_dispatch` | obj | `{dispatcher: 'orchestrator', required_agent_type, join: {sync, confidence, mechanism}}` — topologia é sempre sibling; `join` declara a capability de join síncrono usada pelo gate JOIN. No Codex, `required_agent_type` é `atlas-task-validator` e o registro nativo deve estar pinado em `model="gpt-5.4"` + `model_reasoning_effort="high"` |
57
+ | `todo_tool` | string\|null | tool de todo nativa; `null` = seguir sem mirror (não-essencial) |
58
+ | `hooks` | obj | `{supported, mechanism}` — suporte a hooks pré/pós tool |
59
+ | `capabilities_flags` | obj | `{subagent_available, mcp_available, todo_available}` |
60
+ | `prerequisites` | obj | `{essential:[…], non_essential:[…]}` — quais flags são hard-fail |
61
+ | `plan_paths` / `state_backend` / `state_dir` | — | **portáveis** (iguais em todo host) |
62
+ | `known_hosts` | string[] | hosts registrados em `HOST_ADAPTERS` |
63
+
64
+ ### Política de versionamento (`schema_version`)
65
+
66
+ - **Aditivo** (campo novo opcional) → mantém compat; consumidores **devem ignorar campos desconhecidos**. (v1→v2 foi aditivo: `capabilities_flags`, `hooks`, `prerequisites`.)
67
+ - **Remoção/renomeação/mudança de semântica** → bump + nota de migração + revisão das skills consumidoras.
68
+
69
+ ### Pré-requisitos de determinismo (DEC-004)
70
+
71
+ `prerequisites.essential` (`subagent_available`, `mcp_available`) são **hard-fail**: host sem qualquer um é rejeitado no preflight, qualquer tamanho de tarefa, sem degradação/inline. `prerequisites.non_essential` (`todo_available`) apenas segue sem o recurso, registrando. O executor consome esse contrato no preflight (S09).
72
+
73
+ **Gate `PREREQ` no `atlas_preflight`:** é a **primeira** verificação (precede versão/lock/modo). Mescla as flags do perfil do host com a disponibilidade real reportada em `host_capabilities` (override). Ex.: pi sem `pi-mcp-adapter`/`pi-subagents` → o adapter reporta `{"subagent_available":false}` → `status:"blocked"`, `gate:"PREREQ"`, `missing_prerequisites:[…]`, `next_action` acionável. Host qualificado passa direto para o gate G10. Nunca há fallback inline.
74
+
75
+ ### Transporte (S05 — spike, DEC-006)
76
+
77
+ **stdio único.** Confirmado pelo survey S01: opencode usa `type:"local"` (stdio) e o `pi-mcp-adapter` suporta stdio (com fallback HTTP interno do próprio adapter, transparente ao Atlas). Nenhum host-alvo (claude/codex/cursor/opencode/pi/generic) exige HTTP/SSE no MCP do Atlas. Não há abstração de transporte (YAGNI). Ponto de extensão: se um host futuro exigir HTTP/SSE, o boot fica isolado em `startStdioLoop()` (`server.js`) — trocar/adicionar transporte é localizado, sem tocar a lógica de tools/gates.
78
+
79
+ ### Fronteira portável vs host-específico
80
+
81
+ - **Portável (vive no MCP, igual a todo host):** `plan_paths`, `state_backend`, `state_dir`, gates G1–G11, schema de state. Nunca depende de host.
82
+ - **Host-específico (vive em `HOST_ADAPTERS` + packaging):** `subagent_dispatch`, `todo_tool`, `hooks`, `capabilities_flags`. Variação resolvida por dado, não por ramo de código.
83
+
84
+ ## Como uma skill consome
85
+
86
+ 1. Chamar `atlas_capabilities` (sem args para autodetecção, ou `{host}` para forçar).
87
+ 2. Ler `subagent_dispatch.mechanism` / `.example`, `todo_tool`, `plan_paths`.
88
+ 3. Executar o verbo nativo correspondente. Nunca hardcodar o nome do host na prosa da skill. No Codex, `$<skill>` é ativação de skill in-context; execução/review usa custom agent nativo via `spawn_agent`. Para o validador frio no Codex, o orquestrador deve despachar explicitamente `spawn_agent(agent_type: "atlas-task-validator", items: [{ type: "text", text: "<state_path>" }])`; se esse agent type não estiver disponível, bloquear fail-closed em vez de usar `default`, `$atlas-task-validator` ou validação inline.
89
+ 4. Se `todo_tool` for `null`, seguir sem mirror de todo (não inventar tool).
90
+
91
+ ## Adicionar um host novo
92
+
93
+ 1. Adicionar entrada em `HOST_ADAPTERS` (`packages/mcp-server/server.js`).
94
+ 2. Adicionar regra de detecção em `detectHost` se houver env próprio.
95
+ 3. Adicionar linha na matriz de adapters.
96
+ 4. Registrar o subagente no formato nativo do host (ex.: `agents/<name>.md` ou equivalente). ZCode reusa o formato Claude (`agents/<name>.md`) — mesmo formato, sem geração extra.
97
+
98
+ Sem tocar nas skills — elas já consomem o descritor.
99
+
100
+ ## Perfil `generic` (DEC-004)
101
+
102
+ `generic` é o fallback para qualquer host MCP-capaz **com subagente nativo**. Não tem packaging próprio (não há bundle `generic`): o host usa seu mecanismo nativo de subagente + a config MCP do próprio host. O perfil **exige** subagente + MCP — `capabilities_flags {subagent:true, mcp:true}`. Host MCP-only **sem** subagente nativo fica **fora de escopo**: reportando `subagent_available:false` no preflight, o gate PREREQ aborta (não há degradação nem cold-review inline). Determinismo > alcance.
103
+
104
+ ## Status multi-host
105
+
106
+ Todos os hosts-alvo do survey S01 estão implementados na matriz acima: `claude`, `codex`, `cursor` (carona no manifest claude), `opencode` (S06), `pi` (S07), `zcode` (Claude Agent SDK compat) e `generic`. Nenhum exige HTTP/SSE → stdio único (DEC-006/S05). Survey completo + fontes: `PRD_S01_host_survey.md`.
@@ -0,0 +1,141 @@
1
+ # S13 QA Matrix Evidence
2
+
3
+ Status: NO-GO for S14
4
+ Date: 2026-06-01
5
+ Scope: PRD_S13_qa_matrix.md
6
+
7
+ ## Summary
8
+
9
+ S13 executed host/plugin readiness smokes and found two blocking packaging issues before the full functional matrix could be executed:
10
+
11
+ - Codex plugin install failed because `plugin.json` pointed `skills` to a non-existent contract path and inlined `mcpServers`.
12
+ - Codex MCP startup failed because the MCP server emitted `Content-Length` framed responses while Codex RMCP expects newline-delimited JSON-RPC.
13
+
14
+ Both issues were repaired in S13. After repair, Claude, Cursor and Codex host/plugin smokes passed.
15
+
16
+ Continuation evidence found one more host-specific packaging issue:
17
+
18
+ - Claude/Cursor plugin loaded from the packaged zip did not expose the bundled MCP server. The plugin had to be unpacked and the Claude manifest had to reference the MCP server with `${CLAUDE_PLUGIN_ROOT}/packages/mcp-server/server.js`.
19
+ - Codex CLI usage limit later reset. The installed plugin initially did not expose Atlas MCP because the Codex `.mcp.json` launched the server from the consumer workspace. Adding `cwd: "."` to the packaged Codex MCP config made installed-plugin MCP autoexposure work.
20
+ - A Codex full run then exposed a state-root mismatch: `cwd: "."` made state land in the plugin cache. The MCP stateful tools now accept `project_root`, preserving portable plugin startup while writing ledger and resolving relative artifacts against the consumer workspace.
21
+
22
+ The full functional matrix is not green yet. Full/direct/interview-only runs and positive/negative cases per host still require real manual execution with run evidence. S14 remains blocked until that matrix is executed or a product decision explicitly accepts the remaining risk.
23
+
24
+ ## Environment
25
+
26
+ | Host | Binary | Version/status |
27
+ |---|---|---|
28
+ | Claude Code | `/Users/pauloborini/.local/bin/claude` | `2.1.159 (Claude Code)` |
29
+ | Cursor Agent | `/usr/local/bin/cursor agent` | logged in as `dev2@zavii.com.br` |
30
+ | Codex CLI | `/Applications/Codex.app/Contents/Resources/codex` | `codex-cli 0.135.0-alpha.1` |
31
+
32
+ ## Complete Matrix Catalog
33
+
34
+ Legend: this table is the complete required coverage catalog. Values other than `PENDING` summarize real functional evidence from `S13-F*`; the detailed run evidence remains below.
35
+
36
+ | Host | Mode | Backlog item | Existing PRD | Idea | Brainstorm |
37
+ |---|---|---:|---:|---:|---:|
38
+ | Claude | full | PENDING | FAIL / timeout (`S13-F04`) | PENDING | PENDING |
39
+ | Claude | direct | PENDING | PASS + expected block (`S13-F01`, `S13-F02`) | PENDING | PENDING |
40
+ | Claude | interview-only | PENDING | PENDING | PENDING | PENDING |
41
+ | Cursor | full | PENDING | PENDING | PENDING | PENDING |
42
+ | Cursor | direct | PENDING | PENDING | PENDING | PENDING |
43
+ | Cursor | interview-only | PENDING | PENDING | PENDING | PARTIAL (`S13-F03`) |
44
+ | Codex | full | PENDING | PASS (`S13-F07`) | PENDING | PENDING |
45
+ | Codex | direct | PENDING | PENDING | PENDING | PENDING |
46
+ | Codex | interview-only | PENDING | PENDING | PENDING | PASS MCP gates / no implementation (`S13-F05`, `S13-F06`) |
47
+
48
+ ## Executed Readiness Evidence
49
+
50
+ | ID | Host | Command class | Result | Evidence |
51
+ |---|---|---|---|---|
52
+ | S13-R01 | Claude | bare CLI | PASS | `CLAUDE_BARE_OK` |
53
+ | S13-R02 | Claude | plugin smoke | PASS | `CLAUDE_PLUGIN_OK` |
54
+ | S13-R03 | Cursor | bare CLI | PASS | `CURSOR_BARE_OK` |
55
+ | S13-R04 | Cursor | plugin smoke, text output | OBSERVATION | no output after 90s; process killed |
56
+ | S13-R05 | Cursor | plugin smoke, `stream-json` | PASS | session `c523fc93-192a-4e27-8473-48b88498ace6`, result `CURSOR_PLUGIN_STREAM_OK` |
57
+ | S13-R06 | Codex | bare CLI | PASS | session `019e8155-39d7-79e0-88fa-d27023a2c906`, result `CODEX_BARE_OK` |
58
+ | S13-R07 | Codex | plugin install before repair | FAIL | `missing or invalid plugin.json` |
59
+ | S13-R08 | Codex | plugin install after repair | PASS | cache path under `.codex/plugins/cache/atlas-s13/.../0.2.0-dev` |
60
+ | S13-R09 | Codex | plugin smoke after install | PASS | session `019e815e-e821-7b42-9805-b1b725cc2a43`, result `CODEX_PLUGIN_OK_3` |
61
+ | S13-R10 | Claude | plugin MCP from zip | FAIL | `MCP_NOT_AVAILABLE` |
62
+ | S13-R11 | Claude | plugin MCP from unpacked dir after path repair | PASS | `atlas_ping` returned `status: alive`, `version: 0.2.0-dev`, 9 capabilities |
63
+ | S13-R12 | Codex | MCP via explicit `mcp_servers.*` config + approval bypass | PASS | session `019e8350-13cf-7a01-b5b6-7edac9ac8269`; `atlas_ping` returned `status: alive`, `version: 0.2.0-dev`, 9 capabilities |
64
+ | S13-R13 | Codex | installed plugin MCP autoexposure before `cwd` repair | FAIL | session `019e8350-b437-7e33-bbe0-51f3139dc1a8`; `tool_search` found 0 Atlas tools, MCP resources/templates empty |
65
+ | S13-R14 | Codex | installed plugin MCP autoexposure after `cwd: "."` repair | PASS | session `019e8358-5be8-7d03-abe1-0dba0773b004`; `atlas_ping` returned `status: alive`, `version: 0.2.0-dev`, 9 capabilities |
66
+ | S13-R15 | Codex | installed plugin full run with explicit `project_root` | PASS | session `019e8365-4e3b-7042-a1d6-abbe05e45f77`; final `CODEX_FULL_POSITIVE_PROJECT_ROOT_OK`; ledger created under the consumer workspace state directory |
67
+
68
+ ## Repairs Applied
69
+
70
+ | Finding | Severity | Repair |
71
+ |---|---:|---|
72
+ | Codex plugin manifest used invalid install contract | P1 | `plugin-manifests/codex/plugin.json` now points `skills` to `./skills/` and `mcpServers` to `./.mcp.json`; build creates both. |
73
+ | Codex MCP could not parse server responses | P1 | `packages/mcp-server/server.js` now emits newline-delimited JSON-RPC responses. Input parser accepts newline-delimited requests plus `Content-Length` frames with CRLF or LF-only headers. |
74
+ | Claude/Cursor plugin did not expose MCP from packaged path | P1 | `plugin-manifests/claude/plugin.json` now resolves the MCP server through `${CLAUDE_PLUGIN_ROOT}/packages/mcp-server/server.js`. |
75
+ | Codex installed plugin did not expose bundled MCP from consumer workspace | P1 | `build/build-plugins.sh` now emits `.mcp.json` with `cwd: "."`, so Codex launches `packages/mcp-server/server.js` relative to the installed plugin root. |
76
+ | Codex installed plugin wrote ledger to plugin cache after `cwd: "."` | P1 | Stateful MCP tools now accept optional `project_root`; Codex host runs can keep portable MCP startup and still write state in the consumer workspace. |
77
+
78
+ ## Functional Matrix Evidence
79
+
80
+ | ID | Host | Mode | Input type | Result | Evidence |
81
+ |---|---|---|---|---|---|
82
+ | S13-F01 | Claude | direct | existing PRD | PASS | `run_id=atlas-s13-qa-20260601`; state ledger present; `qa-output.txt` contains `QA_OK`; G10/G1/G5/template_conformance passed |
83
+ | S13-F02 | Claude | direct | ambiguous PRD | PASS expected block | `run_id=run-s13-qa-20260601-001`; state ledger present; G5 blocked with 7 ambiguity matches; template_conformance blocked with 4 pendencies; no requested implementation executed |
84
+ | S13-F03 | Cursor | interview-only | brainstorm | PARTIAL | Legacy v0.2 evidence; family lock tool removed in v0.3; final status `interview_completed_recommendations`; user confirmation still pending |
85
+ | S13-F04 | Claude | full | existing PRD | FAIL / timeout | no output after 4 minutes; process killed; no completed full ledger |
86
+ | S13-F05 | Codex | interview-only | brainstorm | BLOCKED host dependency | initial Codex CLI returned usage limit: `try again at 5:39 AM`; no functional Codex run executed |
87
+ | S13-F06 | Codex | interview-only | brainstorm | PASS MCP gates / no implementation | Legacy v0.2 evidence; family lock tool removed in v0.3; implementation_performed `false` |
88
+ | S13-F07 | Codex | full | existing PRD | PASS | session `019e8365-4e3b-7042-a1d6-abbe05e45f77`; final `CODEX_FULL_POSITIVE_PROJECT_ROOT_OK`; `run_id=atlas-s13-codex-full-positive-project-root-20260601`; state ledger present; `qa-output.txt` is exactly 5 bytes `QA_OK`; G10/G1/G5/template_conformance/G7/G11 expected block/G8 passed |
89
+
90
+ ## Direct MCP Contract Probes
91
+
92
+ These probes exercise the MCP contract directly. They are not substitutes for host-level functional QA.
93
+
94
+ | ID | Scope | Result | Evidence |
95
+ |---|---|---|---|
96
+ | S13-MCP-FULL-01 | full flow gate sequence | PASS contract / not host QA | fresh workspace `/private/tmp/atlas-s13-full-probe-clean2`; `run_id=atlas-s13-full-mcp-probe-clean2-20260601`; `atlas_preflight`, PRD G1/G5/template_conformance, PLAN G1/template_conformance, `atlas_lock_dispatch` plan_handoff start/complete, `atlas_assert_after_plan` expected block for `completed_without_execute`, and plan_execute start/complete with validator `passed` all returned expected statuses |
97
+
98
+ ## Checks
99
+
100
+ | Check | Result |
101
+ |---|---|
102
+ | `node --check packages/mcp-server/server.js` | PASS |
103
+ | MCP newline initialize probe | PASS |
104
+ | MCP `Content-Length` initialize probe with CRLF header | PASS |
105
+ | MCP `Content-Length` initialize probe with LF-only header | PASS |
106
+ | `build/build-plugins.sh` | PASS |
107
+ | `unzip -t dist/atlas-workflow-codex.plugin` | PASS |
108
+ | Claude plugin smoke | PASS |
109
+ | Cursor plugin smoke via `stream-json` | PASS |
110
+ | Codex plugin install + smoke | PASS |
111
+ | Claude unpacked plugin MCP ping | PASS |
112
+ | Claude direct positive workflow with MCP ledger | PASS |
113
+ | Claude direct ambiguous workflow with expected MCP block | PASS |
114
+ | Cursor interview-only workflow with MCP ledger | PARTIAL |
115
+ | Claude full workflow | FAIL / timeout |
116
+ | Codex functional workflow | PARTIAL / full matrix incomplete |
117
+ | Codex explicit MCP config `atlas_ping` with approval bypass | PASS |
118
+ | Codex installed plugin MCP autoexposure | PASS |
119
+ | Codex installed plugin interview-only MCP gates | PASS |
120
+ | Codex installed plugin full workflow with `project_root` ledger | PASS |
121
+ | Direct MCP full gate sequence | PASS contract / not host QA |
122
+
123
+ ## Dist Evidence
124
+
125
+ | Artifact | Evidence |
126
+ |---|---|
127
+ | `dist/atlas-workflow-claude.plugin` | `unzip -p ... .claude-plugin/plugin.json` contains `${CLAUDE_PLUGIN_ROOT}/packages/mcp-server/server.js`; `unzip -l` contains `orchestrator/references/qa_s13_matrix.md`; `unzip -t` passed |
128
+ | `dist/atlas-workflow-codex.plugin` | `unzip -p ... .mcp.json` contains `cwd: "."`; `packages/mcp-server/server.js` accepts `project_root`; `unzip -t` passed; `unzip -l` contains `orchestrator/references/qa_s13_matrix.md` |
129
+
130
+ ## Go/No-Go
131
+
132
+ NO-GO for S14.
133
+
134
+ Reason: PRD S13 requires the critical subset to cover at least one positive and one negative path per host and to validate full/direct/interview-only behavior. This run now proves Claude direct positive/negative, Cursor interview-only partial behavior with live MCP evidence, Codex installed-plugin MCP exposure, Codex interview-only MCP gates, and Codex full positive flow, but it still does not prove one positive and one negative functional workflow per host.
135
+
136
+ Required next action:
137
+
138
+ 1. Re-run full mode with bounded timeout and verify `PLAN_*.md`, `atlas_assert_after_plan`, execution and validator evidence.
139
+ 2. Complete Cursor interview with explicit user answer or mark it as intentionally waived by product.
140
+ 3. Execute at least one positive and one negative functional workflow run per host.
141
+ 4. Reclassify go/no-go only after the critical subset is green or explicitly waived.
@@ -0,0 +1,42 @@
1
+ # Despacho de sub-agent
2
+
3
+ Contrato host-agnóstico para Cursor, Codex e Claude Code.
4
+
5
+ ## Regra central
6
+
7
+ Cada fase mapeada a um `skill_id` pela configuração embutida do MCP roda em sub-agent foreground, blocking, um por vez.
8
+
9
+ A primeira ação do sub-agent deve ser carregar o `SKILL.md` completo do `skill_id` resolvido. Depois disso ele executa a skill.
10
+
11
+ Proibido:
12
+
13
+ - "aja como `<skill_id>`" sem carregar o `SKILL.md`;
14
+ - copiar resumo da skill para substituir a leitura real;
15
+ - executar plano/código/review no fio do orquestrador.
16
+
17
+ Equivalente aceito: mecanismo nativo do host que injete a skill completa no sub-agent.
18
+
19
+ ## Codex
20
+
21
+ No Codex, ativar `$atlas-task-validator` carrega skill no contexto atual, mas **não** cria isolamento frio. Para validação G4, o orquestrador deve chamar explicitamente o custom agent nativo:
22
+
23
+ ```text
24
+ spawn_agent(agent_type: "atlas-task-validator", items: [{ type: "text", text: "<state_path>" }])
25
+ ```
26
+
27
+ O registro ativo desse agent vive em `CODEX_HOME/agents/atlas-task-validator.toml` após `npx github:pauloborini/atlas-workflow init codex`; o bundle mantém `.codex/agents/` como fonte gerada. O arquivo é gerado por `build/gen-host-agent.mjs` com `model = "gpt-5.4"` e `model_reasoning_effort = "high"`. Se o host responder `unknown agent_type`, a fase bloqueia (`blocked`/fail-closed). Proibido fallback para `default`, `$atlas-task-validator`, execução inline ou validação no fio do orquestrador.
28
+
29
+ ## Payload mínimo
30
+
31
+ - `skill_id`
32
+ - `skill_md_path` ou indicação nativa equivalente da skill
33
+ - `prd_path` / `plan_path` / flags da fase
34
+ - instrução: "primeira ação: carregar a skill completa; segunda ação: executar a skill"
35
+
36
+ ## Descoberta de `SKILL.md`
37
+
38
+ 1. Mecanismo nativo de skills do host.
39
+ 2. Diretório local de skills do host.
40
+ 3. Workspace, apenas como fallback de descoberta.
41
+
42
+ Se não encontrar a skill `atlas-*` exigida, abortar. Não trocar por skill nativa ou variante antiga. Não emular inline.