atlas-workflow 0.9.0 → 0.9.2

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 (111) hide show
  1. package/README.md +2 -2
  2. package/VERSION +1 -1
  3. package/build/cli/atlas-init.mjs +12 -14
  4. package/build/tests/classify-findings.test.mjs +20 -0
  5. package/build/tests/etapa3.test.mjs +161 -0
  6. package/build/tests/test_classify_findings.py +79 -0
  7. package/hosts/opencode/.opencode/agents/atlas-findings-repair.md +4 -0
  8. package/hosts/opencode/.opencode/agents/atlas-task-validator.md +18 -1
  9. package/hosts/opencode/.opencode/atlas/VERSION +1 -1
  10. package/hosts/opencode/.opencode/atlas/orchestrator/README.md +7 -5
  11. package/hosts/opencode/.opencode/atlas/orchestrator/commands/workflow.md +1 -1
  12. package/hosts/opencode/.opencode/atlas/orchestrator/skills/atlas-workflow-orchestrator/SKILL.md +22 -17
  13. package/hosts/opencode/.opencode/atlas/packages/mcp-server/README.md +1 -1
  14. package/hosts/opencode/.opencode/atlas/packages/mcp-server/package.json +1 -1
  15. package/hosts/opencode/.opencode/atlas/packages/mcp-server/server.js +446 -14
  16. package/hosts/opencode/.opencode/atlas/packages/templates/BACKLOG_MESTRE_TEMPLATE.md +14 -3
  17. package/hosts/opencode/.opencode/atlas/packages/templates/PRD_TEMPLATE.md +2 -1
  18. package/hosts/opencode/.opencode/atlas/packages/templates/STATE_FILE_SCHEMA.md +25 -1
  19. package/hosts/opencode/.opencode/skills/_shared/references/stack-profiles.md +36 -0
  20. package/hosts/opencode/.opencode/skills/_shared/scripts/document_quality.mjs +252 -0
  21. package/hosts/opencode/.opencode/skills/atlas-backlog-generator/SKILL.md +7 -2
  22. package/hosts/opencode/.opencode/skills/atlas-direct-execute/SKILL.md +6 -2
  23. package/hosts/opencode/.opencode/skills/atlas-findings-repair/SKILL.md +11 -1
  24. package/hosts/opencode/.opencode/skills/atlas-plan-execute/SKILL.md +16 -2
  25. package/hosts/opencode/.opencode/skills/atlas-plan-handoff/SKILL.md +6 -4
  26. package/hosts/opencode/.opencode/skills/atlas-prd-interview/SKILL.md +7 -2
  27. package/hosts/opencode/.opencode/skills/atlas-slice-review/SKILL.md +37 -2
  28. package/hosts/opencode/.opencode/skills/atlas-slice-review/references/scenario-lenses.md +8 -0
  29. package/hosts/opencode/.opencode/skills/atlas-slice-review/scripts/classify_findings.mjs +60 -0
  30. package/hosts/opencode/.opencode/skills/atlas-slice-review/scripts/classify_findings.py +9 -41
  31. package/hosts/opencode/.opencode/skills/atlas-sprint-prd-generator/SKILL.md +7 -4
  32. package/hosts/opencode/.opencode/skills/atlas-task-validator/SKILL.md +29 -14
  33. package/hosts/opencode/.opencode/skills/atlas-workflow-orchestrator/SKILL.md +22 -17
  34. package/hosts/pi/.pi/agents/atlas-direct-execute.md +6 -2
  35. package/hosts/pi/.pi/agents/atlas-findings-repair.md +15 -1
  36. package/hosts/pi/.pi/agents/atlas-plan-execute.md +16 -2
  37. package/hosts/pi/.pi/agents/atlas-slice-review.md +37 -2
  38. package/hosts/pi/.pi/agents/atlas-task-validator.md +18 -1
  39. package/hosts/pi/atlas/VERSION +1 -1
  40. package/hosts/pi/atlas/orchestrator/README.md +7 -5
  41. package/hosts/pi/atlas/orchestrator/commands/workflow.md +1 -1
  42. package/hosts/pi/atlas/orchestrator/skills/atlas-workflow-orchestrator/SKILL.md +22 -17
  43. package/hosts/pi/atlas/packages/mcp-server/README.md +1 -1
  44. package/hosts/pi/atlas/packages/mcp-server/package.json +1 -1
  45. package/hosts/pi/atlas/packages/mcp-server/server.js +446 -14
  46. package/hosts/pi/atlas/packages/templates/BACKLOG_MESTRE_TEMPLATE.md +14 -3
  47. package/hosts/pi/atlas/packages/templates/PRD_TEMPLATE.md +2 -1
  48. package/hosts/pi/atlas/packages/templates/STATE_FILE_SCHEMA.md +25 -1
  49. package/hosts/pi/skills/_shared/references/stack-profiles.md +36 -0
  50. package/hosts/pi/skills/_shared/scripts/document_quality.mjs +252 -0
  51. package/hosts/pi/skills/atlas-backlog-generator/SKILL.md +7 -2
  52. package/hosts/pi/skills/atlas-direct-execute/SKILL.md +6 -2
  53. package/hosts/pi/skills/atlas-findings-repair/SKILL.md +11 -1
  54. package/hosts/pi/skills/atlas-plan-execute/SKILL.md +16 -2
  55. package/hosts/pi/skills/atlas-plan-handoff/SKILL.md +6 -4
  56. package/hosts/pi/skills/atlas-prd-interview/SKILL.md +7 -2
  57. package/hosts/pi/skills/atlas-slice-review/SKILL.md +37 -2
  58. package/hosts/pi/skills/atlas-slice-review/references/scenario-lenses.md +8 -0
  59. package/hosts/pi/skills/atlas-slice-review/scripts/classify_findings.mjs +60 -0
  60. package/hosts/pi/skills/atlas-slice-review/scripts/classify_findings.py +9 -41
  61. package/hosts/pi/skills/atlas-sprint-prd-generator/SKILL.md +7 -4
  62. package/hosts/pi/skills/atlas-task-validator/SKILL.md +29 -14
  63. package/hosts/pi/skills/atlas-workflow-orchestrator/SKILL.md +22 -17
  64. package/package.json +1 -1
  65. package/plugins/atlas-workflow-orchestrator/.codex/agents/atlas-findings-repair.toml +1 -1
  66. package/plugins/atlas-workflow-orchestrator/.codex/agents/atlas-task-validator.toml +1 -1
  67. package/plugins/atlas-workflow-orchestrator/.codex-plugin/plugin.json +1 -1
  68. package/plugins/atlas-workflow-orchestrator/VERSION +1 -1
  69. package/plugins/atlas-workflow-orchestrator/agents/atlas-findings-repair.md +4 -0
  70. package/plugins/atlas-workflow-orchestrator/agents/atlas-task-validator.md +18 -1
  71. package/plugins/atlas-workflow-orchestrator/orchestrator/README.md +7 -5
  72. package/plugins/atlas-workflow-orchestrator/orchestrator/commands/workflow.md +1 -1
  73. package/plugins/atlas-workflow-orchestrator/orchestrator/skills/atlas-workflow-orchestrator/SKILL.md +22 -17
  74. package/plugins/atlas-workflow-orchestrator/packages/mcp-server/README.md +1 -1
  75. package/plugins/atlas-workflow-orchestrator/packages/mcp-server/package.json +1 -1
  76. package/plugins/atlas-workflow-orchestrator/packages/mcp-server/server.js +446 -14
  77. package/plugins/atlas-workflow-orchestrator/packages/skills/_shared/references/stack-profiles.md +36 -0
  78. package/plugins/atlas-workflow-orchestrator/packages/skills/_shared/scripts/document_quality.mjs +252 -0
  79. package/plugins/atlas-workflow-orchestrator/packages/skills/atlas-backlog-generator/SKILL.md +7 -2
  80. package/plugins/atlas-workflow-orchestrator/packages/skills/atlas-direct-execute/SKILL.md +6 -2
  81. package/plugins/atlas-workflow-orchestrator/packages/skills/atlas-findings-repair/SKILL.md +11 -1
  82. package/plugins/atlas-workflow-orchestrator/packages/skills/atlas-plan-execute/SKILL.md +16 -2
  83. package/plugins/atlas-workflow-orchestrator/packages/skills/atlas-plan-handoff/SKILL.md +6 -4
  84. package/plugins/atlas-workflow-orchestrator/packages/skills/atlas-prd-interview/SKILL.md +7 -2
  85. package/plugins/atlas-workflow-orchestrator/packages/skills/atlas-slice-review/SKILL.md +37 -2
  86. package/plugins/atlas-workflow-orchestrator/packages/skills/atlas-slice-review/references/scenario-lenses.md +8 -0
  87. package/plugins/atlas-workflow-orchestrator/packages/skills/atlas-slice-review/scripts/classify_findings.mjs +60 -0
  88. package/plugins/atlas-workflow-orchestrator/packages/skills/atlas-slice-review/scripts/classify_findings.py +9 -41
  89. package/plugins/atlas-workflow-orchestrator/packages/skills/atlas-sprint-prd-generator/SKILL.md +7 -4
  90. package/plugins/atlas-workflow-orchestrator/packages/skills/atlas-task-validator/SKILL.md +29 -14
  91. package/plugins/atlas-workflow-orchestrator/packages/templates/BACKLOG_MESTRE_TEMPLATE.md +14 -3
  92. package/plugins/atlas-workflow-orchestrator/packages/templates/PRD_TEMPLATE.md +2 -1
  93. package/plugins/atlas-workflow-orchestrator/packages/templates/STATE_FILE_SCHEMA.md +25 -1
  94. package/plugins/atlas-workflow-orchestrator/skills/_shared/references/stack-profiles.md +36 -0
  95. package/plugins/atlas-workflow-orchestrator/skills/_shared/scripts/document_quality.mjs +252 -0
  96. package/plugins/atlas-workflow-orchestrator/skills/atlas-backlog-generator/SKILL.md +7 -2
  97. package/plugins/atlas-workflow-orchestrator/skills/atlas-direct-execute/SKILL.md +6 -2
  98. package/plugins/atlas-workflow-orchestrator/skills/atlas-findings-repair/SKILL.md +11 -1
  99. package/plugins/atlas-workflow-orchestrator/skills/atlas-plan-execute/SKILL.md +16 -2
  100. package/plugins/atlas-workflow-orchestrator/skills/atlas-plan-handoff/SKILL.md +6 -4
  101. package/plugins/atlas-workflow-orchestrator/skills/atlas-prd-interview/SKILL.md +7 -2
  102. package/plugins/atlas-workflow-orchestrator/skills/atlas-slice-review/SKILL.md +37 -2
  103. package/plugins/atlas-workflow-orchestrator/skills/atlas-slice-review/references/scenario-lenses.md +8 -0
  104. package/plugins/atlas-workflow-orchestrator/skills/atlas-slice-review/scripts/classify_findings.mjs +60 -0
  105. package/plugins/atlas-workflow-orchestrator/skills/atlas-slice-review/scripts/classify_findings.py +9 -41
  106. package/plugins/atlas-workflow-orchestrator/skills/atlas-sprint-prd-generator/SKILL.md +7 -4
  107. package/plugins/atlas-workflow-orchestrator/skills/atlas-task-validator/SKILL.md +29 -14
  108. package/plugins/atlas-workflow-orchestrator/skills/atlas-workflow-orchestrator/SKILL.md +22 -17
  109. package/plugins/atlas-workflow-orchestrator/templates/BACKLOG_MESTRE_TEMPLATE.md +14 -3
  110. package/plugins/atlas-workflow-orchestrator/templates/PRD_TEMPLATE.md +2 -1
  111. package/plugins/atlas-workflow-orchestrator/templates/STATE_FILE_SCHEMA.md +25 -1
