atlas-workflow 0.9.2 → 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 (84) 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/hosts/opencode/.opencode/atlas/VERSION +1 -1
  6. package/hosts/opencode/.opencode/atlas/orchestrator/README.md +1 -1
  7. package/hosts/opencode/.opencode/atlas/orchestrator/references/host-adapters.md +13 -12
  8. package/hosts/opencode/.opencode/atlas/orchestrator/skills/atlas-workflow-orchestrator/SKILL.md +2 -0
  9. package/hosts/opencode/.opencode/atlas/packages/mcp-server/README.md +1 -1
  10. package/hosts/opencode/.opencode/atlas/packages/mcp-server/package.json +1 -1
  11. package/hosts/opencode/.opencode/atlas/packages/mcp-server/server.js +69 -7
  12. package/hosts/opencode/.opencode/skills/atlas-workflow-orchestrator/SKILL.md +2 -0
  13. package/hosts/pi/atlas/VERSION +1 -1
  14. package/hosts/pi/atlas/orchestrator/README.md +1 -1
  15. package/hosts/pi/atlas/orchestrator/references/host-adapters.md +13 -12
  16. package/hosts/pi/atlas/orchestrator/skills/atlas-workflow-orchestrator/SKILL.md +2 -0
  17. package/hosts/pi/atlas/packages/mcp-server/README.md +1 -1
  18. package/hosts/pi/atlas/packages/mcp-server/package.json +1 -1
  19. package/hosts/pi/atlas/packages/mcp-server/server.js +69 -7
  20. package/hosts/pi/skills/atlas-workflow-orchestrator/SKILL.md +2 -0
  21. package/hosts/zcode/.zcode-plugin/plugin.json +27 -0
  22. package/hosts/zcode/agents/atlas-direct-execute.md +31 -0
  23. package/hosts/zcode/agents/atlas-findings-repair.md +39 -0
  24. package/hosts/zcode/agents/atlas-plan-execute.md +33 -0
  25. package/hosts/zcode/agents/atlas-slice-review.md +27 -0
  26. package/hosts/zcode/agents/atlas-task-validator.md +138 -0
  27. package/hosts/zcode/packages/mcp-server/README.md +29 -0
  28. package/hosts/zcode/packages/mcp-server/VERSION +1 -0
  29. package/hosts/zcode/packages/mcp-server/package.json +15 -0
  30. package/hosts/zcode/packages/mcp-server/server.js +3897 -0
  31. package/hosts/zcode/packages/orchestrator/README.md +270 -0
  32. package/hosts/zcode/packages/orchestrator/commands/workflow.md +37 -0
  33. package/hosts/zcode/packages/orchestrator/defaults/paths.md +21 -0
  34. package/hosts/zcode/packages/orchestrator/references/host-adapters.md +106 -0
  35. package/hosts/zcode/packages/orchestrator/references/qa_s13_matrix.md +141 -0
  36. package/hosts/zcode/packages/orchestrator/references/subagent_dispatch.md +42 -0
  37. package/hosts/zcode/packages/orchestrator/skills/atlas-workflow-orchestrator/SKILL.md +391 -0
  38. package/hosts/zcode/packages/templates/BACKLOG_MESTRE_TEMPLATE.md +855 -0
  39. package/hosts/zcode/packages/templates/BOUNDARY_PRD_PLAN.md +93 -0
  40. package/hosts/zcode/packages/templates/PERGUNTAS_EM_ABERTO_TEMPLATE.md +139 -0
  41. package/hosts/zcode/packages/templates/PLAN_TEMPLATE.md +146 -0
  42. package/hosts/zcode/packages/templates/PRD_TEMPLATE.md +150 -0
  43. package/hosts/zcode/packages/templates/STATE_FILE_SCHEMA.md +56 -0
  44. package/hosts/zcode/skills/_shared/references/stack-profiles.md +36 -0
  45. package/hosts/zcode/skills/_shared/scripts/document_quality.mjs +252 -0
  46. package/hosts/zcode/skills/atlas-backlog-generator/SKILL.md +93 -0
  47. package/hosts/zcode/skills/atlas-backlog-generator/agents/openai.yaml +4 -0
  48. package/hosts/zcode/skills/atlas-direct-execute/SKILL.md +221 -0
  49. package/hosts/zcode/skills/atlas-direct-execute/agents/openai.yaml +7 -0
  50. package/hosts/zcode/skills/atlas-findings-repair/SKILL.md +158 -0
  51. package/hosts/zcode/skills/atlas-findings-repair/agents/openai.yaml +7 -0
  52. package/hosts/zcode/skills/atlas-plan-execute/SKILL.md +175 -0
  53. package/hosts/zcode/skills/atlas-plan-execute/agents/openai.yaml +7 -0
  54. package/hosts/zcode/skills/atlas-plan-execute/references/plan-contract.md +88 -0
  55. package/hosts/zcode/skills/atlas-plan-execute/references/quality-gates.md +60 -0
  56. package/hosts/zcode/skills/atlas-plan-execute/scripts/check_budget_state.py +96 -0
  57. package/hosts/zcode/skills/atlas-plan-execute/scripts/extract_plan_contract.py +191 -0
  58. package/hosts/zcode/skills/atlas-plan-execute/scripts/validate_gate_result.py +56 -0
  59. package/hosts/zcode/skills/atlas-plan-handoff/SKILL.md +183 -0
  60. package/hosts/zcode/skills/atlas-plan-handoff/agents/openai.yaml +7 -0
  61. package/hosts/zcode/skills/atlas-prd-interview/SKILL.md +82 -0
  62. package/hosts/zcode/skills/atlas-prd-interview/agents/openai.yaml +7 -0
  63. package/hosts/zcode/skills/atlas-slice-review/SKILL.md +156 -0
  64. package/hosts/zcode/skills/atlas-slice-review/agents/openai.yaml +4 -0
  65. package/hosts/zcode/skills/atlas-slice-review/references/review-contract.md +58 -0
  66. package/hosts/zcode/skills/atlas-slice-review/references/scenario-lenses.md +57 -0
  67. package/hosts/zcode/skills/atlas-slice-review/scripts/classify_findings.mjs +60 -0
  68. package/hosts/zcode/skills/atlas-slice-review/scripts/classify_findings.py +24 -0
  69. package/hosts/zcode/skills/atlas-slice-review/scripts/extract_review_slice.py +158 -0
  70. package/hosts/zcode/skills/atlas-sprint-prd-generator/SKILL.md +77 -0
  71. package/hosts/zcode/skills/atlas-sprint-prd-generator/agents/openai.yaml +7 -0
  72. package/hosts/zcode/skills/atlas-task-validator/SKILL.md +173 -0
  73. package/hosts/zcode/skills/atlas-task-validator/agents/openai.yaml +7 -0
  74. package/hosts/zcode/skills/atlas-workflow-orchestrator/SKILL.md +391 -0
  75. package/package.json +1 -1
  76. package/plugins/atlas-workflow-orchestrator/.codex-plugin/plugin.json +1 -1
  77. package/plugins/atlas-workflow-orchestrator/VERSION +1 -1
  78. package/plugins/atlas-workflow-orchestrator/orchestrator/README.md +1 -1
  79. package/plugins/atlas-workflow-orchestrator/orchestrator/references/host-adapters.md +13 -12
  80. package/plugins/atlas-workflow-orchestrator/orchestrator/skills/atlas-workflow-orchestrator/SKILL.md +2 -0
  81. package/plugins/atlas-workflow-orchestrator/packages/mcp-server/README.md +1 -1
  82. package/plugins/atlas-workflow-orchestrator/packages/mcp-server/package.json +1 -1
  83. package/plugins/atlas-workflow-orchestrator/packages/mcp-server/server.js +69 -7
  84. package/plugins/atlas-workflow-orchestrator/skills/atlas-workflow-orchestrator/SKILL.md +2 -0
