stealthos-cli 0.1.0-alpha.2 → 0.1.0-alpha.4

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 (178) hide show
  1. package/ai/CONTRACT.md +110 -0
  2. package/ai/INDEX.md +203 -0
  3. package/ai/README.md +434 -0
  4. package/ai/ROUTER.md +288 -0
  5. package/ai/agents/README.md +103 -0
  6. package/ai/agents/architect.md +59 -0
  7. package/ai/agents/backend-engineer.md +62 -0
  8. package/ai/agents/founder.md +45 -0
  9. package/ai/agents/frontend-engineer.md +61 -0
  10. package/ai/agents/product-manager.md +56 -0
  11. package/ai/agents/qa-engineer.md +53 -0
  12. package/ai/agents/researcher.md +74 -0
  13. package/ai/agents/reviewer.md +73 -0
  14. package/ai/agents/security-engineer.md +59 -0
  15. package/ai/agents/sre-engineer.md +70 -0
  16. package/ai/agents/tech-lead.md +70 -0
  17. package/ai/architecture/README.md +35 -0
  18. package/ai/architecture/components.md +24 -0
  19. package/ai/architecture/containers.md +30 -0
  20. package/ai/architecture/event-flows.md +36 -0
  21. package/ai/architecture/sequence-diagrams.md +38 -0
  22. package/ai/architecture/system-context.md +46 -0
  23. package/ai/architecture/threat-modeling.md +40 -0
  24. package/ai/blueprints/README.md +67 -0
  25. package/ai/blueprints/_schema.json +40 -0
  26. package/ai/blueprints/ai-platform.json +28 -0
  27. package/ai/blueprints/crm.json +22 -0
  28. package/ai/blueprints/game.json +25 -0
  29. package/ai/blueprints/mobile.json +24 -0
  30. package/ai/blueprints/realtime.json +22 -0
  31. package/ai/blueprints/saas.json +25 -0
  32. package/ai/blueprints/telemetry.json +30 -0
  33. package/ai/blueprints/web.json +23 -0
  34. package/ai/bootstrap/discovery-questions.md +117 -0
  35. package/ai/bootstrap/dispatcher.md +85 -0
  36. package/ai/bootstrap/existing-project.md +191 -0
  37. package/ai/bootstrap/new-project.md +127 -0
  38. package/ai/bootstrap/tech-mapping.md +164 -0
  39. package/ai/clients/README.md +114 -0
  40. package/ai/clients/antigravity.md +125 -0
  41. package/ai/clients/claude-code.md +65 -0
  42. package/ai/clients/cline.md +69 -0
  43. package/ai/clients/codex-aider-cli.md +82 -0
  44. package/ai/clients/continue.md +67 -0
  45. package/ai/clients/copilot.md +49 -0
  46. package/ai/clients/cursor.md +81 -0
  47. package/ai/clients/snippets/mcp-absolute-paths.json +9 -0
  48. package/ai/clients/snippets/mcp-http.json +7 -0
  49. package/ai/clients/snippets/mcp-stdio.json +9 -0
  50. package/ai/clients/trae.md +69 -0
  51. package/ai/clients/windsurf.md +71 -0
  52. package/ai/core/pipeline/execution-engine.md +157 -0
  53. package/ai/engineering/README.md +32 -0
  54. package/ai/engineering/observability/incident-response.md +82 -0
  55. package/ai/evals/protocol-tests.md +150 -0
  56. package/ai/evolution/agent-evolution.md +161 -0
  57. package/ai/evolution/improvements.md +91 -0
  58. package/ai/evolution/learnings.md +49 -0
  59. package/ai/evolution/patterns-discovered.md +48 -0
  60. package/ai/execution/README.md +33 -0
  61. package/ai/execution/backlog.md +27 -0
  62. package/ai/execution/milestones.md +26 -0
  63. package/ai/execution/roadmap.md +30 -0
  64. package/ai/execution/sprint.md +42 -0
  65. package/ai/governance/README.md +34 -0
  66. package/ai/governance/architecture-principles.md +99 -0
  67. package/ai/governance/definition-of-done.md +88 -0
  68. package/ai/governance/definition-of-ready.md +69 -0
  69. package/ai/governance/engineering-principles.md +70 -0
  70. package/ai/governance/quality-gates.md +85 -0
  71. package/ai/governance/security-policies.md +84 -0
  72. package/ai/hooks/enforce-audit.ps1 +41 -0
  73. package/ai/hooks/enforce-audit.sh +39 -0
  74. package/ai/hooks/guard-edit.ps1 +182 -0
  75. package/ai/hooks/guard-edit.sh +161 -0
  76. package/ai/hooks/inject-os-reminder.ps1 +40 -0
  77. package/ai/hooks/inject-os-reminder.sh +16 -0
  78. package/ai/manifest.json +238 -0
  79. package/ai/memory/_detected-stack.json +33 -0
  80. package/ai/memory/_summary.md +49 -0
  81. package/ai/memory/archive/.gitkeep +3 -0
  82. package/ai/memory/completed-tasks.md +156 -0
  83. package/ai/memory/decisions.md +257 -0
  84. package/ai/memory/errors-and-solutions.md +41 -0
  85. package/ai/memory/known-issues.md +40 -0
  86. package/ai/memory/pending-tasks.md +37 -0
  87. package/ai/memory/project-context.md +67 -0
  88. package/ai/operating-system/architecture.md +54 -0
  89. package/ai/operating-system/coding-standards.md +84 -0
  90. package/ai/operating-system/folder-structure.md +126 -0
  91. package/ai/operating-system/performance-rules.md +86 -0
  92. package/ai/operating-system/quality-control.md +81 -0
  93. package/ai/operating-system/security-rules.md +91 -0
  94. package/ai/operating-system/workflow.md +86 -0
  95. package/ai/product/README.md +24 -0
  96. package/ai/product/business-rules.md +26 -0
  97. package/ai/product/personas.md +29 -0
  98. package/ai/product/user-journeys.md +30 -0
  99. package/ai/product/vision.md +35 -0
  100. package/ai/rules/behavior.md +45 -0
  101. package/ai/rules/do.md +47 -0
  102. package/ai/rules/dont.md +46 -0
  103. package/ai/rules/execution-flow.md +125 -0
  104. package/ai/rules/structural-constraints.md +59 -0
  105. package/ai/rules/structure-canon.md +116 -0
  106. package/ai/runtime.md +179 -0
  107. package/ai/scripts/detect-stack.ps1 +166 -0
  108. package/ai/scripts/detect-stack.sh +172 -0
  109. package/ai/scripts/init-ai-os.ps1 +170 -0
  110. package/ai/scripts/init-ai-os.sh +99 -0
  111. package/ai/scripts/lint-os.ps1 +99 -0
  112. package/ai/scripts/lint-os.sh +85 -0
  113. package/ai/scripts/start-os.ps1 +151 -0
  114. package/ai/scripts/start-os.sh +141 -0
  115. package/ai/server/README.md +105 -0
  116. package/ai/server/aios-server.mjs +2134 -0
  117. package/ai/server/package-lock.json +802 -0
  118. package/ai/server/package.json +31 -0
  119. package/ai/server/src/analyzer/graph-builder.ts +92 -0
  120. package/ai/server/src/analyzer/index.ts +191 -0
  121. package/ai/server/src/analyzer/module-mapper.ts +171 -0
  122. package/ai/server/src/analyzer/smell-detector.ts +54 -0
  123. package/ai/server/src/analyzer/stack-detector.ts +70 -0
  124. package/ai/server/src/index.ts +16 -0
  125. package/ai/server/src/packager/context-builder.ts +217 -0
  126. package/ai/server/src/packager/index.ts +3 -0
  127. package/ai/server/src/packager/memory-injector.ts +128 -0
  128. package/ai/server/src/packager/module-summarizer.ts +60 -0
  129. package/ai/server/src/packager/token-estimator.ts +26 -0
  130. package/ai/server/src/snapshot/index.ts +3 -0
  131. package/ai/server/src/snapshot/snapshot-creator.ts +206 -0
  132. package/ai/server/src/snapshot/snapshot-diff.ts +86 -0
  133. package/ai/server/src/snapshot/snapshot-restore.ts +14 -0
  134. package/ai/server/src/types.ts +94 -0
  135. package/ai/server/tsconfig.json +26 -0
  136. package/ai/skills/architecture-design.md +82 -0
  137. package/ai/skills/backend-engineering.md +57 -0
  138. package/ai/skills/database-design.md +76 -0
  139. package/ai/skills/frontend-engineering.md +63 -0
  140. package/ai/skills/performance.md +73 -0
  141. package/ai/skills/scalability.md +84 -0
  142. package/ai/skills/security.md +71 -0
  143. package/ai/skills/testing.md +77 -0
  144. package/ai/specs/ADR/ADR-0002-typescript-runtime.md +103 -0
  145. package/ai/specs/ADR/ADR-0004-runtime-orchestrator.md +94 -0
  146. package/ai/specs/ADR/ADR-0005-workflow-engine.md +105 -0
  147. package/ai/specs/ADR/ADR-0006-runtime-state.md +104 -0
  148. package/ai/specs/ADR/ADR-0007-state-compiler-drift-context-layers-artifact-index.md +82 -0
  149. package/ai/specs/ADR/ADR-0008-intent-runtime-discovery-branching.md +93 -0
  150. package/ai/specs/ADR/ADR-0009-confidence-system-maturity-tracking.md +113 -0
  151. package/ai/specs/ADR/ADR-0010-structural-architecture-standards.md +121 -0
  152. package/ai/specs/ADR/ADR-0011-mcp-prompts.md +86 -0
  153. package/ai/specs/ADR/ADR-0012-stealthos-hybrid-architecture.md +174 -0
  154. package/ai/specs/ADR/_TEMPLATE.md +60 -0
  155. package/ai/specs/BRD/_TEMPLATE.md +50 -0
  156. package/ai/specs/PRD/_TEMPLATE.md +72 -0
  157. package/ai/specs/README.md +43 -0
  158. package/ai/specs/RFC/RFC-0001-runtime-orchestrator.md +149 -0
  159. package/ai/specs/RFC/RFC-0002-runtime-orchestrator-extended.md +134 -0
  160. package/ai/specs/RFC/_TEMPLATE.md +61 -0
  161. package/ai/specs/RUNBOOKS/_TEMPLATE.md +68 -0
  162. package/ai/specs/SDD/_TEMPLATE.md +104 -0
  163. package/ai/specs/TASKS/_TEMPLATE.md +52 -0
  164. package/ai/tools/debugging.md +64 -0
  165. package/ai/tools/dependency-analysis.md +46 -0
  166. package/ai/tools/internet-research.md +42 -0
  167. package/ai/tools/mcp-discovery.md +44 -0
  168. package/ai/workflows/_schema.json +81 -0
  169. package/ai/workflows/init.json +148 -0
  170. package/ai/workflows/sync.json +71 -0
  171. package/ai/workflows/work.json +91 -0
  172. package/bin.cjs +7 -0
  173. package/package.json +9 -3
  174. package/scripts/bundle-ai.mjs +58 -0
  175. package/src/cli.mjs +1 -1
  176. package/src/commands/install.mjs +35 -11
  177. package/src/lib/resolve-source.mjs +27 -10
  178. package/stealthos +0 -2