@@ -21,7 +21,7 @@ Orquestra pipelines de desenvolvimento de features no projeto Atlas, automatizan
21
21
  Três modos **canônicos de execução** — `full`, `direct`, `execute` (PRD §5 D1) — mais o modo `interview-only`, que permanece **separado** (entrevista sem execução; PRD D2, não é colapsado em `full`).
22
22
 
23
23
  - **`full`** — pipeline completo: PRD → validação → entrevista (se necessário) → **plano (artefato obrigatório)** → executor → review (opcional)
24
- - **`direct`** — pipeline enxuto: PRD → validação → entrevista (se necessário) → executor → review (opcional). **Não produz plano de handoff** — a diferença real para `full` é exatamente essa.
24
+ - **`direct`** — pipeline enxuto: PRD → validação → entrevista (se necessário) → `atlas-direct-execute` → review (opcional). **Não produz plano de handoff** — a diferença real para `full` é exatamente essa.
25
25
  - **`execute`** — recebe um **`PLAN_*.md` pronto** e o executa **sem gerar plano** (PRD D1). Entrada = caminho de plano; reverifica o artefato + conformidade de template e despacha `plan_execute` direto. Não regera nem replaneja: ajustes de plano pedem `full`. `atlas_assert_after_plan` (gate pós-plano do `full`) **não se aplica** em `execute` — o plano já é o input; o equivalente é a reverificação na entrada (PRD D13). **Não há alias `plan`**: usar `plan` como modo é ambíguo com planejamento documental e deve ser rejeitado como modo inválido.