@@ -0,0 +1,93 @@
1
+ # Fronteira PRD × PLAN
2
+
3
+ Política documental para sprints e handoff de execução. Referência: exemplos em [PRD/GARANTIAFACIL/EXEMPLO/](../PRD/GARANTIAFACIL/EXEMPLO/).
4
+
5
+ ## Papéis
6
+
7
+ | Artefato | Dono mental | Pergunta que responde |
8
+ |----------|-------------|------------------------|
9
+ | **PRD** | Product Manager | O quê, por quê, para quem, o que não pode quebrar? |
10
+ | **PLAN** | Engenharia / executor | Como entregar no código, em que ordem, com que invariantes técnicos? |
11
+
12
+ ## PRD — o que entra (modelo enxuto de 6 seções + apêndice)
13
+
14
+ - **§1 Contexto e objetivo** — hoje, impacto de não fazer, objetivo, resultado observável, sucesso.
15
+ - **§2 Escopo** — em escopo / fora de escopo (sem "Não objetivos"; invariante vira §5).
16
+ - **§3 Decisões de produto (D\*)** — casa única; demais seções referenciam por `D-id`.
17
+ - **§4 Fluxos e cenários UX** — por cenário, com loading/vazio/erro.
18
+ - **§5 Contrato funcional e invariantes** — regras de dados + invariantes de negócio/segurança numa casa só.
19
+ - **§6 Critérios de aceite (negócio)** — checklist testável (Produto/UX/Dados/Regressão).
20
+ - **§7 Apêndice (opcional)** — riscos, dependências, referências, histórico.
21
+
22
+ > **Regra anti-repetição:** cada verdade tem uma casa; as demais seções referenciam por `§`/`D-id`, não re-enumeram.
23
+
24
+ ## PRD — o que NÃO entra
25
+
26
+ - Packages, camadas, clean architecture, GetX, nomes de classes/arquivos.
27
+ - `flutter analyze`, comandos de teste, paths do monorepo.
28
+ - Tabela “evidências” com dezenas de arquivos `.dart`.
29
+ - § “Impacto de arquitetura” — isso é PLAN.
30
+ - Repetir o conteúdo do PLAN.
31
+
32
+ **Teto orientativo:** ~120–150 linhas por sprint média (modelo enxuto).
33
+
34
+ ## PLAN — o que entra
35
+
36
+ - Link ao PRD + referência `PRD §3` (não recopiar tabela D* inteira).
37
+ - Tradução executiva (padrão de referência no monorepo + diffs vs módulo espelho).
38
+ - Invariantes de **execução** derivados do PRD.
39
+ - Pitfalls (anti-padrão → correto).
40
+ - Estado na **abertura da sprint** (3–6 bullets); se já implementado, checklist de verificação.
41
+ - **Tarefas T01…** no schema abaixo (detalhadas).
42
+ - Contratos técnicos só onde o PRD deixa ambiguidade.
43
+ - Validação única + checklist do validator.
44
+ - **Slices** (opcional) se `execution_mode: orchestrated-per-slice`.
45
+
46
+ ## PLAN — o que NÃO entra
47
+
48
+ - Handoff prompt no final (“leia o plano e execute…”).
49
+ - Gate de prontidão do autor do plano.
50
+ - Lista §3 com todas as rules do `project-rules` (o executor carrega AGENTS).
51
+ - Cópia integral do escopo/fora de escopo do PRD.
52
+ - Inventário global de todos os arquivos tocados (o executor descobre no repo).
53
+ - Duplicar três checklists idênticas.
54
+
55
+ **Teto orientativo:** ~250–350 linhas (M); até ~450 (L com slices).
56
+
57
+ ## Herança entre documentos
58
+
59
+ ```text
60
+ PRD §3 (D*) ──referência──► PLAN §2 invariantes + §1 diffs
61
+ PRD §4–6 ──referência──► PLAN §5 (done) + §8 checklist
62
+ PRD §5 ──funcional──► PLAN §6 contratos técnicos
63
+ ```
64
+
65
+ ## Schema de task (PLAN §5)
66
+
67
+ Cada `#### TNN.` deve ter, quando aplicável:
68
+
69
+ - **Objetivo**
70
+ - **Referência** (módulo/padrão no monorepo — não lista de 10 arquivos)
71
+ - **Pré-condições**
72
+ - **Mudança esperada**
73
+ - **Invariantes preservados** / **Não mudar** / **Não fazer**
74
+ - **Dependências**
75
+ - **Riscos** (se não óbvio)
76
+ - **Critério de done**
77
+ - **Validação local** (comando — na task de teste ou na final)
78
+ - **Quality gates** (opcional em tasks críticas)
79
+ - **Casos mínimos** (tasks de teste)
80
+
81
+ ## Templates
82
+
83
+ - [PRD_TEMPLATE.md](./PRD_TEMPLATE.md)
84
+ - [PLAN_TEMPLATE.md](./PLAN_TEMPLATE.md)
85
+ - [BACKLOG_MESTRE_TEMPLATE.md](./BACKLOG_MESTRE_TEMPLATE.md)
86
+
87
+ ## Pipeline
88
+
89
+ 1. PRD aprovado (produto).
90
+ 2. PLAN derivado do PRD + código (uma passagem de leitura no repo).
91
+ 3. Execução: `atlas-plan-execute` lê PLAN + PRD §4–6; `project-rules` via AGENTS.
92
+
93
+ Geradores (`atlas-backlog-generator`, `atlas-sprint-prd-generator`, `atlas-plan-handoff`) devem seguir estes templates, não o formato legado (14 seções, ou §X de arquitetura no PRD).
@@ -0,0 +1,139 @@
1
+ # Perguntas em aberto — {{NOME_DO_PROJETO}}
2
+
3
+ > **Função deste arquivo:** inventário do que ainda precisa de decisão sua (produto, operação, sequência), com foco no horizonte imediato do backlog.
4
+ > **O que NÃO vai aqui:** opções A/B/C, recomendações, raciocínio longo — isso nasce **na entrevista**, com backlog, código e docs relidos na hora (`*-open-questions-interview` ou pedido explícito de rodada).
5
+
6
+ ---
7
+
8
+ ## Como usar (dois modos)
9
+
10
+ | Modo | Quem | O que faz | Saída |
11
+ |------|------|-----------|--------|
12
+ | **Varredura** | Agente (ou você) | Cruza backlog mestre, recorte das próximas sprints, PRDs e planos quando existirem, código e contratos; abre/atualiza/fecha **entradas** no índice | Este arquivo (enxuto) |
13
+ | **Entrevista** | Você + agente | Escolhe **1–4 IDs** `aberta`; agente relê âncoras + repositório; pergunta com **AskQuestion** | Decisão no chat → linha no **Histórico** → PRD/backlog/DEC |
14
+
15
+ **Regra anti-desatualização:** antes de cada rodada de entrevista, o agente **revalida** as âncoras e o código dos IDs escolhidos. Se a evidência mudou, atualiza a lacuna no registro **antes** de perguntar.
16
+
17
+ **Formato de resposta na entrevista:** `Q-XXX → A` ou `Q-XXX → Outro: …`
18
+
19
+ **Legenda de severidade:** `❌` bloqueia handoff/implementação honesta · `⚠️` permite avançar com risco documentado
20
+
21
+ **Status:** `aberta` · `em entrevista` · `resolvida` · `adiada` · `obsoleta` (código/docs já fecharam o tema)
22
+
23
+ **Janela de análise:** sprint atual + próximos sprints do backlog, com máximo de 5 sprints no total.
24
+
25
+ ---
26
+
27
+ ## Meta
28
+
29
+ | Campo | Valor |
30
+ |-------|-------|
31
+ | **Última varredura** | YYYY-MM-DD |
32
+ | **Escopo da varredura** | ex.: backlog mestre §20, PRD HML-01 se existir, sprints S04–S08 |
33
+ | **Próxima rodada sugerida** | IDs: `Q-…`, `Q-…` (máx. 4 por sessão ~15 min) |
34
+
35
+ ---
36
+
37
+ ## Índice
38
+
39
+ <!-- Uma linha por decisão pendente. Manter ordenado por urgência ou fase. Preferir poucas perguntas fortes a volume. -->
40
+
41
+ | ID | Título curto | Severidade | Bloqueia | Status |
42
+ |----|--------------|------------|----------|--------|
43
+ | Q-XXX-01 | … | ❌ | … | `aberta` |
44
+
45
+ **Totais:** `aberta` __ · `em entrevista` __ · `adiada` __
46
+
47
+ ---
48
+
49
+ ## Entradas
50
+
51
+ <!-- Copie o bloco abaixo por item. Não incluir tabelas de opções nem "Recomendação". Serializar categoria no título, ex.: [contrato] Nome da decisão. -->
52
+
53
+ ### Q-XXX-01 — Título da decisão
54
+
55
+ | Campo | Valor |
56
+ |-------|-------|
57
+ | **Status** | `aberta` |
58
+ | **Severidade** | ❌ / ⚠️ |
59
+ | **Bloqueia** | sprint, PRD, gate, contrato — uma linha. Se útil, prefixar categoria secundária: `[sequencia] ...` |
60
+ | **Âncoras** | links relativos: backlog mestre, sprint, PRD se existir, DEC, plano, doc de produto, código ou contrato |
61
+ | **Lacuna** | O que falta decidir (2–4 frases). Sem listar alternativas. Descrever decisão pendente, não tarefa de implementação. |
62
+ | **Evidência (snapshot)** | Uma linha factual da última varredura (path, migration, status sprint, endpoint, env ou ausência verificável) |
63
+ | **Última verificação em entrevista** | _vazio até 1ª rodada_ |
64
+
65
+ **Decisão registrada:** _preencher só após entrevista_
66
+ **Propagado em:** _PRD §… / backlog DEC-… / outro_
67
+
68
+ ---
69
+
70
+ ### Q-XXX-02 — …
71
+
72
+ | Campo | Valor |
73
+ |-------|-------|
74
+ | **Status** | `aberta` |
75
+ | **Severidade** | ⚠️ |
76
+ | **Bloqueia** | … |
77
+ | **Âncoras** | … |
78
+ | **Lacuna** | … |
79
+ | **Evidência (snapshot)** | … |
80
+ | **Última verificação em entrevista** | |
81
+
82
+ **Decisão registrada:**
83
+ **Propagado em:**
84
+
85
+ ---
86
+
87
+ ## Histórico de resoluções
88
+
89
+ | Data | ID | Decisão (resumo) | Onde propagado |
90
+ |------|-----|------------------|----------------|
91
+ | | | | |
92
+
93
+ ---
94
+
95
+ ## Evidências da última varredura
96
+
97
+ <!-- Lista de paths consultados — sem narrativa longa. Atualizar a cada varredura. Registrar também ausências verificáveis relevantes. -->
98
+
99
+ - `…`
100
+ - `…`
101
+
102
+ ---
103
+
104
+ ## Protocolo do agente
105
+
106
+ ### Varredura (atualizar registro)
107
+
108
+ 1. Ler obrigatoriamente o backlog mestre e o recorte da janela atual; usar PRDs e planos apenas quando existirem.
109
+ 2. Limitar a análise ao sprint atual e aos próximos sprints, com máximo de 5 sprints no total.
110
+ 3. Revalidar código, contratos, migrations, envs ou ausências verificáveis antes de abrir pergunta material.
111
+ 4. Para cada lacuna nova: criar entrada com ID estável (`Q-<FASE>-<NN>` ou `Q-<SPRINT>-<NN>`).
112
+ 5. Antes de abrir pergunta, tentar invalidá-la: decisão já tomada, código já fechou o tema, falta apenas execução, ou a dúvida existe só porque não há PRD.
113
+ 6. Para cada lacuna fechada no código/docs: marcar `obsoleta` ou remover do índice e notar no Histórico.
114
+ 7. Atualizar **Meta**, **Índice**, **Evidências**; **não** escrever opções nem recomendações.
115
+
116
+ ### Entrevista (uma rodada)
117
+
118
+ 1. Usuário indica 1–4 IDs (ou aceita "próxima rodada sugerida").
119
+ 2. **PREP:** reler âncoras + grep/read nos paths relevantes; ajustar **Lacuna** / **Evidência** se mudou.
120
+ 3. **PERGUNTA:** `AskQuestion` (até 4 itens); em cada prompt: pergunta + impacto + opções + **recomendação ancorada na evidência lida agora** (skill `*-open-questions-interview`).
121
+ 4. Parar o turno (`⏸️ Aguardando respostas`).
122
+ 5. Após respostas: preencher **Decisão registrada**, status `resolvida`, linha no **Histórico**, pedir propagação explícita se necessário (backlog DEC, PRD §3, etc.).
123
+
124
+ ### O que é proibido neste arquivo
125
+
126
+ - Tabelas `| Opção |` ou blocos **Recomendação** / **Opção A/B/C** por pergunta
127
+ - Texto de entrevista já "respondido" no passado sem estar no Histórico
128
+ - Duplicar o conteúdo do PRD — só âncoras e lacuna
129
+ - Criar novos campos, colunas ou seções para categoria; use a serialização textual nos campos existentes
130
+
131
+ ---
132
+
133
+ ## Agrupamento opcional (âncoras de navegação)
134
+
135
+ <!-- Títulos `##` por fase/sprint/bloco; entradas `###` abaixo. O índice único continua sendo a fonte de IDs. -->
136
+
137
+ ## {{FASE_OU_BLOCO}} — …
138
+
139
+ _(entradas Q-… deste bloco)_
@@ -0,0 +1,146 @@
1
+ # PLAN <ID> — <Título> (execução)
2
+
3
+ | Campo | Valor |
4
+ |-------|-------|
5
+ | **PRD** | [PRD_<ID>_<slug>.md](./<caminho-relativo>) — decisões **PRD §3** (D*) |
6
+ | **Package / app** | `<packages/... \| apps/...>` |
7
+ | **Tipo** | `<feature \| ui \| navigation \| …>` |
8
+ | **execution_mode** | `<sequencial (T01→TN) \| orchestrated-per-slice>` |
9
+ | **Data** | <YYYY-MM-DD> |
10
+
11
+ **Escopo técnico:** PRD §2. **Fora:** <bullets derivados do PRD fora de escopo — não recopiar §2 inteiro>.
12
+
13
+ Política: [BOUNDARY_PRD_PLAN.md](./BOUNDARY_PRD_PLAN.md). Exemplos: [PRD/GARANTIAFACIL/EXEMPLO/](../PRD/GARANTIAFACIL/EXEMPLO/).
14
+
15
+ ---
16
+
17
+ ## 1. Tradução executiva
18
+
19
+ <O que será implementado em 1 parágrafo + resultado observável técnico.>
20
+
21
+ **Padrão de referência no monorepo:** <ex.: “espelhar módulo X em …”>
22
+
23
+ **Diferenças obrigatórias vs referência (não copiar cegamente)**
24
+
25
+ | Tema | Referência (rejeitar) | Esta entrega (PRD) |
26
+ |------|----------------------|-------------------|
27
+ | <…> | <…> | <D* ou regra> |
28
+
29
+ <Capacidades já existentes no código que esta slice só integra — ex.: use cases GF04 prontos.>
30
+
31
+ ---
32
+
33
+ ## 2. Invariantes de execução (derivados do PRD)
34
+
35
+ - <invariante técnico derivado de PRD §3/§5 — ex.: sem refetch ao filtrar>
36
+ - <…>
37
+
38
+ > Não recopiar a tabela de decisões do PRD; referenciar `PRD §3 D12`.
39
+
40
+ ---
41
+
42
+ ## 3. Pitfalls
43
+
44
+ - <anti-padrão comum no repo> → <correção>
45
+ - <…>
46
+
47
+ ---
48
+
49
+ ## 4. Estado na abertura da sprint (pré-implementação)
50
+
51
+ > Se a entrega **já estiver no código**, não reimplementar: usar como checklist de verificação (diff vs §7). O executor **lê o repo** e confirma o que falta.
52
+
53
+ - <3–6 bullets do que bloqueia hoje — comportamento ou ausência, não lista de 15 arquivos>
54
+
55
+ ---
56
+
57
+ ## 5. Tarefas de execução
58
+
59
+ <!-- Para execution_mode: orchestrated-per-slice, agrupar com ### Slice A — … -->
60
+
61
+ #### T01. <Título curto>
62
+
63
+ - **Objetivo:** <resultado observável>
64
+ - **Referência:** <módulo/padrão no monorepo — opcional>
65
+ - **Pré-condições:** <nenhuma \| T0X>
66
+ - **Mudança esperada:** <o que muda de forma concreta>
67
+ - **Invariantes preservados:** <§2 ou PRD>
68
+ - **Não mudar:** <…>
69
+ - **Não fazer:** <atalhos proibidos>
70
+ - **Dependências:** <nenhuma \| T0X>
71
+ - **Riscos:** <se relevante>
72
+ - **Critério de done:** <sinal objetivo>
73
+ - **Validação local:**
74
+ ```bash
75
+ cd <package-ou-repo> && <comando>
76
+ ```
77
+ - **Quality gates:** <opcional — itens verificáveis desta task>
78
+ - **Casos mínimos:** <somente em tasks de teste — lista numerada>
79
+
80
+ #### T02. <…>
81
+
82
+ <repetir até TNN>
83
+
84
+ #### TNN. Validação final
85
+
86
+ - **Objetivo:** analyze + test suite; regressão de entregas dependentes; aceite manual mínimo (PRD §6).
87
+ - **Dependências:** T01–T(N-1)
88
+ - **Critério de done:** zero issues; testes verdes
89
+ - **Validação local:**
90
+ ```bash
91
+ cd <package> && flutter analyze
92
+ cd <package> && flutter test
93
+ ```
94
+ - **Verificação manual (recomendada):**
95
+ 1. <passo alinhado ao PRD §4>
96
+ 2. <…>
97
+
98
+ ---
99
+
100
+ ## 6. Contratos técnicos (só ambiguidade PRD → código)
101
+
102
+ ### 6.1 <Domínio / persistência / API>
103
+
104
+ | <Camada> | Regra |
105
+ |----------|--------|
106
+ | <…> | <…> |
107
+
108
+ ### 6.2 <Falhas / estados / pipeline — se aplicável>
109
+
110
+ | <Code ou etapa> | <Comportamento na store/UI> |
111
+ |-----------------|----------------------------|
112
+
113
+ ---
114
+
115
+ ## 7. Slices (somente se `execution_mode: orchestrated-per-slice`)
116
+
117
+ | Slice | Tasks | Objetivo |
118
+ |-------|-------|----------|
119
+ | A | T01–T03 | <…> |
120
+ | B | T04–T05 | <…> |
121
+
122
+ Ordem: **A → B → …**. Validator: boundary do diff por slice + §2 e §7.
123
+
124
+ ---
125
+
126
+ ## 8. Validação e checklist (validator)
127
+
128
+ Referência **PRD §6** + invariantes **§2** deste plano.
129
+
130
+ ```bash
131
+ cd <package> && flutter analyze
132
+ cd <package> && flutter test
133
+ ```
134
+
135
+ - [ ] <critério derivado de PRD D* ou §10>
136
+ - [ ] <…>
137
+
138
+ ---
139
+
140
+ ## O que este template NÃO inclui (propositalmente)
141
+
142
+ - Handoff prompt final
143
+ - Gate de prontidão do planejador
144
+ - § “Regras carregadas” do `project-rules` (AGENTS carrega)
145
+ - Cópia da tabela D* do PRD
146
+ - Inventário global de arquivos tocados
@@ -0,0 +1,150 @@
1
+ # PRD: <Nome da feature / Sprint>
2
+
3
+ > **Documento de produto.** Comportamento e negócio — sem Dart, packages, paths ou comandos de CI.
4
+ >
5
+ > Comportamento **alvo** da entrega. Se a feature já estiver no app, use como contrato de aceite e regressão.
6
+ >
7
+ > Implementação: `PLAN_<ID>_<slug>.md` (gerado após PRD aprovado). Política: [BOUNDARY_PRD_PLAN.md](./BOUNDARY_PRD_PLAN.md).
8
+ >
9
+ > **Regra de ouro (anti-repetição):** cada verdade tem **uma casa**; as demais seções **referenciam** por `§`/`D-id` em vez de re-enumerar. Enxugar conteúdo nunca remove a demarcação (separadores, rótulos, subcabeçalhos).
10
+
11
+ | Campo | Valor |
12
+ |-------|-------|
13
+ | **Produto / App** | <GarantiaFácil \| Assina \| Atlas host \| …> |
14
+ | **Status** | <Draft \| Em decisão \| Aprovado para planejamento \| Aprovado para implementação \| Implementado \| Arquivado> |
15
+ | **Responsável** | <Papel ou nome> |
16
+ | **Data** | <YYYY-MM-DD> |
17
+ | **Dependências de negócio** | <Entregas anteriores necessárias — ex.: “dashboard com lista”> |
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> |
20
+
21
+ ### Metadados de execução
22
+
23
+ - Plan prefix: `<atlas>` · Planner: `<atlas-plan-handoff>` · Executor: `<atlas-plan-execute>`
24
+ - Internal validator: `<atlas-task-validator>` · External review: `<atlas-slice-review>` (optional)
25
+
26
+ ---
27
+
28
+ ## 1. Contexto e objetivo
29
+
30
+ **Hoje:** <comportamento atual em linguagem de usuário/negócio>
31
+
32
+ **Se não entregar:** <impacto de não fazer>
33
+
34
+ **Objetivo principal:** <uma frase>
35
+
36
+ **Resultado observável**
37
+
38
+ - <bullet observável pelo usuário ou operação — referencie D* em vez de re-enumerar entregáveis>
39
+
40
+ **Sucesso (negócio):** <como saber que valeu — sem métrica técnica de CI>
41
+
42
+ ---
43
+
44
+ ## 2. Escopo
45
+
46
+ ### Em escopo
47
+
48
+ - <capacidades fechadas, em linguagem de produto — referencie o conjunto de §3 D* quando aplicável>
49
+
50
+ ### Fora de escopo
51
+
52
+ - <adjacentes tentadores que NÃO entram nesta entrega — previne scope creep>
53
+ - <anti-goal oportunista ("não aproveitar para fazer X"); invariante que é regra de negócio vai para §5, não aqui>
54
+
55
+ ---
56
+
57
+ ## 3. Decisões de produto (fechadas)
58
+
59
+ > Casa única das decisões. As demais seções referenciam por `D-id`, não recopiam.
60
+
61
+ | ID | Decisão |
62
+ |----|---------|
63
+ | D1 | <decisão fechada — produto, não implementação. É a SSoT do que esta sprint entrega> |
64
+ | D2 | <…> |
65
+
66
+ > Motivo/impacto: só quando a decisão não for óbvia; senão omitir.
67
+
68
+ ---
69
+
70
+ ## 4. Fluxos e cenários UX
71
+
72
+ > Quando vários cenários compartilham comportamento, declare uma vez e referencie.
73
+
74
+ ### 4.1 <Cenário A — ex.: criar / carregar>
75
+
76
+ - **Entrada:** <de onde o usuário vem>
77
+ - **Comportamento:** <passo a passo; loading / vazio / erro>
78
+ - **Sucesso:** <o que o usuário vê>
79
+
80
+ ### 4.2 <Cenário B — ex.: editar / dados insuficientes>
81
+
82
+ <mesma estrutura>
83
+
84
+ ### 4.N <Cenários de borda — ex.: acesso inválido, limite de plano, falha de leitura>
85
+
86
+ - <…>
87
+
88
+ ---
89
+
90
+ ## 5. Contrato funcional e invariantes
91
+
92
+ > Casa única de **dados + regras/segurança de negócio**. §4 e §6 referenciam, não repetem.
93
+
94
+ | Conceito | Regra para o usuário / sistema |
95
+ |----------|--------------------------------|
96
+ | <campo ou regra> | <validação, formato, default, persistência em termos de negócio> |
97
+
98
+ > Ex.: “valor em reais na digitação; gravado em centavos inteiros” — não nome de tipo Dart.
99
+
100
+ **Invariantes (negócio/segurança)**
101
+
102
+ - <regra que não pode ser violada; erros em linguagem de produto, sem códigos técnicos ou stack ao usuário>
103
+
104
+ ---
105
+
106
+ ## 6. Critérios de aceite (negócio)
107
+
108
+ **Produto**
109
+
110
+ - [ ] <observável>
111
+
112
+ **UX**
113
+
114
+ - [ ] <observável — espelhar §4, inclusive erros e loading>
115
+
116
+ **Dados**
117
+
118
+ - [ ] <integridade observável — referencie §5/D* em vez de re-derivar fontes>
119
+
120
+ **Regressão de produto**
121
+
122
+ - [ ] <o que já funcionava e deve continuar>
123
+
124
+ ---
125
+
126
+ ## 7. Apêndice (opcional)
127
+
128
+ > Metadados leves. Omitir blocos que não agregam nesta entrega.
129
+
130
+ **Riscos**
131
+
132
+ | Risco | Mitigação |
133
+ |-------|-----------|
134
+ | <expectativa errada do usuário> | <copy, escopo, aceite — referencie D*/§ quando couber> |
135
+
136
+ **Dependências:** <ID entrega — por que bloqueia ou alimenta> · <decisão externa, se houver>
137
+
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>
139
+
140
+ **Histórico:** <YYYY-MM-DD — evento>
141
+
142
+ ---
143
+
144
+ ## Checklist do autor (não publicar no PRD final — opcional)
145
+
146
+ - [ ] Nenhum package, classe, rota ou migration neste arquivo
147
+ - [ ] Cada verdade tem UMA casa; demais seções referenciam por §/D-id (sem re-enumerar)
148
+ - [ ] Todo critério de §6 tem correspondência em §4 (UX) ou §5 (dados)
149
+ - [ ] "Fora de escopo" nomeia os adjacentes tentadores, não o complemento infinito
150
+ - [ ] Demarcação preservada: `---`, `**Label:**`, `### N.x`, headers de tabela, grupos de aceite
@@ -0,0 +1,56 @@
1
+ # State File Schema
2
+
3
+ Boundary canônico executor → validator.
4
+
5
+ Path:
6
+
7
+ ```text
8
+ .atlas/state/<run_id>/<slice>.json
9
+ ```
10
+
11
+ Schema legado mínimo (reader compatível):
12
+
13
+ ```json
14
+ {
15
+ "run_id": "string (uuid ou slug)",
16
+ "slice": "string (ex.: 'A', 'B', 'C')",
17
+ "tasks": ["T01", "T02"],
18
+ "files_changed": ["packages/foo.js"],
19
+ "diff_stat": "N files, +X -Y",
20
+ "plan_path": ".atlas/plans/<id>.plan.md",
21
+ "boundary_refs": ["§2.I3", "§5.T11"],
22
+ "executed_at": "ISO8601",
23
+ "executor_skill": "atlas-plan-execute"
24
+ }
25
+ ```
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
+
46
+ Regras:
47
+
48
+ - `run_id`, `slice`, `tasks`, `files_changed`, `diff_stat`, `plan_path`, `boundary_refs`, `executed_at` e `executor_skill` são obrigatórios.
49
+ - `files_changed` contém paths relativos ao repositório consumidor.
50
+ - `boundary_refs` aponta para invariantes, contratos ou tasks do plano que delimitam a validação.
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`.
@@ -0,0 +1,36 @@
1
+ # Baseline universal e perfis de stack
2
+
3
+ Ativação é determinística: inspecione manifests no boundary e comandos realmente declarados no repo/plano. Use `detectStackProfiles(project_root, declared_commands, boundary_paths)`; consuma o array `boundaries` e não deduza stack por extensão isolada.
4
+
5
+ ## Baseline universal — sempre ativo
6
+
7
+ - segurança, autenticação/autorização e dados sensíveis;
8
+ - boundary real, contratos, schemas e consumidores afetados;
9
+ - erros, falhas parciais, concorrência, idempotência e reentrada;
10
+ - setup/cleanup, recursos, estado stale e persistência;
11
+ - integridade de dados, nulos, enums, validação de input;
12
+ - checks declarados pelo repo/plano, sem inventar ferramenta.
13
+
14
+ ## Flutter/Dart — `pubspec.yaml` ou comando `flutter`/`dart`
15
+
16
+ - lifecycle de Widget/Controller/Store, dispose/reset e async stale;
17
+ - rotas literais antes de parametrizadas quando o roteador exigir;
18
+ - args obrigatórios, null-safety, casts defensivos, coleções `?? []`;
19
+ - l10n em todos os locales e geração limpa;
20
+ - `flutter analyze`/`flutter test` somente quando declarados/aplicáveis;
21
+ - GetX apenas quando dependência/import/regras reais do repo confirmarem GetX.
22
+
23
+ ## Node/TypeScript — `package.json`, `tsconfig.json` ou comando Node real
24
+
25
+ - lifecycle de processos/handles, abort/cleanup e promises rejeitadas;
26
+ - validação runtime nas fronteiras JSON/HTTP/MCP;
27
+ - ESM/CJS, exports, tipos e scripts realmente declarados;
28
+ - `node --test`, test runner, lint/typecheck apenas se presentes no repo/plano.
29
+
30
+ ## Python — `pyproject.toml`, `requirements.txt`, `setup.py` ou comando Python real
31
+
32
+ - context managers, cleanup, exceções e async/cancelamento;
33
+ - parsing/typing nas fronteiras e mutabilidade de defaults;
34
+ - `pytest`, `ruff`, `mypy` ou equivalente apenas se declarados.
35
+
36
+ Perfis podem coexistir em monorepo. Regra de perfil nunca vira finding fora do boundary onde seu sinal foi ativado.