@@ -0,0 +1,257 @@
1
+ ---
2
+ version: 1.0.0
3
+ updated: 2026-05-14
4
+ tier: conditional
5
+ tokens: ~varies
6
+ load: architecture, design_decision
7
+ mutable: append_only
8
+ triggers: arquitetura, decisão, adr, escolher entre, trade-off
9
+ ---
10
+
11
+ # Architecture Decision Records (ADRs)
12
+
13
+ > Registro persistente de decisões arquiteturais. Cada ADR captura contexto, decisão, consequências e alternativas.
14
+
15
+ ## Formato
16
+
17
+ ```
18
+ ## ADR-NNNN — Título
19
+ - Data: AAAA-MM-DD
20
+ - Status: Proposto | Aceito | Substituído por ADR-NNNN | Deprecated
21
+ - Decisor: usuário, agente, time
22
+
23
+ ### Contexto
24
+ O que motivou a decisão. Restrições, requisitos, problema.
25
+
26
+ ### Decisão
27
+ O que foi decidido, de forma clara e acionável.
28
+
29
+ ### Consequências
30
+ - Positivas: ...
31
+ - Negativas / trade-offs aceitos: ...
32
+ - Neutras: ...
33
+
34
+ ### Alternativas consideradas
35
+ 1. Alternativa X — descartada porque Y
36
+ 2. Alternativa Z — descartada porque W
37
+
38
+ ### Referências
39
+ Links, PRs, issues, fontes externas.
40
+ ```
41
+
42
+ ## Regras
43
+
44
+ 1. **Numeração sequencial.** ADR-0001, ADR-0002, ... — nunca reutilizar número.
45
+ 2. **Imutabilidade.** ADR aceito não se edita; cria-se novo ADR com status "Substituído por".
46
+ 3. **Linkagem.** Sempre referenciar ADRs relacionados.
47
+ 4. **Granularidade.** Uma decisão = um ADR. Não agrupar.
48
+
49
+ ## Quando criar ADR
50
+
51
+ - Escolha de framework, biblioteca, banco, infraestrutura.
52
+ - Padrão arquitetural (camadas, microserviços, eventos).
53
+ - Política de segurança, performance, compliance.
54
+ - Decisão controversa que provavelmente será questionada depois.
55
+
56
+ ## Quando NÃO criar ADR
57
+
58
+ - Mudança trivial de implementação.
59
+ - Convenção de código (vai para `operating-system/coding-standards.md`).
60
+ - Bug fix (vai para `errors-and-solutions.md`).
61
+
62
+ ## Entradas
63
+
64
+ <!-- adicionar abaixo a partir de ADR-0004 -->
65
+
66
+ ## ADR-0012 — StealthOS Hybrid Architecture (daemon global + projeto leve)
67
+ - Data: 2026-05-16
68
+ - Status: Aceito
69
+ - Decisor: usuário (visão de produto "StealthOS não interfere no projeto") + agente
70
+ - Contexto: `.ai/` despeja ~50 arquivos no projeto-alvo; viaja no git; difícil atualizar OS. Visão StealthOS exige isolamento.
71
+ - Decisão: Modelo C híbrido — daemon em `~/.stealthos/` (server + manual + templates + projects/<hash>/), projeto recebe só `.stealthos.yml` + stubs IDE selecionados. Project hash = `sha256(absolute_path).slice(0,12)`. Server v1.2 introduz `STEALTHOS_MODE=embedded|hybrid`.
72
+ - Consequência: projeto-alvo de 14 → 3-9 itens; update do OS atinge todos projetos; state não viaja no git. Implementação faseada — scaffolder primeiro (modo embedded), server multi-tenant depois (modo hybrid), v2.0 default hybrid.
73
+ - Referências: `.ai/specs/ADR/ADR-0012-stealthos-hybrid-architecture.md`, ADR-0011 (MCP Prompts é ortogonal — funciona em ambos modos).
74
+
75
+ ## ADR-0011 — MCP Prompts como discovery mechanism cross-IDE
76
+ - Data: 2026-05-16
77
+ - Status: Aceito
78
+ - Decisor: usuário + agente
79
+ - Contexto: `/init`/`/sync`/`/work` só funcionavam no Claude Code (mecanismo proprietário). Outras IDEs (Antigravity, Cursor, etc.) tratavam slash como texto literal.
80
+ - Decisão: expor os 3 workflows como MCP Prompts (primitivo do protocolo 2024-11-05). Híbrido: prompt retorna instrução pra LLM chamar `aios_run_workflow` + contexto enriquecido (state.identity, ROUTER hint).
81
+ - Consequência: IDEs MCP-aware (Claude Code, Cursor recente) expõem `/init`/`/sync`/`/work` nativamente só conectando o MCP. 36 tools intactas (zero regressão). Server bump 1.0.0 → 1.1.0.
82
+ - Referências: `.ai/specs/ADR/ADR-0011-mcp-prompts.md`.
83
+
84
+ ## ADR-0003 — v4.0.0: AI-DOS completo (Context Engine + Multi-agent + Spec-Driven + Pipeline com gates)
85
+ - Data: 2026-05-15
86
+ - Status: Aceito
87
+ - Decisor: usuário (pedido explícito por "AI Development Operating System" maduro, equivalente ao processo de empresas grandes) + agente
88
+
89
+ ### Contexto
90
+ O framework v3.4.0 cobria regras, skills, memória histórica e bootstrap com mapa técnico — suficiente para um projeto solo "vibe coding++". Mas o usuário identificou (corretamente) o teto desse modelo:
91
+ - Sem **agentes especializados**, o agente principal vira "faz-tudo" e perde fronteiras.
92
+ - Sem **specs canônicos** (PRD, SDD, RFC, BRD, Runbook), código nasce sem alinhamento.
93
+ - Sem **context engine separado da memória**, contradições antigas contaminam decisões novas.
94
+ - Sem **pipeline com gates explícitos**, qualquer task pula direto para implementação ("vibe coding").
95
+ - Sem **governance** (princípios, DoR/DoD, security/architecture policies), decisões dependem do humor da sessão.
96
+
97
+ O alvo é uma **empresa-de-uma-pessoa** onde o Founder direciona e agentes especializados executam, com qualidade equivalente ao processo de empresas maduras.
98
+
99
+ ### Decisão
100
+ Promover o framework para **v4.0.0 — AI Development Operating System (AI-DOS)** com 6 camadas novas, mantendo backward-compatibility:
101
+
102
+ 1. **`governance/`** — Princípios inegociáveis (engineering-principles, architecture-principles, security-policies, DoR, DoD, quality-gates).
103
+ 2. **`agents/`** — 10 agentes especializados (founder, product-manager, architect, tech-lead, backend-engineer, frontend-engineer, qa-engineer, security-engineer, sre-engineer, reviewer, researcher) com contratos de I/O claros.
104
+ 3. **`specs/`** — Templates canônicos (PRD, SDD, RFC, BRD, ADR, RUNBOOKS, TASKS) numerados, com ciclo de vida draft → review → approved → deprecated/superseded.
105
+ 4. **`context/`** — Context Engine vivo separado da memória histórica: project-state, business-context, technical-context, architecture-state, active-goals, constraints, assumptions, glossary, roadmap, technical-debt.
106
+ 5. **`core/pipeline/execution-engine.md`** — Pipeline canônico IDEIA → DISCOVERY → PRD (G2) → ARCH (G3) → SDD/ADR → TASKS (G4) → IMPL (G5) → TEST (G6) → REVIEW (G7) → DEPLOY (G8) → OBSERVABILIDADE (G9) → APRENDIZADO (G10).
107
+ 6. **`product/`, `architecture/`, `engineering/`, `execution/`** — Pastas-irmãs com README + templates específicos por área.
108
+
109
+ ### Consequências
110
+ - **Positivas**:
111
+ - Pipeline explícito acaba com "vibe coding" — não há atalho de IDEIA→IMPL.
112
+ - Cada agente é guardião de uma fronteira (Architect não implementa, Backend não muda arquitetura, etc.).
113
+ - Specs templates impedem que feature comece sem PRD/SDD.
114
+ - Context Engine separa "agora" de "histórico" — reduz contradição e custo de tokens.
115
+ - Governance materializa princípios que antes eram orais.
116
+ - Founder pode delegar com confiança porque os contratos de I/O são explícitos.
117
+ - **Negativas / trade-offs aceitos**:
118
+ - Carga inicial maior: o `.ai/` cresceu de 69 para 137+ required files. Mitigação: CORE continua ~3k tokens; resto é CONDITIONAL/ON-DEMAND via ROUTER.
119
+ - Curva de adoção: agente principal precisa aprender a invocar agentes especializados e referenciar specs em vez de improvisar.
120
+ - Risco de **burocracia excessiva** em projetos pequenos. Mitigação: pipeline tem "modos" (Full, Express, Refactor, Spike, Config) — bug fix P0 skipa gates G1-G4.
121
+ - **Neutras**:
122
+ - Compatibilidade preservada: regras antigas (`rules/`, `operating-system/`, `skills/`, `memory/`, `evolution/`, `tools/`, `runtime.md`) seguem ativas.
123
+
124
+ ### Alternativas consideradas
125
+ 1. **Manter v3.4.0 e só adicionar `specs/` e `agents/`** — descartado: sem `governance/` e `context/`, agentes não têm fronteira nem contexto vivo. Solução parcial.
126
+ 2. **Reescrever do zero como `.aios/` paralelo** — descartado: perde histórico, ADRs, learnings acumulados.
127
+ 3. **Adotar framework externo (LangGraph, CrewAI, AutoGen)** — descartado: cada um carrega filosofia própria e cria dependência de runtime. O AI-DOS é **markdown puro + hooks leves**, plug-and-play em qualquer cliente.
128
+
129
+ ### Plano de migração
130
+ - v4.0.0 entra ao lado da estrutura existente — nenhuma pasta antiga removida.
131
+ - ROUTER ganha novas rotas (pipeline, governance, agents, specs, context, product, incident) sem remover as antigas.
132
+ - INDEX referencia as novas pastas.
133
+ - Manifest passa de 69 para 67+novas required_files (alguns templates `_TEMPLATE.md` viram required).
134
+ - Strak recebe a estrutura via sync (preservando seu próprio `memory/`, `decisions/`, `pending-tasks/`).
135
+
136
+ ### Referências
137
+ - Pedido do usuário (sessão de 2026-05-14/15) que descreveu a evolução para Spec-Driven Development, Context Engineering e multi-agent.
138
+ - Modelos de referência: C4 Model (Brown), 12-factor app, SRE Book (Google), Architecture Decision Records (Nygard), Software Engineering at Google (Winters et al.).
139
+
140
+ ## ADR-0002 — Tech-mapping obrigatório no bootstrap (organização por especificação técnica)
141
+ - Data: 2026-05-14
142
+ - Status: Aceito
143
+ - Decisor: usuário (pedido direto: "no bootstrap deve haver processo de analisar e organizar tudo por especificações técnicas") + agente
144
+
145
+ ### Contexto
146
+ O bootstrap original (`new-project.md` e `existing-project.md`) gerava `memory/project-context.md` e ADR-0001, mas deixava `operating-system/architecture.md` opcional/livre. Resultado observado em campo: ao instalar o `.ai/` num projeto real (Strak), o agente teve que inventar uma organização técnica sob pressão e ficou raso. Sem mapa explícito por especificação técnica (Frontend, Backend, BD, Infra, Integrações, Tools, APIs, MCPs, Dados), o agente perde tempo redescobrindo o shape do projeto a cada sessão e induz novos colaboradores ao mesmo retrabalho.
147
+
148
+ ### Decisão
149
+ 1. **Criar protocolo dedicado** em [`.ai/bootstrap/tech-mapping.md`](../bootstrap/tech-mapping.md) com:
150
+ - Catálogo de 11 especificações de alto nível (Frontend, Backend, BD, Infra/Deploy, Integrações Externas, Tools/Scripts, APIs, MCPs, Dados/Samples, Mobile/Desktop/Game, ML/Pipelines).
151
+ - Regra de descoberta de subespecificações (via `Glob`/`Read`, não invenção).
152
+ - Template canônico de `operating-system/architecture.md` numerado por especificação (com seção "10. Pendências de Mapeamento" cap 10 itens).
153
+ - Checklist do agente ao gerar.
154
+ 2. **Tornar obrigatório** chamar este protocolo em ambos os fluxos:
155
+ - `bootstrap/existing-project.md` — passo 5 do TL;DR e passo 5 do "Popular Memória" exigem aplicar `tech-mapping.md`.
156
+ - `bootstrap/new-project.md` — passo 3 do "Após Confirmação" exige aplicar `tech-mapping.md`; checklist final de "bootstrap completo" inclui linha "architecture.md populado via tech-mapping".
157
+ 3. **Promover folder-structure.md** para diferenciar duas camadas:
158
+ - **Macro** = organização por especificação técnica (Frontend/Backend/Infra...) — referência ao `tech-mapping.md`.
159
+ - **Micro** = organização interna por feature/domínio (regras pré-existentes).
160
+ 4. **Registrar a nova rota** no `ROUTER.md`: trigger "mapa técnico / tech-mapping / organizar projeto / especifica" → carrega `tech-mapping.md` + `architecture.md` + `folder-structure.md`.
161
+ 5. **Manifesto** (`manifest.json`): `tech-mapping.md` adicionado a `required_files`.
162
+ 6. **INDEX**: listar `tech-mapping.md` na seção Bootstrap.
163
+
164
+ ### Consequências
165
+ - **Positivas**:
166
+ - Sempre que um projeto adota o `.ai/`, sai com **mapa técnico explícito por especificação**. Onboarding (humano ou agente) cai radicalmente.
167
+ - Reduz alucinação: o agente consulta `architecture.md` antes de propor mudança de módulo/integração.
168
+ - Padronização cross-project: todo `architecture.md` tem o mesmo esqueleto numerado.
169
+ - Pendências viram trabalho concreto (seção 10), não buraco invisível.
170
+ - **Negativas / trade-offs aceitos**:
171
+ - Primeiro bootstrap em projeto existente fica mais longo (~10-30 min a mais para inventariar). Aceito porque amortiza nas próximas N sessões.
172
+ - Risco de o template virar fóssil se ninguém atualizar — mitigação: regra `tech-mapping.md` "toda PR que mexer em arquitetura atualiza este doc"; auditoria trimestral.
173
+ - **Neutras**:
174
+ - Projetos novos começam com seções quase vazias mas com esqueleto; mais valor à medida que crescem.
175
+
176
+ ### Alternativas consideradas
177
+ 1. **Deixar `architecture.md` livre, só dar exemplos** — descartado: já era o estado anterior e mostrou que vira raso.
178
+ 2. **Categorizar por feature em vez de especificação técnica** — descartado: feature é a **camada micro**; sem a macro, perde-se a visão "onde mora o backend?" / "quais integrações temos?". Os dois níveis coexistem.
179
+ 3. **Forçar uma estrutura de pastas física por especificação** (raiz com `frontend/`, `backend/` etc.) — descartado: muitos monorepos pequenos têm `src/` + `server/` por razões históricas; impor reorganização física quebra projetos legados. O `architecture.md` documenta o mapeamento.
180
+
181
+ ### Referências
182
+ - Caso real que motivou: instalação do `.ai/` no subprojeto **Strak** (`sistema-de-diesel/`) — ver `memory/completed-tasks.md` entrada de 2026-05-14.
183
+ - Arquivos tocados: `.ai/bootstrap/tech-mapping.md` (novo), `.ai/bootstrap/existing-project.md`, `.ai/bootstrap/new-project.md`, `.ai/operating-system/folder-structure.md`, `.ai/INDEX.md`, `.ai/manifest.json`, `.ai/ROUTER.md`.
184
+
185
+ ## ADR-0001 — Guard-edit cobre Bash + bypass via `.claude/.unlock`
186
+ - Data: 2026-05-14
187
+ - Status: Aceito
188
+ - Decisor: usuário (autorização explícita "pode realizar essa pendencia") + agente
189
+
190
+ ### Contexto
191
+ IMP-001 (proposto em 2026-05-14) identificou que o hook `guard-edit.{ps1,sh}` registrado com matcher `Edit|Write|NotebookEdit` deixava passar edições via `Bash` (`Set-Content`, redirects, `fs.writeFileSync`, etc.) em arquivos protegidos (`CONTRACT.md`, `settings.json`, hooks, etc.). Além disso, os dois scripts de guard estavam **corrompidos** desde alguma edição anterior — arrays de regex sem fechamento e lógica duplicada 3x.
192
+
193
+ ### Decisão
194
+ 1. **Reescrever** `guard-edit.ps1` e `guard-edit.sh` limpos (substring match em lower-case, sem regex frágil).
195
+ 2. **Adicionar branch Bash** ao guard: detecta verbos de escrita (`Set-Content`, `Out-File`, `Add-Content`, `Clear-Content`, `Tee-Object`, `New-Item`, `Remove-Item`, `Move-Item`, `Copy-Item`, `fs.writeFile*`, `fs.appendFile*`, `fs.unlink*`, `fs.rm*`, `rm `, `mv `, `cp `, `tee `, `sed -i`, `> path`, `>> path`) cruzados com lista de paths protegidos. Bloqueia se houver match.
196
+ 3. **Override autorizado via sentinela**: se `.claude/.unlock` existe (qualquer conteúdo, basta a existência), o guard sai com `exit 0` imediatamente. Usuário cria com `New-Item .claude/.unlock` ou `touch .claude/.unlock`; remove com `Remove-Item .claude/.unlock` para restaurar proteção.
197
+ 4. **Atualizar matcher** em `.claude/settings.json` e `.claude/settings.unix.json` de `Edit|Write|NotebookEdit` para `Edit|Write|NotebookEdit|Bash`.
198
+
199
+ ### Consequências
200
+ - **Positivas**:
201
+ - Fecha o bypass descrito em IMP-001.
202
+ - Corrige a corrupção pré-existente nos guards.
203
+ - Mantém UX: usuário pode autorizar mudança pontual sem editar manualmente o hook (`.unlock`).
204
+ - Auditável: criação/remoção de `.unlock` é visível no filesystem.
205
+ - **Negativas / trade-offs aceitos**:
206
+ - Falsos positivos possíveis em Bash quando o comando contém um verbo de escrita + nome de path protegido sem intenção destrutiva (ex: `grep "Set-Content" .claude/settings.json` bloqueia). Mitigação: `.unlock` resolve em 1 comando.
207
+ - `.unlock` é um interruptor global (não por-path). Decisão consciente em favor da simplicidade — escopo por-path foi descartado por complicar parsing/expiração.
208
+ - **Neutras**:
209
+ - O guard agora roda em **todo** Bash, não só os com Edit/Write. Custo: ~10-30ms por chamada de Bash. Aceitável.
210
+
211
+ ### Alternativas consideradas
212
+ 1. **Apenas branch Bash, sem `.unlock`** — descartado porque deixaria o usuário sem escape hatch quando o agente legitimamente precisa modificar um protegido.
213
+ 2. **`.unlock` com TTL/timestamp e lista de paths** — descartado por complexidade desproporcional ao ganho; existência simples atende.
214
+ 3. **Lista de comandos seguros (allowlist) em vez de detecção de verbos de escrita** — descartado: lista cresce indefinidamente; detecção de verbos cobre 95% dos casos com menor manutenção.
215
+
216
+ ### Referências
217
+ - IMP-001 em `evolution/improvements.md` (status: aplicado por ADR-0001).
218
+ - Arquivos tocados: `.ai/hooks/guard-edit.ps1`, `.ai/hooks/guard-edit.sh`, `.claude/settings.json`, `.claude/settings.unix.json`.
219
+
220
+ ## ADR-0002 — TypeScript + ts-morph + commander para Runtime v0.1
221
+ - Data: 2026-05-15
222
+ - Status: Aceito
223
+ - Decisor: usuário (autorização explícita via AskUserQuestion: "TypeScript + deps controladas — Recomendado") + agente
224
+
225
+ ### Contexto
226
+ O AI Operating System (v4.0.0) entregou estrutura passiva sólida: 91+ arquivos markdown + MCP daemon Node.js (`aios-server.mjs`) com 12 tools de lookup/leitura. Toda a "inteligência" estava em **documentos**, não em **código executável**. Pesquisa do Founder (refs do mercado AI-DOS / Devin / OpenHands) identificou três componentes de alto ROI ausentes: Context Packager (semantic compression), Project State Engine (AST + grafo + smells), Snapshot System. Implementar AST decente em TS/JS sem parser real é inviável (regex falha em re-exports, barrel files, type-only imports).
227
+
228
+ ### Decisão
229
+ Adotar TypeScript + dependências controladas para o Runtime v0.1, mantendo `aios-server.mjs` como entry `.mjs` puro que importa `dist/index.mjs` (bundle único gerado por esbuild). Stack:
230
+ - `ts-morph@^22` (runtime) — AST tipado sobre tsc.
231
+ - `commander@^12` (runtime) — CLI tipada para futuros entrypoints.
232
+ - `typescript@^5.4`, `esbuild@^0.21`, `@types/node@^20` (devDeps).
233
+
234
+ Estrutura: `.ai/server/src/{types,index}.ts` + `analyzer/` + `packager/` + `snapshot/`. Build via `npm install && npm run build` → `.ai/server/dist/index.mjs`. Daemon faz `import()` opcional do bundle: se ausente, as 12 tools base continuam funcionando (graceful degradation), as 5 v0.1 retornam erro descritivo.
235
+
236
+ ### Consequências
237
+ - **Positivas**:
238
+ - AST parsing confiável (ts-morph cobre o que tsc cobre).
239
+ - TypeScript em dev → menos bugs por type-error em código complexo (analyzer/packager).
240
+ - Bundle único `dist/index.mjs` — runtime continua sem `node_modules` em produção quando build é feito.
241
+ - `aios-server.mjs` permanece `.mjs` puro, sem build próprio.
242
+ - **Negativas / trade-offs aceitos**:
243
+ - Quebra a regra "NUNCA instalar dependência nova sem justificar e pedir confirmação" do CLAUDE.md global. Mitigação: este ADR + aprovação explícita via AskUserQuestion.
244
+ - Requer `npm install` + `npm run build` na primeira vez. Mitigação: `start-os.{ps1,sh}` detecta ausência de `dist/` e orienta. Daemon continua útil mesmo sem build (12 tools base).
245
+ - **Neutras**:
246
+ - `dist/` gerado (gitignored). `package-lock.json` versionado para reprodutibilidade.
247
+
248
+ ### Alternativas consideradas
249
+ 1. **Manter zero-deps (`.mjs` puro)** — descartado porque AST decente em Node nativo é inviável; resultado seria menos confiável que o status quo.
250
+ 2. **TypeScript + ts-morph sem bundler** — descartado: `node_modules/` em produção (>500 arquivos), divergência dev/prod, mais difícil de auditar.
251
+ 3. **SQLite (better-sqlite3) para storage** — descartado para v0.1; JSON sidecar + Markdown atende. SQLite só se justifica quando queries complexas (ranking, joins, FTS) virarem necessárias.
252
+
253
+ ### Referências
254
+ - ADR completo: `.ai/specs/ADR/ADR-0002-typescript-runtime.md`.
255
+ - IMP-003 em `evolution/improvements.md` (status: aplicado por ADR-0002).
256
+ - Arquivos tocados: `.ai/server/package.json`, `.ai/server/tsconfig.json`, `.ai/server/.gitignore`, `.ai/server/src/**`, `.ai/server/README.md`, `.ai/server/aios-server.mjs` (wiring), `.ai/manifest.json` (bump 4.0.0 → 4.1.0 + capabilities), `.ai/INDEX.md`, `.ai/ROUTER.md` (3 novas rotas), `.claude/commands/{analyze,context,snapshot}.md`.
257
+ - Plano completo: arquivado no histórico local do Claude Code (não versionado).
@@ -0,0 +1,41 @@
1
+ ---
2
+ version: 1.0.0
3
+ updated: 2026-05-14
4
+ tier: conditional
5
+ tokens: ~varies
6
+ load: bugs
7
+ mutable: append_only
8
+ triggers: bug, erro, error, falha
9
+ ---
10
+
11
+ # Errors and Solutions
12
+
13
+ > Catálogo de erros observados + correções validadas. Antes de debugar, conferir aqui.
14
+
15
+ ## Formato
16
+
17
+ ```
18
+ ## ERR-NNN — Título curto do sintoma
19
+ - Data: AAAA-MM-DD
20
+ - Contexto: onde aconteceu (módulo, arquivo, ambiente)
21
+ - Sintoma: mensagem de erro, comportamento observado
22
+ - Causa raiz: explicação técnica do POR QUÊ
23
+ - Correção: o que foi feito (com referência a commit/PR se houver)
24
+ - Reprodução: passos mínimos para reproduzir (se aplicável)
25
+ - Prevenção: teste/lint/check que impede regressão
26
+ ```
27
+
28
+ ## Regras
29
+
30
+ 1. Só registrar erro com **causa raiz identificada**. Sintoma sem causa vai para `known-issues.md`.
31
+ 2. Se o mesmo erro reaparecer, atualizar a entrada (incrementar contador de ocorrências).
32
+ 3. Se a causa raiz se repete em 3+ entradas distintas → considerar `evolution/patterns-discovered.md`.
33
+ 4. Linkar para `decisions.md` se a correção envolveu decisão arquitetural.
34
+
35
+ ## Anti-padrão
36
+
37
+ - "Resolvi reiniciando" não é solução — é workaround. Registrar como `known-issues.md` até causa raiz.
38
+
39
+ ## Entradas
40
+
41
+ <!-- adicionar abaixo -->
@@ -0,0 +1,40 @@
1
+ ---
2
+ version: 1.0.0
3
+ updated: 2026-05-14
4
+ tier: conditional
5
+ tokens: ~varies
6
+ load: bugs
7
+ mutable: true
8
+ triggers: bug, erro, problema conhecido
9
+ ---
10
+
11
+ # Known Issues
12
+
13
+ > Problemas conhecidos SEM solução definitiva. Workarounds, limitações, débitos.
14
+
15
+ ## Formato
16
+
17
+ ```
18
+ ## ISSUE-NNN — Título
19
+ - Data: AAAA-MM-DD (primeira observação)
20
+ - Severidade: baixa | média | alta | crítica
21
+ - Frequência: rara | ocasional | frequente | constante
22
+ - Sintoma: o que se observa
23
+ - Impacto: a quem afeta, com que magnitude
24
+ - Hipóteses de causa: lista (marcar "confirmado" ou "especulação")
25
+ - Workaround atual: como contornar enquanto não há fix
26
+ - Tentativas anteriores: o que já foi testado e NÃO resolveu
27
+ - Próximos passos: investigação pendente
28
+ - Issue tracker: link externo (Jira, GitHub) se houver
29
+ ```
30
+
31
+ ## Regras
32
+
33
+ 1. Quando causa raiz é identificada → MOVER para `errors-and-solutions.md` (com referência ao ISSUE-NNN original).
34
+ 2. Se o issue persiste >3 meses sem progresso → reclassificar severidade e impacto.
35
+ 3. Registrar tentativas falhadas para evitar repeti-las.
36
+ 4. Não confundir com `pending-tasks.md`: aqui é problema sem fix; lá é trabalho planejado.
37
+
38
+ ## Entradas
39
+
40
+ <!-- adicionar abaixo -->
@@ -0,0 +1,37 @@
1
+ ---
2
+ version: 1.0.0
3
+ updated: 2026-05-14
4
+ tier: on_demand
5
+ tokens: ~varies
6
+ load: backlog_review
7
+ mutable: true
8
+ ---
9
+
10
+ # Pending Tasks
11
+
12
+ > Backlog ativo. Itens em andamento ou esperando para começar.
13
+
14
+ ## Formato
15
+
16
+ ```
17
+ ## [PRIORIDADE] Título
18
+ - Criado: AAAA-MM-DD
19
+ - Origem: bug, feature request, refactor, débito técnico, ...
20
+ - Critério de aceite: como sabemos que está pronto
21
+ - Dependências: outras tasks ou condições
22
+ - Owner sugerido: usuário, agente, ...
23
+ - Status: backlog | in-progress | blocked
24
+ ```
25
+
26
+ Prioridades: **P0** (crítico), **P1** (alto), **P2** (médio), **P3** (baixo).
27
+
28
+ ## Regras
29
+
30
+ 1. Mover para `completed-tasks.md` ao finalizar.
31
+ 2. Se bloqueado >7 dias → registrar motivo + mover para `known-issues.md` se for problema real.
32
+ 3. Não duplicar entre arquivos.
33
+ 4. Revisar prioridades periodicamente — task de 6 meses na P0 não é P0.
34
+
35
+ ## Entradas
36
+
37
+ <!-- adicionar abaixo -->
@@ -0,0 +1,67 @@
1
+ ---
2
+ version: 1.0.0
3
+ updated: 2026-05-14
4
+ tier: core
5
+ tokens: ~varies
6
+ load: always
7
+ mutable: true
8
+ ---
9
+
10
+ # Project Context
11
+
12
+ > Contexto validado do projeto. NÃO escrever hipóteses aqui — apenas fatos confirmados.
13
+
14
+ ## Identificação
15
+
16
+ - **Nome do projeto**: _(preencher)_
17
+ - **Stakeholder principal**: _(preencher)_
18
+ - **Objetivo de negócio**: _(preencher)_
19
+ - **Data de início**: _(preencher)_
20
+
21
+ ## Stack Técnica (confirmada)
22
+
23
+ - **Linguagens**: _(preencher quando conhecido)_
24
+ - **Frameworks**: _(preencher)_
25
+ - **Banco de dados**: _(preencher)_
26
+ - **Infraestrutura**: _(preencher)_
27
+ - **CI/CD**: _(preencher)_
28
+
29
+ ## Ambientes
30
+
31
+ | Ambiente | URL | Branch | Notas |
32
+ |---|---|---|---|
33
+ | dev | | | |
34
+ | staging | | | |
35
+ | prod | | | |
36
+
37
+ ## Ferramentas disponíveis ao agente
38
+
39
+ - MCPs ativos: _(listar conforme descoberto via `tools/mcp-discovery.md`)_
40
+ - Acesso a: _(GitHub? GCP? AWS? Slack? ...)_
41
+
42
+ ## Convenções específicas deste projeto
43
+
44
+ - _(adicionar conforme validado)_
45
+
46
+ ## Restrições
47
+
48
+ - Janela de deploy: _(preencher)_
49
+ - Janelas de blackout: _(preencher)_
50
+ - Compliance / regulação: _(preencher — LGPD, PCI, HIPAA, etc.)_
51
+
52
+ ## Pessoas
53
+
54
+ | Papel | Nome | Contato |
55
+ |---|---|---|
56
+ | Product Owner | | |
57
+ | Tech Lead | | |
58
+ | DevOps | | |
59
+
60
+ ---
61
+
62
+ ## Regras de manutenção deste arquivo
63
+
64
+ 1. Só registrar o que foi **confirmado** (lido em código, dito explicitamente pelo usuário, ou observado em execução).
65
+ 2. Marcar com `?` qualquer item não 100% certo.
66
+ 3. Remover seções inteiras se não se aplicam — não deixar placeholders eternos.
67
+ 4. Em conflito com a realidade observada → atualizar este arquivo antes de prosseguir.
@@ -0,0 +1,54 @@
1
+ ---
2
+ version: 1.0.0
3
+ updated: 2026-05-14
4
+ tier: conditional
5
+ tokens: ~400
6
+ load: architecture
7
+ triggers: arquitetura, architecture, design
8
+ ---
9
+
10
+ # Operating System: Architecture
11
+
12
+ > Visão arquitetural do projeto. Deve ser lida no carregamento inicial pelo agente.
13
+
14
+ ## Diagrama de Alto Nível
15
+
16
+ _(preencher conforme o projeto se materializa — manter atualizado)_
17
+
18
+ ```
19
+ [ Client ] → [ API Gateway ] → [ Services ] → [ DB / Cache / Queue ]
20
+ ```
21
+
22
+ ## Camadas
23
+
24
+ | Camada | Responsabilidade | Pode depender de |
25
+ |---|---|---|
26
+ | Presentation | UI / HTTP handlers | Application |
27
+ | Application | Casos de uso, orquestração | Domain, Infrastructure (via interfaces) |
28
+ | Domain | Regras de negócio puras | (nada externo) |
29
+ | Infrastructure | DB, HTTP clients, filas, FS | (implementa interfaces de Application) |
30
+
31
+ **Regra de dependência**: setas só apontam para dentro (Clean / Hexagonal).
32
+
33
+ ## Boundaries
34
+
35
+ - Cada bounded context tem seu próprio módulo / pacote.
36
+ - Comunicação entre contextos: eventos > chamada direta.
37
+ - Modelos de domínio NÃO são DTOs de API — usar mappers.
38
+
39
+ ## Cross-cutting
40
+
41
+ - Logging, tracing, autenticação, autorização → middleware/decorators, não duplicado.
42
+ - Configuração: variáveis de ambiente carregadas em um único módulo de config tipado.
43
+ - Erros: hierarquia de classes (DomainError, ValidationError, NotFoundError, ...) mapeadas para HTTP no Presentation.
44
+
45
+ ## Trade-offs Aceitos
46
+
47
+ _(listar conforme decisões registradas em `memory/decisions.md`)_
48
+
49
+ ## Reversibilidade
50
+
51
+ - Decisões reversíveis: estilo, estrutura de pastas internas, libs utilitárias.
52
+ - Difíceis de reverter: banco escolhido, modelo de auth, formato de IDs, tenancy model.
53
+
54
+ → Decisões difíceis exigem ADR e análise de alternativas registrada.
@@ -0,0 +1,84 @@
1
+ ---
2
+ version: 1.0.0
3
+ updated: 2026-05-14
4
+ tier: conditional
5
+ tokens: ~600
6
+ load: coding, refactor
7
+ triggers: refactor, naming, convenção, style, lint, prettier, eslint
8
+ ---
9
+
10
+ # Coding Standards
11
+
12
+ ## Princípios Gerais
13
+
14
+ - **Legível > clever.** Código é lido 10x mais do que escrito.
15
+ - **Nomes explícitos.** `usersAwaitingApproval`, não `temp` ou `data2`.
16
+ - **Funções pequenas.** Se passa de ~50 linhas ou >3 níveis de indentação, quebrar.
17
+ - **Sem comentários óbvios.** Comentar o **por quê**, não o **o quê**.
18
+
19
+ ## Naming
20
+
21
+ - Constantes: `SCREAMING_SNAKE_CASE`
22
+ - Funções/variáveis: `camelCase` (JS/TS) | `snake_case` (Python)
23
+ - Classes/Tipos: `PascalCase`
24
+ - Booleans: prefixo `is_`, `has_`, `should_`, `can_`
25
+ - Arquivos: convenção do ecossistema (kebab-case em web; snake_case em python; PascalCase em componentes React)
26
+
27
+ ## Estrutura de arquivo
28
+
29
+ - Imports no topo, agrupados: stdlib → terceiros → projeto.
30
+ - Exports no fim ou inline.
31
+ - Uma responsabilidade clara por arquivo.
32
+
33
+ ## Funções
34
+
35
+ - Argumentos: ≤ 4. Mais que isso → objeto/struct.
36
+ - Sem efeitos colaterais ocultos. Side effect intencional → nome do método indica.
37
+ - Retorno consistente — mesmo tipo em todos os caminhos.
38
+
39
+ ## Tipos
40
+
41
+ - TS estrito (`strict: true`). `any` proibido sem comentário justificando.
42
+ - Python com type hints em todo código novo.
43
+ - Tipos em boundaries (entrada/saída de função pública) sempre.
44
+
45
+ ## Erros
46
+
47
+ - Lançar erros tipados, com contexto suficiente.
48
+ - Não engolir erros (`catch (e) {}` proibido sem comentário).
49
+ - Erros esperados → retorno `Result<T, E>` ou equivalente; inesperados → throw.
50
+
51
+ ## Imports
52
+
53
+ - Sem imports circulares.
54
+ - Sem wildcards (`import *`).
55
+ - Caminhos absolutos para módulos do projeto (`@/foo`) > relativos longos (`../../../foo`).
56
+
57
+ ## Comentários
58
+
59
+ - Permitidos: motivo de hack, link para issue, invariante não-óbvio, edge case.
60
+ - Proibidos: explicar código óbvio, TODOs sem owner+data, comentário de versão antiga.
61
+
62
+ ## Formatação
63
+
64
+ - Prettier / Black / Ruff / equivalente — configurado, rodando em pre-commit.
65
+ - Sem debate de espaços vs tabs no PR — config é fonte da verdade.
66
+
67
+ ## Git
68
+
69
+ - Commits atômicos. Mensagem no imperativo: "Add X", não "Added X".
70
+ - Sem `WIP` em main. Sem `git commit -am "fix"` sem descrição.
71
+ - PR descrito: o que muda, por quê, como testar.
72
+
73
+ ## Linguagem-específico
74
+
75
+ _(adicionar seções abaixo conforme stack do projeto)_
76
+
77
+ ### TypeScript
78
+ - `strict: true`, `noUncheckedIndexedAccess: true`.
79
+ - Prefira `interface` para shape de objeto; `type` para union/intersection.
80
+
81
+ ### Python
82
+ - PEP 8 via ruff/black.
83
+ - `from __future__ import annotations` em arquivos com typing.
84
+ - Evitar mutable default arguments.