26
26
  - **`interview-only`** — entrevista direta (ex: brainstorm, resolução de decisões). Entrevista **sem execução**: não usa `guarantee_level` no fluxo (não há execução de código a garantir). Permanece modo separado (PRD D2).
27
27
 
@@ -51,7 +51,7 @@ Três modos **canônicos de execução** — `full`, `direct`, `execute` (PRD §
51
51
  → Gera PRD de indicação, força entrevista, plano, executor
52
52
 
53
53
  /workflow interview-only brainstorm "que tal dark mode?"
54
- Entrevista direto, sem PRD prévio
54
+ Cria draft mínimo pelo template canônico, valida o path e entrevista esse PRD; sem execução
55
55
 
56
56
  /workflow execute plan "/path/to/PLAN_S05_login.md"
57
57
  → Reverifica o plano (artifact + TC), executa direto via plan_execute + validador frio. Não gera plano.
@@ -102,7 +102,7 @@ Executar **antes** de iniciar o pipeline. Se qualquer item falhar, **parar e rep
102
102
  Ação: instalar/ativar o plugin ou corrigir o pacote atlas-* disponível no host
103
103
  ```
104
104
  **PROIBIDO o fallback "implementação direta" / "contratos equivalentes inline".** Não existe caminho onde o orquestrador faz plano ou código no próprio fio. Emulação inline e fallback direto são a falha-raiz que esta skill proíbe — se não há sub-agent, **para**. (Gate G7.)
105
- 8. **Rejeitar conflito de modo:** se o pedido tiver `full`/`direct` junto com "sem patch", "sem editar código", "planejamento apenas", "handoff only" ou equivalente, **pare antes de gerar artefatos**. `full`/`direct` executam `plan_execute`; não existe interpretação plan-only implícita.
105
+ 8. **Rejeitar conflito de modo:** se o pedido tiver `full`/`direct` junto com "sem patch", "sem editar código", "planejamento apenas", "handoff only" ou equivalente, **pare antes de gerar artefatos**. `full` executa `atlas-plan-execute`; `direct` executa `atlas-direct-execute`; não existe interpretação plan-only implícita.
106
106
  9. **Declarar o plano de execução** (1 bloco curto): `run_id`, modo, **ids exatos de cada sub-agent**, sequência de fases, artefatos esperados e tools MCP que sustentarão cada gate. Só então iniciar a Fase 1.
107
107
 
108
108
  ---
@@ -120,7 +120,7 @@ O pipeline é **fire-and-continue**: uma vez iniciado, o orquestrador avança fa
120
120
 
121
121
  **Após entrevista**: reexecuta os gates afetados (`atlas_verify_artifact`/`atlas_scan_prd`/TC) e **retoma o pipeline (plano→execução) automaticamente**, sem nova confirmação.
122
122
 
123
- A única interação legítima com o usuário é **dentro de uma fase** — o `AskUserQuestion` da entrevista para resolver ambiguidade de produto. Resolver ambiguidade ≠ pedir permissão pra avançar. Terminada a fase, o pipeline segue sozinho até o próximo gate duro ou o output final.
123
+ A única interação legítima com o usuário é **dentro de uma fase** — o mecanismo estruturado `question_prompt` devolvido por `atlas_capabilities`, usado pela entrevista para resolver ambiguidade de produto. Resolver ambiguidade ≠ pedir permissão pra avançar. Terminada a fase, respostas são persistidas no PRD, gates são reexecutados e o pipeline segue sozinho.
124
124
 
125
125
  ## Papel do orquestrador (fronteira de determinismo pela mutação de código)
126
126
 
@@ -129,7 +129,7 @@ O orquestrador **coordena a execução**, não implementa código — maestro qu
129
129
  - **ANTES do plano validado — autoria documental livre no fio principal.** Pode autorar PRD, entrevistar e escrever `PLAN_*.md` direto; fases documentais não exigem sub-agent (documento não muta o produto). **Ao finalizar um PRD inline, estampar `| Status | Aprovado para implementação |`** — é o `required_status` do gate TC; sem isso o PRD sai `Draft` e trava o TC em rodadas de correção.
130
130
  - **DEPOIS do plano validado (`atlas_verify_artifact` + TC `passed`) — mãos atadas fortes.** Não edita mais PRD/plano/código nem roda comando mutante; só coordena (despachar sub-agent, ler artefato pra verificar gate, ecoar banner, montar output).
131
131
 
132
- Execução de código é **sempre** sub-agent `plan_execute` (blocking, um por vez) + validador frio `task_validator` (Gate G9/G7 — detalhe na tabela de gates). Dispatch blocking: despacha → espera retorno → verifica gate → próxima fase. Nunca dois sub-agents simultâneos.
132
+ Execução de código é **sempre** sub-agent executor do modo (`atlas-plan-execute` em `full`/`execute`; `atlas-direct-execute` em `direct`), mantendo `phase: plan_execute`, + validador frio `task_validator` (Gate G9/G7). Dispatch blocking: despacha → espera retorno → verifica gate → próxima fase. Nunca dois sub-agents simultâneos.
133
133
 
134
134
  ### Verbo de dispatch é host-agnóstico (não assuma "Agent tool")
135
135
 
@@ -180,9 +180,9 @@ Regras inegociáveis. Violação = parar, não contornar.
180
180
 
181
181
  ## Fluxo de execução
182
182
 
183
- ### [EXEC] — passo comum de execução + validação (idêntico em `full`/`direct`/`execute`)
183
+ ### [EXEC] — passo comum de execução + validação
184
184
 
185
- `atlas_lock_dispatch(action=start, phase=plan_execute)`; despachar `plan_execute` como sub-agent blocking (lê `PLAN_*.md` em `full`/`execute`, PRD em `direct`). O executor emite checkpoints G12; sem retorno/progresso, chamar `atlas_lock_dispatch(action=status, phase=plan_execute)` e tratar `executor_bootstrap_timeout`/`executor_progress_timeout` como `stalled`/retry — nunca como execução em andamento. O executor retorna `validator_handoff_required` com `state_path`; o MCP só abre o slot após o checkpoint `state_path_created` para esse mesmo `state_path`. Validação sempre **sibling**: `atlas_lock_validator(action=start)`, despachar **um** `task_validator`, exigir no output o `dispatch_token` do slot e fechar com `validator_run_id` + `dispatch_token`. Em `fail`: `repair_start`, despachar `atlas-findings-repair` com `{state_path, findings, validator_attempt, repair_run_id, repair_budget: 1}`, exigir atualização do mesmo `state_path`, fechar com `repair_run_id` e rodar o **2º e último** validator. `passed`/`passed_with_observations` são terminais aprovados; status diferente bloqueia review e output completed.
185
+ `atlas_lock_dispatch(action=start, phase=plan_execute)` em todos os modos; despachar como sub-agent blocking o `routing.executor_skill` devolvido pelo preflight: `atlas-plan-execute` em `full`/`execute`, `atlas-direct-execute` em `direct`. O executor emite checkpoints G12; sem retorno/progresso, chamar `atlas_lock_dispatch(action=status, phase=plan_execute)` e tratar `executor_bootstrap_timeout`/`executor_progress_timeout` como `stalled`/retry — nunca como execução em andamento. O executor retorna `validator_handoff_required` com `state_path`; o MCP só abre o slot após o checkpoint `state_path_created` para esse mesmo `state_path`. Validação sempre **sibling**: `atlas_lock_validator(action=start)`, despachar **um** `task_validator`, exigir no output o `dispatch_token` do slot e fechar com `validator_run_id` + `dispatch_token`. Em `fail`: `repair_start`, despachar `atlas-findings-repair` com `{state_path, findings, validator_attempt, repair_run_id, repair_budget: 1}`, exigir atualização do mesmo `state_path`, fechar com `repair_run_id` e rodar o **2º e último** validator. `passed`/`passed_with_observations` são terminais aprovados; status diferente bloqueia review e output completed.
186
186
 
187
187
  ### Full mode
188
188
 
@@ -225,8 +225,9 @@ Entrada: um **`PLAN_*.md` pronto**. Artefatos esperados: (plano já existe) →
225
225
 
226
226
  ### Interview-only mode
227
227
 
228
- 1. Entrevista direta (sem PRD anterior) invoca o id resolvido para `prd_interview`.
229
- 2. Gera PRD esboço (opcional).
228
+ 1. Se a entrada já for PRD válido, usar seu path. Se for `brainstorm`, criar primeiro um draft mínimo em disco com `packages/templates/PRD_TEMPLATE.md`, preservando as 6 seções canônicas e registrando o brainstorm em contexto/objetivo.
229
+ 2. Verificar o draft com `atlas_verify_artifact` e `atlas_verify_template_conformance(artifact_type=prd)`; path ausente/inválido bloqueia.
230
+ 3. Invocar `prd_interview` no fio principal com `prd_path` válido; persistir respostas no mesmo artefato e reverificar.
230
231
 
231
232
  > `interview-only` é entrevista **sem execução**: não há fase `plan_execute` nem `guarantee_level` no fluxo (nada de código a garantir). A autoria do esboço é documental e livre.
232
233
 
@@ -245,9 +246,10 @@ O scan é **determinístico** e roda **dentro do MCP** (`atlas_scan_prd`): a lis
245
246
  Detalhe do caminho que a "Princípio de continuação automática" exige para decisão pendente de **qualquer fonte** (scan/entrevista/validação de plano/`PERGUNTAS_EM_ABERTO.md`/`DISCUSSAO_*.md`/backlog — a fonte não muda o tratamento):
246
247
 
247
248
  1. **Garantir o PRD primeiro.** Em `full`/`direct`, se o PRD não existe, **gerar o PRD draft** com as decisões marcadas. A entrevista é **PRD-scoped**: roda **sobre** o PRD, nunca antes. Detectar decisão não antecipa nem pula a geração do PRD.
248
- 2. **Disparar `atlas-prd-interview`** sobre o PRD — resolve via `AskUserQuestion` (interação dentro da fase, não pedido de permissão).
249
- 3. **Propagar** ao PRD/plano/DEC/registro de origem.
250
- 4. **Reexecutar** os gates afetados (`atlas_verify_artifact`/`atlas_scan_prd`/TC) e **continuar** automaticamente.
249
+ 2. **Disparar `atlas-prd-interview`** sobre o PRD — resolve via `atlas_capabilities.question_prompt`, sem hardcode de host.
250
+ 3. **Persistir após cada rodada** no mesmo PRD, reindexar §3–§6 e não repetir D* fechada.
251
+ 4. **Propagar** ao PRD/plano/DEC/registro de origem.
252
+ 5. **Reexecutar** os gates afetados (`atlas_verify_artifact`/`atlas_scan_prd`/TC) e **continuar** automaticamente.
251
253
 
252
254
  Marcar TBD e adiar só se o usuário pedir **explicitamente** — nunca por iniciativa do orquestrador.
253
255
 
@@ -326,13 +328,16 @@ Se `full` gerou `PLAN_*.md` mas não despachou `plan_execute`, o cabeçalho deve
326
328
 
327
329
  ## Skills envolvidas
328
330
 
331
+ `atlas-backlog-generator` aparece apenas para descoberta do catálogo: é **explicit-only** e nunca integra `full`/`direct`/`execute`/`interview-only`. A cadeia automática começa em PRD/input já fornecido.
332
+
329
333
  | Skill | Entrada | Saída (artefato) |
330
334
  |-------|---------|------------------|
331
- | `atlas-backlog-generator` | ideia/prompt/conversa/briefing | `BACKLOG_MESTRE_*.md` |
335
+ | `atlas-backlog-generator` (**explicit-only**) | pedido explícito de backlog | `BACKLOG_MESTRE_*.md` |
332
336
  | `atlas-sprint-prd-generator` | sprint_id/indicação | `PRD_*.md`, decisions_found |
333
337
  | `atlas-prd-interview` | prd_path, ambiguities | `PRD_*.md` atualizado, decisions |
334
338
  | `atlas-plan-handoff` | prd_path | `PLAN_*.md` |
335
- | `atlas-plan-execute` | plan_path (full / **execute**) ou prd_path (direct) | diff de código, evidência |
339
+ | `atlas-plan-execute` | plan_path (`full` / `execute`) | diff de código, evidência, `state_path` |
340
+ | `atlas-direct-execute` | prd_path/spec/task (`direct`) | diff de código, evidência, `state_path` |
336
341
  | `atlas-slice-review` | diff/output | review_feedback |
337
342
 
338
343
  **Sub-agent frio (Gate G4):** `atlas-task-validator` é verificado no pré-flight pelo orquestrador e sempre roda isolado como **sub-agent irmão (sibling)**, em todos os hosts: despachado pelo orquestrador a partir do `state_path` retornado pelo executor. A topologia é sempre sibling — o executor nunca despacha o validador.
@@ -356,11 +361,11 @@ Se o MCP não responder ou reportar drift, o pacote está inválido: abortar no
356
361
  ```
357
362
  orquestrador
358
363
  ├─ MCP ping + preflight → atlas_ping + atlas_preflight (G10)
359
- ├─ PRD → sub-agent → atlas_verify_artifact (G1)
364
+ ├─ PRD → autoria documental no pai → atlas_verify_artifact (G1)
360
365
  ├─ scan → atlas_scan_prd (G5) + TC → entrevista se bloqueado ou --interview
361
- ├─ PLANO → lock_dispatch + sub-agent → atlas_verify_artifact + atlas_verify_template_conformance
366
+ ├─ PLANO → autoria documental no pai → atlas_verify_artifact + atlas_verify_template_conformance
362
367
  ├─ G11 → atlas_assert_after_plan → próxima ação obrigatória = plan_execute
363
- ├─ EXECUÇÃO → atlas_lock_dispatch + sub-agent plan_execute
368
+ ├─ EXECUÇÃO → atlas_lock_dispatch + sub-agent atlas-plan-execute
364
369
  ├─ VALIDAÇÃO → lock_validator + task-validator irmão
365
370
  │ └─ fail → findings-repair (budget 1, mesmo state_path) → validator final
366
371
  └─ REVIEW → atlas_lock_dispatch + sub-agent slice_review (se --review)
@@ -811,7 +811,17 @@ Ações imediatas:
811
811
 
812
812
  ---
813
813
 
814
- ## 21. Como usar este template
814
+ ## 21. Registro de alterações
815
+
816
+ Registro append-only de atualizações deste backlog. Não substitui decisões da seção 18.
817
+
818
+ | Data | IDs afetados | Alteração | Motivo / fonte |
819
+ |---|---|---|---|
820
+ | [AAAA-MM-DD] | [SNN/DEC-N/RN] | [resumo objetivo] | [pedido, PRD, contrato ou código] |
821
+
822
+ ---
823
+
824
+ ## 22. Como usar este template
815
825
 
816
826
  ### Setup inicial
817
827
 
@@ -840,5 +850,6 @@ Ações imediatas:
840
850
  ### Manter vivo
841
851
 
842
852
  16. Toda decisão que muda escopo, contrato ou sequência atualiza: fonte canônica → PRD afetado → este backlog.
843
- 17. Registrar decisões na seção 18 e riscos na seção 19.
844
- 18. Manter o registro de sprints (seção 7) e o progresso (seção 8.2) como fonte de estado do projeto.
853
+ 17. Em updates, preservar IDs, sprints `done`, decisões fechadas e itens não relacionados; bloquear ciclos, enums inválidos e placeholders acidentais.
854
+ 18. Registrar decisões na seção 18, riscos na seção 19 e cada update no registro append-only da seção 21.
855
+ 19. Manter o registro de sprints (seção 7) e o progresso (seção 8.2) como fonte de estado do projeto.
@@ -16,6 +16,7 @@
16
16
  | **Data** | <YYYY-MM-DD> |
17
17
  | **Dependências de negócio** | <Entregas anteriores necessárias — ex.: “dashboard com lista”> |
18
18
  | **Relacionado** | <Regras de negócio, MVP, backlog §X, DEC-*, Q-* — links> |
19
+ | **Fonte da sprint** | <path explícito do backlog autoritativo + anchor único SNN> |
19
20
 
20
21
  ### Metadados de execução
21
22
 
@@ -134,7 +135,7 @@
134
135
 
135
136
  **Dependências:** <ID entrega — por que bloqueia ou alimenta> · <decisão externa, se houver>
136
137
 
137
- **Referências:** <PRD pai, regras de negócio, backlog sem listar arquivos de código>
138
+ **Referências:** <PRD pai, regras de negócio, backlog autoritativo + anchor; anchors de contrato/código usados na validação, sem copiar implementação>
138
139
 
139
140
  **Histórico:** <YYYY-MM-DD — evento>
140
141
 
@@ -8,7 +8,7 @@ Path:
8
8
  .atlas/state/<run_id>/<slice>.json
9
9
  ```
10
10
 
11
- Schema mínimo:
11
+ Schema legado mínimo (reader compatível):
12
12
 
13
13
  ```json
14
14
  {
@@ -24,9 +24,33 @@ Schema mínimo:
24
24
  }
25
25
  ```
26
26
 
27
+ Extensão determinística (writer atual):
28
+
29
+ ```json
30
+ {
31
+ "base_sha": "40-char git commit SHA",
32
+ "head_sha": "40-char git commit SHA",
33
+ "contract_kind": "plan | direct",
34
+ "obligations": [{"id": "O1", "requirement": "...", "expected_evidence": ["path/test/check"]}],
35
+ "invariants": [{"id": "I1", "requirement": "...", "expected_evidence": ["path/check"]}],
36
+ "scenario_probes": [{"id": "S1", "scenario": "...", "expected": "..."}],
37
+ "risk_probes": [{"id": "R1", "risk": "...", "probe": "..."}],
38
+ "validation_map": [{"obligation_ids": ["O1"], "checks": ["node --test ..."], "status": "passed"}],
39
+ "task_evidence": [{"task": "T01", "files": ["packages/foo.js"], "checks": ["node --test ..."], "result": "passed"}],
40
+ "repair_evidence": [{"finding_id": "F-001", "files_touched": ["packages/foo.js"], "checks_run": ["node --test ..."], "status": "resolved"}],
41
+ "worktree_baseline": [{"path": "preexisting.txt", "status": "M", "sha256": "<64 hex>"}],
42
+ "worktree_final": [{"path": "preexisting.txt", "status": "M", "sha256": "<64 hex>"}]
43
+ }
44
+ ```
45
+
27
46
  Regras:
28
47
 
29
48
  - `run_id`, `slice`, `tasks`, `files_changed`, `diff_stat`, `plan_path`, `boundary_refs`, `executed_at` e `executor_skill` são obrigatórios.
30
49
  - `files_changed` contém paths relativos ao repositório consumidor.
31
50
  - `boundary_refs` aponta para invariantes, contratos ou tasks do plano que delimitam a validação.
32
51
  - O arquivo é uma projeção de boundary para o validator; estado de run continua tendo `atlas_run_state` como fonte primária quando MCP estiver disponível.
52
+ - Writers atuais sempre preenchem a extensão. `contract_kind=direct` exige `obligations` não vazio; `plan` mantém o contrato autoritativo em `plan_path`.
53
+ - Writers capturam `worktree_baseline` antes da primeira mutação e `worktree_final` imediatamente antes do handoff. Ambos usam entradas únicas/ordenadas `{path,status,sha256}`; `status` é `A|M|D|R|C|T|U`, delete usa `sha256:null`, symlink usa SHA-256 do target textual.
54
+ - Readers aceitam temporariamente o schema legado mínimo somente para `atlas-plan-execute` sem `contract_kind`. `atlas-direct-execute` nunca degrada para legado.
55
+ - `base_sha` e `head_sha` são commits explícitos; não inferir base pelo nome da branch. `files_changed` e os arquivos de `task_evidence`/`repair_evidence` devem ser exatamente o diff `base_sha...head_sha` somado ao delta `worktree_baseline→worktree_final`. Dirty preexistente byte/status-idêntico fica fora.
56
+ - `repair_evidence` é aditivo e obrigatório por finding P0/P1 estruturado após repair; o segundo validator correlaciona pelo mesmo `finding_id`.