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.
- package/ai/CONTRACT.md +110 -0
- package/ai/INDEX.md +203 -0
- package/ai/README.md +434 -0
- package/ai/ROUTER.md +288 -0
- package/ai/agents/README.md +103 -0
- package/ai/agents/architect.md +59 -0
- package/ai/agents/backend-engineer.md +62 -0
- package/ai/agents/founder.md +45 -0
- package/ai/agents/frontend-engineer.md +61 -0
- package/ai/agents/product-manager.md +56 -0
- package/ai/agents/qa-engineer.md +53 -0
- package/ai/agents/researcher.md +74 -0
- package/ai/agents/reviewer.md +73 -0
- package/ai/agents/security-engineer.md +59 -0
- package/ai/agents/sre-engineer.md +70 -0
- package/ai/agents/tech-lead.md +70 -0
- package/ai/architecture/README.md +35 -0
- package/ai/architecture/components.md +24 -0
- package/ai/architecture/containers.md +30 -0
- package/ai/architecture/event-flows.md +36 -0
- package/ai/architecture/sequence-diagrams.md +38 -0
- package/ai/architecture/system-context.md +46 -0
- package/ai/architecture/threat-modeling.md +40 -0
- package/ai/blueprints/README.md +67 -0
- package/ai/blueprints/_schema.json +40 -0
- package/ai/blueprints/ai-platform.json +28 -0
- package/ai/blueprints/crm.json +22 -0
- package/ai/blueprints/game.json +25 -0
- package/ai/blueprints/mobile.json +24 -0
- package/ai/blueprints/realtime.json +22 -0
- package/ai/blueprints/saas.json +25 -0
- package/ai/blueprints/telemetry.json +30 -0
- package/ai/blueprints/web.json +23 -0
- package/ai/bootstrap/discovery-questions.md +117 -0
- package/ai/bootstrap/dispatcher.md +85 -0
- package/ai/bootstrap/existing-project.md +191 -0
- package/ai/bootstrap/new-project.md +127 -0
- package/ai/bootstrap/tech-mapping.md +164 -0
- package/ai/clients/README.md +114 -0
- package/ai/clients/antigravity.md +125 -0
- package/ai/clients/claude-code.md +65 -0
- package/ai/clients/cline.md +69 -0
- package/ai/clients/codex-aider-cli.md +82 -0
- package/ai/clients/continue.md +67 -0
- package/ai/clients/copilot.md +49 -0
- package/ai/clients/cursor.md +81 -0
- package/ai/clients/snippets/mcp-absolute-paths.json +9 -0
- package/ai/clients/snippets/mcp-http.json +7 -0
- package/ai/clients/snippets/mcp-stdio.json +9 -0
- package/ai/clients/trae.md +69 -0
- package/ai/clients/windsurf.md +71 -0
- package/ai/core/pipeline/execution-engine.md +157 -0
- package/ai/engineering/README.md +32 -0
- package/ai/engineering/observability/incident-response.md +82 -0
- package/ai/evals/protocol-tests.md +150 -0
- package/ai/evolution/agent-evolution.md +161 -0
- package/ai/evolution/improvements.md +91 -0
- package/ai/evolution/learnings.md +49 -0
- package/ai/evolution/patterns-discovered.md +48 -0
- package/ai/execution/README.md +33 -0
- package/ai/execution/backlog.md +27 -0
- package/ai/execution/milestones.md +26 -0
- package/ai/execution/roadmap.md +30 -0
- package/ai/execution/sprint.md +42 -0
- package/ai/governance/README.md +34 -0
- package/ai/governance/architecture-principles.md +99 -0
- package/ai/governance/definition-of-done.md +88 -0
- package/ai/governance/definition-of-ready.md +69 -0
- package/ai/governance/engineering-principles.md +70 -0
- package/ai/governance/quality-gates.md +85 -0
- package/ai/governance/security-policies.md +84 -0
- package/ai/hooks/enforce-audit.ps1 +41 -0
- package/ai/hooks/enforce-audit.sh +39 -0
- package/ai/hooks/guard-edit.ps1 +182 -0
- package/ai/hooks/guard-edit.sh +161 -0
- package/ai/hooks/inject-os-reminder.ps1 +40 -0
- package/ai/hooks/inject-os-reminder.sh +16 -0
- package/ai/manifest.json +238 -0
- package/ai/memory/_detected-stack.json +33 -0
- package/ai/memory/_summary.md +49 -0
- package/ai/memory/archive/.gitkeep +3 -0
- package/ai/memory/completed-tasks.md +156 -0
- package/ai/memory/decisions.md +257 -0
- package/ai/memory/errors-and-solutions.md +41 -0
- package/ai/memory/known-issues.md +40 -0
- package/ai/memory/pending-tasks.md +37 -0
- package/ai/memory/project-context.md +67 -0
- package/ai/operating-system/architecture.md +54 -0
- package/ai/operating-system/coding-standards.md +84 -0
- package/ai/operating-system/folder-structure.md +126 -0
- package/ai/operating-system/performance-rules.md +86 -0
- package/ai/operating-system/quality-control.md +81 -0
- package/ai/operating-system/security-rules.md +91 -0
- package/ai/operating-system/workflow.md +86 -0
- package/ai/product/README.md +24 -0
- package/ai/product/business-rules.md +26 -0
- package/ai/product/personas.md +29 -0
- package/ai/product/user-journeys.md +30 -0
- package/ai/product/vision.md +35 -0
- package/ai/rules/behavior.md +45 -0
- package/ai/rules/do.md +47 -0
- package/ai/rules/dont.md +46 -0
- package/ai/rules/execution-flow.md +125 -0
- package/ai/rules/structural-constraints.md +59 -0
- package/ai/rules/structure-canon.md +116 -0
- package/ai/runtime.md +179 -0
- package/ai/scripts/detect-stack.ps1 +166 -0
- package/ai/scripts/detect-stack.sh +172 -0
- package/ai/scripts/init-ai-os.ps1 +170 -0
- package/ai/scripts/init-ai-os.sh +99 -0
- package/ai/scripts/lint-os.ps1 +99 -0
- package/ai/scripts/lint-os.sh +85 -0
- package/ai/scripts/start-os.ps1 +151 -0
- package/ai/scripts/start-os.sh +141 -0
- package/ai/server/README.md +105 -0
- package/ai/server/aios-server.mjs +2134 -0
- package/ai/server/package-lock.json +802 -0
- package/ai/server/package.json +31 -0
- package/ai/server/src/analyzer/graph-builder.ts +92 -0
- package/ai/server/src/analyzer/index.ts +191 -0
- package/ai/server/src/analyzer/module-mapper.ts +171 -0
- package/ai/server/src/analyzer/smell-detector.ts +54 -0
- package/ai/server/src/analyzer/stack-detector.ts +70 -0
- package/ai/server/src/index.ts +16 -0
- package/ai/server/src/packager/context-builder.ts +217 -0
- package/ai/server/src/packager/index.ts +3 -0
- package/ai/server/src/packager/memory-injector.ts +128 -0
- package/ai/server/src/packager/module-summarizer.ts +60 -0
- package/ai/server/src/packager/token-estimator.ts +26 -0
- package/ai/server/src/snapshot/index.ts +3 -0
- package/ai/server/src/snapshot/snapshot-creator.ts +206 -0
- package/ai/server/src/snapshot/snapshot-diff.ts +86 -0
- package/ai/server/src/snapshot/snapshot-restore.ts +14 -0
- package/ai/server/src/types.ts +94 -0
- package/ai/server/tsconfig.json +26 -0
- package/ai/skills/architecture-design.md +82 -0
- package/ai/skills/backend-engineering.md +57 -0
- package/ai/skills/database-design.md +76 -0
- package/ai/skills/frontend-engineering.md +63 -0
- package/ai/skills/performance.md +73 -0
- package/ai/skills/scalability.md +84 -0
- package/ai/skills/security.md +71 -0
- package/ai/skills/testing.md +77 -0
- package/ai/specs/ADR/ADR-0002-typescript-runtime.md +103 -0
- package/ai/specs/ADR/ADR-0004-runtime-orchestrator.md +94 -0
- package/ai/specs/ADR/ADR-0005-workflow-engine.md +105 -0
- package/ai/specs/ADR/ADR-0006-runtime-state.md +104 -0
- package/ai/specs/ADR/ADR-0007-state-compiler-drift-context-layers-artifact-index.md +82 -0
- package/ai/specs/ADR/ADR-0008-intent-runtime-discovery-branching.md +93 -0
- package/ai/specs/ADR/ADR-0009-confidence-system-maturity-tracking.md +113 -0
- package/ai/specs/ADR/ADR-0010-structural-architecture-standards.md +121 -0
- package/ai/specs/ADR/ADR-0011-mcp-prompts.md +86 -0
- package/ai/specs/ADR/ADR-0012-stealthos-hybrid-architecture.md +174 -0
- package/ai/specs/ADR/_TEMPLATE.md +60 -0
- package/ai/specs/BRD/_TEMPLATE.md +50 -0
- package/ai/specs/PRD/_TEMPLATE.md +72 -0
- package/ai/specs/README.md +43 -0
- package/ai/specs/RFC/RFC-0001-runtime-orchestrator.md +149 -0
- package/ai/specs/RFC/RFC-0002-runtime-orchestrator-extended.md +134 -0
- package/ai/specs/RFC/_TEMPLATE.md +61 -0
- package/ai/specs/RUNBOOKS/_TEMPLATE.md +68 -0
- package/ai/specs/SDD/_TEMPLATE.md +104 -0
- package/ai/specs/TASKS/_TEMPLATE.md +52 -0
- package/ai/tools/debugging.md +64 -0
- package/ai/tools/dependency-analysis.md +46 -0
- package/ai/tools/internet-research.md +42 -0
- package/ai/tools/mcp-discovery.md +44 -0
- package/ai/workflows/_schema.json +81 -0
- package/ai/workflows/init.json +148 -0
- package/ai/workflows/sync.json +71 -0
- package/ai/workflows/work.json +91 -0
- package/bin.cjs +7 -0
- package/package.json +9 -3
- package/scripts/bundle-ai.mjs +58 -0
- package/src/cli.mjs +1 -1
- package/src/commands/install.mjs +35 -11
- package/src/lib/resolve-source.mjs +27 -10
- package/stealthos +0 -2
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: BRD-NNNN
|
|
3
|
+
slug: <slug-kebab>
|
|
4
|
+
status: draft # draft | review | approved | deprecated
|
|
5
|
+
owner: product-manager
|
|
6
|
+
created: AAAA-MM-DD
|
|
7
|
+
stakeholders: [...]
|
|
8
|
+
related:
|
|
9
|
+
- PRD-NNNN
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# BRD-NNNN — <Iniciativa de negócio>
|
|
13
|
+
|
|
14
|
+
> BRD é o **porquê de negócio** atrás do PRD. Use quando há stakeholders externos, ROI a justificar, ou decisão estratégica.
|
|
15
|
+
|
|
16
|
+
## 1. Objetivo de negócio
|
|
17
|
+
1 parágrafo: qual o resultado de negócio desejado?
|
|
18
|
+
|
|
19
|
+
## 2. Contexto
|
|
20
|
+
Por que isso é importante AGORA? (oportunidade de mercado, pressão regulatória, retenção, competição)
|
|
21
|
+
|
|
22
|
+
## 3. Stakeholders
|
|
23
|
+
| Papel | Nome | Interesse |
|
|
24
|
+
|---|---|---|
|
|
25
|
+
| Patrocinador | ... | ROI |
|
|
26
|
+
| Usuário-chave | ... | Eficiência |
|
|
27
|
+
| Operação | ... | Custo |
|
|
28
|
+
|
|
29
|
+
## 4. Métricas de negócio
|
|
30
|
+
- **Receita / custo evitado esperado**: $X em Y meses
|
|
31
|
+
- **Adoção esperada**: N usuários, % conversão
|
|
32
|
+
- **Indicadores qualitativos**: NPS, CSAT
|
|
33
|
+
|
|
34
|
+
## 5. Investimento estimado
|
|
35
|
+
- Engenharia: <semanas-pessoa>
|
|
36
|
+
- Infra: <$/mês>
|
|
37
|
+
- Outros: <$>
|
|
38
|
+
|
|
39
|
+
## 6. ROI / Payback
|
|
40
|
+
- Payback estimado: <meses>
|
|
41
|
+
- Cenários: pessimista / realista / otimista
|
|
42
|
+
|
|
43
|
+
## 7. Restrições de negócio
|
|
44
|
+
- Prazo: <data> (motivo: <evento>)
|
|
45
|
+
- Compliance: LGPD / GDPR / PCI / HIPAA / outro
|
|
46
|
+
- Orçamento: <teto>
|
|
47
|
+
|
|
48
|
+
## 8. Aprovação
|
|
49
|
+
- [ ] Patrocinador aprovou
|
|
50
|
+
- [ ] Pronto para gerar PRD (`product-manager` continua)
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: PRD-NNNN
|
|
3
|
+
slug: <slug-kebab>
|
|
4
|
+
status: draft # draft | review | approved | deprecated | superseded-by-NNNN
|
|
5
|
+
owner: product-manager
|
|
6
|
+
created: AAAA-MM-DD
|
|
7
|
+
updated: AAAA-MM-DD
|
|
8
|
+
supersedes: null
|
|
9
|
+
related:
|
|
10
|
+
- BRD-NNNN
|
|
11
|
+
- SDD-NNNN (a ser criado por architect)
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# PRD-NNNN — <Título conciso da feature>
|
|
15
|
+
|
|
16
|
+
## 1. Problema
|
|
17
|
+
O que NÃO funciona hoje? Quem sofre? Qual o tamanho do problema (qualitativo + quantitativo se possível)?
|
|
18
|
+
|
|
19
|
+
## 2. Objetivo
|
|
20
|
+
1 frase: "Permitir que <persona> faça <ação> para alcançar <benefício>."
|
|
21
|
+
|
|
22
|
+
## 3. KPIs / Métricas de sucesso
|
|
23
|
+
- **North-star**: <métrica principal — ex.: "% de uploads que disparam alerta em <60s">
|
|
24
|
+
- **Leading indicators**: <métricas que prevêem o north-star>
|
|
25
|
+
- **Guard-rails**: <métricas que NÃO podem piorar — performance, custo, satisfação>
|
|
26
|
+
|
|
27
|
+
## 4. Usuários / Personas
|
|
28
|
+
Referência a `product/personas.md`. Quais personas usam essa feature? Em qual jornada (`product/user-journeys.md`)?
|
|
29
|
+
|
|
30
|
+
## 5. Casos de uso
|
|
31
|
+
1. **<Caso primário>** — Como <persona>, quero <ação> para <objetivo>.
|
|
32
|
+
2. **<Caso secundário>** — ...
|
|
33
|
+
3. **<Caso de exceção>** — ...
|
|
34
|
+
|
|
35
|
+
## 6. Requisitos funcionais
|
|
36
|
+
- RF-01: O sistema DEVE <comportamento>.
|
|
37
|
+
- RF-02: O sistema DEVE <comportamento>.
|
|
38
|
+
- RF-03: ...
|
|
39
|
+
|
|
40
|
+
## 7. Requisitos não-funcionais
|
|
41
|
+
- RNF-01: **Performance** — p95 < 200ms para <operação>.
|
|
42
|
+
- RNF-02: **Disponibilidade** — 99.5% uptime.
|
|
43
|
+
- RNF-03: **Segurança** — autenticação obrigatória, dados sensíveis criptografados.
|
|
44
|
+
- RNF-04: **Acessibilidade** — WCAG 2.1 AA mínimo.
|
|
45
|
+
- RNF-05: **Custo** — ≤ $X/mês adicionais em infra.
|
|
46
|
+
|
|
47
|
+
## 8. Critérios de aceitação
|
|
48
|
+
Testáveis. Cada RF tem 1+ critério.
|
|
49
|
+
- **AC-01**: Dado <contexto>, quando <ação>, então <resultado verificável>.
|
|
50
|
+
- **AC-02**: ...
|
|
51
|
+
|
|
52
|
+
## 9. Fora de escopo
|
|
53
|
+
O que **explicitamente** NÃO está nesta entrega? Evita scope-creep.
|
|
54
|
+
|
|
55
|
+
## 10. Dependências / Riscos
|
|
56
|
+
- Dep: <feature/sistema X precisa estar pronto>
|
|
57
|
+
- Risco: <O que pode dar errado> — Mitigação: <ação>
|
|
58
|
+
|
|
59
|
+
## 11. Rollout
|
|
60
|
+
- **Estratégia**: feature flag | canário | gradual | big-bang
|
|
61
|
+
- **Métricas de rollout**: <quais sinais indicam "ok prosseguir" vs "rollback">
|
|
62
|
+
|
|
63
|
+
## 12. Aprovação
|
|
64
|
+
- [ ] Founder aprovou (G2)
|
|
65
|
+
- [ ] Pronto para entregar ao `architect` (G3)
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## Histórico de mudanças
|
|
70
|
+
| Versão | Data | Autor | Mudança |
|
|
71
|
+
|---|---|---|---|
|
|
72
|
+
| 0.1 | AAAA-MM-DD | product-manager | Draft inicial |
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
---
|
|
2
|
+
version: 1.0.0
|
|
3
|
+
updated: 2026-05-15
|
|
4
|
+
tier: on_demand
|
|
5
|
+
audience: humano + agente
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Specs — Documentos canônicos
|
|
9
|
+
|
|
10
|
+
> Templates padronizados que materializam o pipeline IDEIA → DEPLOY. Cada doc tem **owner** (agente responsável) e **gate** que produz.
|
|
11
|
+
|
|
12
|
+
| Pasta | Doc | Owner | Gate |
|
|
13
|
+
|---|---|---|---|
|
|
14
|
+
| `PRD/` | Product Requirements Document | `product-manager` | G2 |
|
|
15
|
+
| `BRD/` | Business Requirements Document | `product-manager` | G1 (auxiliar) |
|
|
16
|
+
| `SDD/` | Software Design Document | `architect` | G3 |
|
|
17
|
+
| `ADR/` | Architecture Decision Record | `architect` | G3 (parte do SDD) |
|
|
18
|
+
| `RFC/` | Request for Comments | `tech-lead` | G4 (mudança em decisão) |
|
|
19
|
+
| `RUNBOOKS/` | Operational runbooks | `sre-engineer` | G9 |
|
|
20
|
+
| `TASKS/` | Decomposição de tasks | `tech-lead` | G4 |
|
|
21
|
+
|
|
22
|
+
## Nomenclatura
|
|
23
|
+
|
|
24
|
+
- `PRD-NNNN-<slug-kebab>.md` (PRD-0001-events-heatmap)
|
|
25
|
+
- `SDD-NNNN-<slug>.md`
|
|
26
|
+
- `ADR-NNNN-<slug>.md` (espelha em `memory/decisions.md`)
|
|
27
|
+
- `RFC-NNNN-<slug>.md`
|
|
28
|
+
- `RUNBOOK-NNNN-<slug>.md`
|
|
29
|
+
- `TASK-NNNN-<slug>.md` (ou consolida em `execution/backlog.md`)
|
|
30
|
+
|
|
31
|
+
Numeração contínua (não reusar). Status no front-matter (`draft | review | approved | deprecated | superseded-by-NNNN`).
|
|
32
|
+
|
|
33
|
+
## Templates
|
|
34
|
+
|
|
35
|
+
Cada pasta contém `_TEMPLATE.md` (prefixo `_` para ordem alfabética + indicar uso). Copiar e renomear.
|
|
36
|
+
|
|
37
|
+
## Ciclo de vida
|
|
38
|
+
|
|
39
|
+
```
|
|
40
|
+
draft → review (gate aplicável) → approved → (deprecated | superseded-by)
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Doc aprovado é **imutável** exceto correção tipográfica. Mudança real = novo doc com `supersedes: <antigo>`.
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: RFC-0001
|
|
3
|
+
slug: runtime-orchestrator
|
|
4
|
+
status: accepted
|
|
5
|
+
opened: 2026-05-16
|
|
6
|
+
author: tech-lead
|
|
7
|
+
related:
|
|
8
|
+
- ADR-0002 (typescript-runtime — base sobre a qual orquestramos)
|
|
9
|
+
- ADR-0004 (a ser criado — decisão consolidada)
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# RFC-0001 — Runtime Orchestrator: workflows determinísticos sobre as 17 tools MCP
|
|
13
|
+
|
|
14
|
+
## Mudança proposta
|
|
15
|
+
|
|
16
|
+
Substituir o modelo atual de **"17 tools MCP soltas + 8 slash commands granulares"** por um **Runtime Orchestrator** com 3 camadas:
|
|
17
|
+
|
|
18
|
+
1. **Commands consolidados** — apenas `/init`, `/sync`, `/work`. Os 8 antigos são aposentados.
|
|
19
|
+
2. **Workflow Engine** — workflows declarativos em JSON (`.ai/workflows/<name>.json`) que orquestram chamadas determinísticas às 17 tools primitivas existentes.
|
|
20
|
+
3. **Runtime State** — `.ai/runtime/state.json` persistindo `project_phase`, `last_sync`, `current_focus`, `active_artifacts`.
|
|
21
|
+
|
|
22
|
+
A LLM continua escolhendo *quando* invocar `/init`/`/sync`/`/work`, mas a *sequência interna* de tools é determinística (definida pelo workflow JSON, não improvisada pela LLM).
|
|
23
|
+
|
|
24
|
+
## Motivação
|
|
25
|
+
|
|
26
|
+
Sinal observado em sessão 2026-05-16 (Antigravity Workbench):
|
|
27
|
+
- 17 tools `aios_*` aparecem como flat list, sem indicação de sequência ou dependência.
|
|
28
|
+
- LLM sem orquestração tende a: (a) usar tools fora de ordem, (b) esquecer steps obrigatórios (snapshot após mudança de estado, memory update após decisão), (c) repetir chamadas, (d) escolher tool errada.
|
|
29
|
+
- 8 slash commands granulares (`/analyze`, `/context`, `/snapshot`, `/audit`, `/load-os`, `/os-status`, `/compact-memory`, `/promote-learning`) sobrecarregam superfície de uso e ainda não compõem fluxos.
|
|
30
|
+
|
|
31
|
+
Sintoma esperado se não mudar:
|
|
32
|
+
- Cada nova capacidade adicionada vira nova tool → superfície cresce linearmente, complexidade cognitiva cresce mais que linear.
|
|
33
|
+
- Workflows críticos (init de projeto, sync após desenvolvimento, execução de tarefa) viram conhecimento implícito da LLM → não auditável, não rastreável, não testável.
|
|
34
|
+
|
|
35
|
+
## Estado atual
|
|
36
|
+
|
|
37
|
+
Sob ADR-0002 (Runtime v0.1):
|
|
38
|
+
- 17 tools MCP expostas via `.ai/server/aios-server.mjs` (12 base + 5 Runtime v0.1).
|
|
39
|
+
- 8 slash commands em `.claude/commands/*.md` (Claude Code only).
|
|
40
|
+
- Comandos chamam tools individuais; sem composição automática.
|
|
41
|
+
- Sem state persistente entre sessões além de `.ai/memory/*` (que é narrativa, não estado operacional).
|
|
42
|
+
- Tier system existe (core/conditional/on-demand) mas não há tool que devolva tier sob demanda — LLM precisa ler manualmente.
|
|
43
|
+
- Artefatos vivem espalhados (`.ai/specs/*`, `.ai/snapshots/*`, `.ai/context/packages/*`) sem índice unificado.
|
|
44
|
+
|
|
45
|
+
## Alternativas
|
|
46
|
+
|
|
47
|
+
### Alt 1 — Status quo (não mudar)
|
|
48
|
+
- Custo: 0
|
|
49
|
+
- Resultado: dívida arquitetural cresce; LLM cada vez mais erra ordem operacional; difícil onboardar nova IDE/CLI sem replicar 8 commands.
|
|
50
|
+
- **Descartada**: sinal claro de degradação.
|
|
51
|
+
|
|
52
|
+
### Alt 2 — Runtime Orchestrator (esta proposta)
|
|
53
|
+
- Custo: 4 fases incrementais, ~40-50 arquivos tocados, 4 ADRs novos.
|
|
54
|
+
- Resultado: 3 commands, workflows determinísticos, state persistente, context layers explícitas, artifact index.
|
|
55
|
+
- **Escolhida**.
|
|
56
|
+
|
|
57
|
+
### Alt 3 — Manter 8 commands + adicionar 3 novos como "orchestrators"
|
|
58
|
+
- Custo: menor (sem deletar).
|
|
59
|
+
- Resultado: superfície cresce de 8 para 11; ambiguidade sobre quando usar granular vs composto.
|
|
60
|
+
- **Descartada pelo usuário**: opção explícita por "substituir tudo pelos 3 novos" (sessão 2026-05-16).
|
|
61
|
+
|
|
62
|
+
## Plano de migração (4 fases)
|
|
63
|
+
|
|
64
|
+
### Fase 1 — Workflow Engine MVP
|
|
65
|
+
**Entrega**: `aios_run_workflow(name, input)` + 3 workflows JSON + 3 slash commands consolidados + remoção dos 8 antigos.
|
|
66
|
+
|
|
67
|
+
**Arquivos novos**:
|
|
68
|
+
- `.ai/workflows/init.json` — projeto novo / primeira sessão
|
|
69
|
+
- `.ai/workflows/sync.json` — sincronização periódica de estado
|
|
70
|
+
- `.ai/workflows/work.json` — execução de tarefa (MVP, expandido na Fase 4)
|
|
71
|
+
- `.claude/commands/{init,sync,work}.md`
|
|
72
|
+
|
|
73
|
+
**Arquivos modificados**:
|
|
74
|
+
- `.ai/server/aios-server.mjs` — nova tool `aios_run_workflow` + handler + helper `resolveArgs`
|
|
75
|
+
- `AGENTS.md`, `.ai/clients/{README,antigravity,claude-code}.md`, `.ai/runtime.md`, `.ai/README.md`, `.cursor/rules/ai-os.mdc` — atualizar tabelas: 3 comandos novos substituem 8 antigos
|
|
76
|
+
- `.claude/settings.local.json` — permitir nova tool
|
|
77
|
+
|
|
78
|
+
**Arquivos deletados**:
|
|
79
|
+
- `.claude/commands/{analyze,audit,compact-memory,context,load-os,os-status,promote-learning,snapshot}.md` (8 arquivos)
|
|
80
|
+
|
|
81
|
+
**ADR**: ADR-0005 (workflow-engine).
|
|
82
|
+
|
|
83
|
+
### Fase 2 — Runtime State
|
|
84
|
+
**Entrega**: `.ai/runtime/state.json` + tools `aios_state_get`, `aios_state_set`, `aios_state_advance` + workflows da Fase 1 passam a atualizar state.
|
|
85
|
+
|
|
86
|
+
**Schema state.json**:
|
|
87
|
+
```json
|
|
88
|
+
{
|
|
89
|
+
"project_phase": "discovery|planning|development|maintenance",
|
|
90
|
+
"last_sync_at": "ISO-8601",
|
|
91
|
+
"last_snapshot_id": "string|null",
|
|
92
|
+
"current_focus": "string|null",
|
|
93
|
+
"active_artifacts": { "specs": [], "packages": [], "snapshots": [] },
|
|
94
|
+
"open_decisions": [],
|
|
95
|
+
"open_tasks": []
|
|
96
|
+
}
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
**ADR**: ADR-0006 (runtime-state).
|
|
100
|
+
|
|
101
|
+
### Fase 3 — Context Layers explícitas + Artifact Index
|
|
102
|
+
**Entrega**:
|
|
103
|
+
- Tool `aios_get_context(layer: "core"|"working"|"deep", focus?: string)` que devolve apenas o tier pedido.
|
|
104
|
+
- `.ai/artifacts/index.json` consolidando metadata de specs/snapshots/packages/ADRs.
|
|
105
|
+
- Tool `aios_artifact_list(type, status)` para consultar o índice.
|
|
106
|
+
|
|
107
|
+
**ADR**: ADR-0007 (context-layers-and-artifact-index).
|
|
108
|
+
|
|
109
|
+
### Fase 4 — Intent Runtime para `/work`
|
|
110
|
+
**Entrega**: expandir `work.json` para implementar fluxo: Intent Classification → Gap Analysis → Clarification → Plan → Approval → Execution → Validation → Memory → Snapshot.
|
|
111
|
+
|
|
112
|
+
Requer:
|
|
113
|
+
- Workflow conditional branches (if/else por classification).
|
|
114
|
+
- Step de "pause for user input" (interrupção controlada).
|
|
115
|
+
- Tool `aios_intent_classify(query)` (heurística + opcional LLM-call no servidor — provavelmente sem LLM no MVP).
|
|
116
|
+
|
|
117
|
+
**ADR**: ADR-0008 (intent-runtime).
|
|
118
|
+
|
|
119
|
+
### Rollback
|
|
120
|
+
- Cada fase isolada em commit/ADR próprio.
|
|
121
|
+
- Para reverter Fase 1: restaurar 8 commands antigos do git history; remover `aios_run_workflow` e workflows JSON.
|
|
122
|
+
- Cuidado: docs cross-IDE referenciam novos commands — rollback exige atualizar docs também.
|
|
123
|
+
|
|
124
|
+
## Riscos
|
|
125
|
+
|
|
126
|
+
| Risco | Mitigação |
|
|
127
|
+
|---|---|
|
|
128
|
+
| Workflow JSON vira config-language proprietária e implícita | Mantê-lo simples: só `steps[]` com `tool/args/on_error`. Não criar DSL. |
|
|
129
|
+
| LLM ignora workflows e chama tools primitivas direto | Tools primitivas continuam expostas (não remover); docs orientam preferência por workflows |
|
|
130
|
+
| YAML vs JSON debate | JSON: zero-deps no Node; pode ler/escrever com `JSON.parse/stringify`. YAML exigiria nova dep. |
|
|
131
|
+
| Aposentar 8 commands quebra muscle memory | Documentar mapeamento "antigo → novo" em `.ai/clients/README.md`; deixar nota em commit |
|
|
132
|
+
| Substituição de variável `${...}` vira mini-template engine | Manter restrito a `${input.X}`, `${timestamp}`, `${state.X}` (Fase 2+). Sem condicionais nem loops. |
|
|
133
|
+
| Pause-for-input na Fase 4 exige MCP protocol extension | Fase 4 desenhada para usar AskUserQuestion (Claude) / Function Calling pause (Gemini) externamente, workflow apenas declara pontos de pausa |
|
|
134
|
+
|
|
135
|
+
## Métricas de sucesso
|
|
136
|
+
|
|
137
|
+
- Métrica 1: **Superfície de slash commands** — 8 → 3 (-62%)
|
|
138
|
+
- Métrica 2: **Reprodutibilidade de fluxo `sync`** — execuções independentes geram mesmo conjunto de artefatos (verificar via `aios_snapshot_diff` entre snapshots de syncs consecutivos)
|
|
139
|
+
- Métrica 3: **Token economy** — workflows devolvem relatório resumido em vez de dumps individuais (target: -40% tokens por sync típico)
|
|
140
|
+
- Métrica 4: **Onboardabilidade** — novo cliente IDE precisa documentar 3 commands em vez de 8
|
|
141
|
+
|
|
142
|
+
## Decisão
|
|
143
|
+
|
|
144
|
+
- [x] **Aceito** → criar ADR-0004 (decisão consolidada) + ADRs por fase (0005, 0006, 0007, 0008).
|
|
145
|
+
- Aprovado por: usuário (sessão 2026-05-16, AskUserQuestion "escopo: 4 fases" + "ação com commands antigos: substituir tudo pelos 3 novos").
|
|
146
|
+
|
|
147
|
+
## Comentários
|
|
148
|
+
|
|
149
|
+
- [2026-05-16] tech-lead: Inspiração de análise externa apresentada pelo usuário (aprofundamento sobre AI Engineering Runtime vs MCP puro). Filtrada para alinhar com estado real do projeto (Project Graph, Decision Engine, Context Layers já existem parcialmente sob outros nomes).
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: RFC-0002
|
|
3
|
+
slug: runtime-orchestrator-extended
|
|
4
|
+
status: accepted
|
|
5
|
+
opened: 2026-05-16
|
|
6
|
+
author: tech-lead
|
|
7
|
+
related:
|
|
8
|
+
- RFC-0001 (proposta original — esta RFC ESTENDE, não substitui)
|
|
9
|
+
- ADR-0004 (decisão consolidada)
|
|
10
|
+
- ADR-0005 (Fase 1 — Workflow Engine MVP)
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# RFC-0002 — Runtime Orchestrator Extended: State Compiler, Lifecycle, Drift Detection, Contracts, Confidence
|
|
14
|
+
|
|
15
|
+
## Mudança proposta
|
|
16
|
+
|
|
17
|
+
Estender o Runtime Orchestrator definido em RFC-0001 com **5 conceitos operacionais** que transformam o sistema de "orquestrador de tools" em **runtime operacional persistente com ciclo contínuo de engenharia**:
|
|
18
|
+
|
|
19
|
+
1. **Project State Compiler** — `/sync` produz `.ai/runtime/runtime-context.json` único, compilado semanticamente. `/work` consome esse artefato em vez de relê tudo.
|
|
20
|
+
2. **Runtime Lifecycle** — campo `phase` no state.json (`discovery|planning|implementation|stabilization|production`) + `mode` (`readonly|analysis|execution|validation`). Comportamento do `/work` adapta-se à fase.
|
|
21
|
+
3. **Documentation Drift Detection** — tool `aios_detect_drift` compara código atual vs specs/snapshots; reporta divergências; `/sync` mostra como warning.
|
|
22
|
+
4. **Execution Contracts** — workflows declaram `guarantees: []` (snapshot_created, memory_updated, ...); engine valida cumprimento ao final.
|
|
23
|
+
5. **Context TTL + Confidence System** — separar memory em `persistent` (architecture, decisions) vs `rotating` (recent_errors, active_focus) com TTL; cada categoria registra `confidence: low|medium|high` para guiar perguntas/assumptions da LLM.
|
|
24
|
+
|
|
25
|
+
## Motivação
|
|
26
|
+
|
|
27
|
+
Sessão 2026-05-16 (após Fase 1 entregue): análise externa apresentada pelo usuário aponta que o sistema agora tem **continuidade operacional** (o ciclo /init → /sync → /work → /sync → /work), mas ainda carece de:
|
|
28
|
+
|
|
29
|
+
- **Single compiled state** que `/work` consuma → hoje cada `/work` precisa reler CORE + memory + context. Custo de tokens cresce linearmente com sessão.
|
|
30
|
+
- **Drift awareness** → código pode mudar sem que specs/decisions reflitam; LLM acaba citando documentação obsoleta.
|
|
31
|
+
- **Lifecycle awareness** → `/work` em fase "discovery" deveria fazer mais perguntas; em "stabilization" deveria priorizar testes/validação. Hoje é homogêneo.
|
|
32
|
+
- **Auditabilidade de contratos** → workflow declara o que faz nos `steps[]`, mas não declara o que **garante** ao chamador. Difícil verificar pós-execução.
|
|
33
|
+
- **Confidence registration** → LLM assume com mesma confiança fatos sólidos (architecture) e inferências fracas (telemetry_rules). Custo: erros de "alta convicção".
|
|
34
|
+
|
|
35
|
+
## Estado atual (após Fase 1)
|
|
36
|
+
|
|
37
|
+
- **Entregue** (ADR-0005): Workflow Engine MVP + 3 workflows + 3 commands consolidados; 19 tools MCP (17 primitivas + 2 do orchestrator).
|
|
38
|
+
- **Pendente do RFC-0001**: Fases 2 (Runtime State), 3 (Context Layers + Artifact Index), 4 (Intent Runtime para `/work`).
|
|
39
|
+
|
|
40
|
+
Esta RFC **redistribui e expande** Fases 2-4 e adiciona Fase 5.
|
|
41
|
+
|
|
42
|
+
## Alternativas
|
|
43
|
+
|
|
44
|
+
### Alt 1 — Não estender; entregar Fases 2-4 originais minimalistas
|
|
45
|
+
- Custo: 0 (plano original).
|
|
46
|
+
- Resultado: sistema funcional mas perde os 5 conceitos novos que mitigam problemas reais identificados pela análise externa.
|
|
47
|
+
- **Descartada**: usuário aprovou adoção completa.
|
|
48
|
+
|
|
49
|
+
### Alt 2 — Esta proposta (estender + Fase 5 nova)
|
|
50
|
+
- Custo: 4 fases (2-5), ~30 arquivos novos/modificados, 4 ADRs (0006-0009).
|
|
51
|
+
- Resultado: runtime operacional completo com state compilado, lifecycle awareness, drift detection, execution contracts, confidence system.
|
|
52
|
+
- **Escolhida**.
|
|
53
|
+
|
|
54
|
+
### Alt 3 — Substituir RFC-0001 inline
|
|
55
|
+
- Pros: 1 RFC vivo.
|
|
56
|
+
- Cons: perde rastreabilidade da evolução.
|
|
57
|
+
- **Descartada**: usuário preferiu manter RFC-0001 + criar RFC-0002.
|
|
58
|
+
|
|
59
|
+
## Plano de migração (Fases 2-5 redistribuídas)
|
|
60
|
+
|
|
61
|
+
### Fase 2 — Runtime State + Lifecycle + Context TTL + Execution Contracts + Safety Rule
|
|
62
|
+
**ADR-0006**.
|
|
63
|
+
|
|
64
|
+
Entregáveis:
|
|
65
|
+
- `.ai/runtime/state.schema.json` + `.ai/runtime/state.json` (inicializado vazio).
|
|
66
|
+
- Schema: `{ identity, lifecycle: { phase, mode }, persistent: {...}, rotating: { ttl_days, entries: [...] }, active_workflow_history: [...] }`.
|
|
67
|
+
- Tools: `aios_state_get(path?)`, `aios_state_set(path, value)`, `aios_state_advance(phase|mode)`, `aios_state_reset()`.
|
|
68
|
+
- Workflow schema estendido: campos opcionais `guarantees: [...]` (lista de strings auditáveis: "snapshot_created", "memory_updated", "context_recompiled", "lint_clean") + `safety: { project_files_readonly: boolean }`.
|
|
69
|
+
- `runWorkflow` valida guarantees após execução; reporta `unmet_guarantees: [...]` no relatório.
|
|
70
|
+
- Workflows `init`/`sync`/`work` atualizados para escrever no `state.json` (último step) e declarar guarantees.
|
|
71
|
+
- Token namespace expandido: `${state.X}` agora resolve.
|
|
72
|
+
|
|
73
|
+
### Fase 3 — Project State Compiler + Drift Detection + Context Layers + Artifact Index
|
|
74
|
+
**ADR-0007**.
|
|
75
|
+
|
|
76
|
+
Entregáveis:
|
|
77
|
+
- Tool `aios_compile_runtime_context()` — produz `.ai/runtime/runtime-context.json` consolidando: identity (do state) + active_modules (do project-state) + engineering_memory (decisions + errors-and-solutions, comprimidos) + active_work_state (do state.rotating) + runtime_rules (de rules/* e governance/*, índice apenas) + context_prioritization (top-N módulos por relevância).
|
|
78
|
+
- **Tamanho-alvo**: ≤ 4000 tokens (compressão semântica, não dump).
|
|
79
|
+
- Tool `aios_detect_drift({ since_snapshot? })` — compara AST atual (`project-state.json`) vs último snapshot e specs (`PRD/SDD/ADR/_TEMPLATE.md`); retorna `{ code_changes_without_spec_update: [...], specs_updated_no_code: [...], orphan_modules: [...] }`.
|
|
80
|
+
- Tool `aios_get_context(layer: "core"|"working"|"deep", focus?)` — atalho para devolver só o tier pedido.
|
|
81
|
+
- `.ai/artifacts/index.json` — índice consolidado de specs/snapshots/packages/ADRs com metadata (id, type, status, created_at, refs).
|
|
82
|
+
- Tool `aios_artifact_list(type?, status?)`.
|
|
83
|
+
- Workflow `sync` ganha steps `compile_runtime_context` + `detect_drift` no final.
|
|
84
|
+
- Workflow `work` consome `runtime-context.json` no primeiro step (substitui `load_core` + parte de `route_query`).
|
|
85
|
+
|
|
86
|
+
### Fase 4 — Intent Runtime para `/work` + Discovery Runtime ramificado em `/init`
|
|
87
|
+
**ADR-0008**.
|
|
88
|
+
|
|
89
|
+
Entregáveis:
|
|
90
|
+
- Workflow `work` v2: pipeline completo Intent → Gap Analysis → Clarification (pause) → Plan → Approval (pause) → Execute → Validate → Memory Update → Snapshot. Pause-for-input declarado em campo `pause_for: { reason, prompt }`; engine retorna relatório com `status: "paused"` e cliente externo (AskUserQuestion/Function Calling) resolve.
|
|
91
|
+
- Workflow `init` v2: ramificação automática `if state.identity.maturity == "empty" → discovery_branch; else → reverse_engineering_branch`.
|
|
92
|
+
- Schema de workflow ganha `branches: { condition, steps: [...] }`.
|
|
93
|
+
- Tool `aios_resume_workflow(execution_id, user_input)` para retomar workflow pausado.
|
|
94
|
+
|
|
95
|
+
### Fase 5 — Confidence System + Maturity Tracking
|
|
96
|
+
**ADR-0009**.
|
|
97
|
+
|
|
98
|
+
Entregáveis:
|
|
99
|
+
- Schema `state.confidence`: `{ architecture, modules, telemetry, decisions, ... }` com valores `low|medium|high`.
|
|
100
|
+
- Tool `aios_confidence_get(category?)`, `aios_confidence_set(category, value, reason)`.
|
|
101
|
+
- Workflows registram updates de confidence em pontos chave (`work` aumenta confiança em módulo após validação bem-sucedida; `sync` reduz se detectou drift).
|
|
102
|
+
- `runtime-context.json` inclui top-3 categorias de baixa confiança como **flags** para LLM perguntar.
|
|
103
|
+
|
|
104
|
+
### Rollback
|
|
105
|
+
- Cada fase tem ADR próprio. Reverter Fase N implica remover tools, schema fields e workflow steps; outras fases permanecem.
|
|
106
|
+
- Fase 5 é independente — pode ser desligada sem afetar 1-4.
|
|
107
|
+
|
|
108
|
+
## Riscos
|
|
109
|
+
|
|
110
|
+
| Risco | Mitigação |
|
|
111
|
+
|---|---|
|
|
112
|
+
| `runtime-context.json` vira dump (quebra o ponto do compiler) | Auditoria de tamanho: tool valida ≤ 4000 tokens; rejeita se exceder. Compressão prioriza decisions + critical modules. |
|
|
113
|
+
| Drift Detection gera falsos positivos | Severity tiers (warning, no-op, info); só `info` por default; usuário pode subir |
|
|
114
|
+
| Workflow pause-for-input vira deadlock | Timeout opcional (default 30 min); engine marca `execution_id` como expirado |
|
|
115
|
+
| Confidence System vira micromanage | Adoção opt-in; `work` só consulta se categoria estiver `low` |
|
|
116
|
+
| Schema do state.json vira "god object" | Validação strict via JSON Schema; mudanças exigem ADR |
|
|
117
|
+
| Performance: `compile_runtime_context` em projetos grandes | Cache invalidado por hash do project-state.json; recomputa só se mudou |
|
|
118
|
+
|
|
119
|
+
## Métricas de sucesso
|
|
120
|
+
|
|
121
|
+
- Métrica 1: **Tokens lidos por `/work`** — baseline atual ~5k (CORE + memory grep + context package). Target pós-Fase 3: **≤ 2k** (só `runtime-context.json`).
|
|
122
|
+
- Métrica 2: **Drift detectado vs corrigido** — `/sync` reporta drift; queremos ≥ 80% corrigido na próxima sessão.
|
|
123
|
+
- Métrica 3: **Lifecycle adoption** — `state.lifecycle.phase` muda ao longo do projeto; mensurar diversidade de phases usadas em 1 mês.
|
|
124
|
+
- Métrica 4: **Confidence atomicity** — # categorias com `low` confidence reduzido ao longo de sprints.
|
|
125
|
+
- Métrica 5: **Guarantees fulfillment** — % de execuções com `unmet_guarantees: []`.
|
|
126
|
+
|
|
127
|
+
## Decisão
|
|
128
|
+
|
|
129
|
+
- [x] **Aceito** — usuário aprovou "Adotar TUDO incluindo Confidence System (Fase 5)" e "Tudo em sequência (2 → 3 → 4) até acabar" (sessão 2026-05-16).
|
|
130
|
+
- Cada fase exige ADR próprio antes de execução (ADR-0006 a 0009).
|
|
131
|
+
|
|
132
|
+
## Comentários
|
|
133
|
+
|
|
134
|
+
- [2026-05-16] tech-lead: Conceitos vieram de análise externa apresentada pelo usuário. Filtrei: aceitei State Compiler/Drift/Lifecycle/Contracts/TTL/Confidence; descartei "criar pastas duplicadas" (`domain/`, `validations/`, etc. — conceitos já existem em outros nomes); mantive JSON em vez de YAML (zero-deps).
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: RFC-NNNN
|
|
3
|
+
slug: <slug-kebab>
|
|
4
|
+
status: open # open | accepted | rejected | withdrawn | superseded-by-NNNN
|
|
5
|
+
opened: AAAA-MM-DD
|
|
6
|
+
author: tech-lead
|
|
7
|
+
related:
|
|
8
|
+
- ADR-NNNN (decisão que está sendo questionada/refinada)
|
|
9
|
+
- SDD-NNNN
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# RFC-NNNN — <Mudança proposta em frase curta>
|
|
13
|
+
|
|
14
|
+
> RFC é para **proposta de mudança em decisão prévia** ou **escolha técnica controversa**. Diferente do ADR (decisão tomada), o RFC é discussão aberta.
|
|
15
|
+
|
|
16
|
+
## Mudança proposta
|
|
17
|
+
1-2 parágrafos: o que muda, em relação ao estado atual.
|
|
18
|
+
|
|
19
|
+
## Motivação
|
|
20
|
+
Por quê agora? Que dado/sinal motivou essa proposta? (perf medida, custo, complexidade, bug recorrente)
|
|
21
|
+
|
|
22
|
+
## Estado atual
|
|
23
|
+
Como funciona hoje (cite ADR-NNNN se aplicável). Limitações observadas.
|
|
24
|
+
|
|
25
|
+
## Alternativas
|
|
26
|
+
|
|
27
|
+
### Alt 1 — Status quo (não mudar)
|
|
28
|
+
- Custo: 0
|
|
29
|
+
- Resultado: problema persiste
|
|
30
|
+
|
|
31
|
+
### Alt 2 — <proposta principal>
|
|
32
|
+
- Custo: <esforço/risco>
|
|
33
|
+
- Resultado esperado: <medido como>
|
|
34
|
+
|
|
35
|
+
### Alt 3 — <alternativa>
|
|
36
|
+
- ...
|
|
37
|
+
|
|
38
|
+
## Plano de migração (se Alt 2 aceita)
|
|
39
|
+
1. Fase 1: ...
|
|
40
|
+
2. Fase 2: ...
|
|
41
|
+
3. Rollback: ...
|
|
42
|
+
|
|
43
|
+
## Riscos
|
|
44
|
+
| Risco | Mitigação |
|
|
45
|
+
|---|---|
|
|
46
|
+
| ... | ... |
|
|
47
|
+
|
|
48
|
+
## Métricas de sucesso
|
|
49
|
+
Como saberemos que a mudança foi positiva?
|
|
50
|
+
- Métrica 1: <antes> → <depois esperado>
|
|
51
|
+
- Métrica 2: ...
|
|
52
|
+
|
|
53
|
+
## Comentários
|
|
54
|
+
> Discussão aberta. Stakeholders comentam aqui antes de aceitar/rejeitar.
|
|
55
|
+
|
|
56
|
+
- [date] [author]: ...
|
|
57
|
+
|
|
58
|
+
## Decisão
|
|
59
|
+
- [ ] Aceito → criar ADR-NNNN substituindo o anterior, marcar este RFC como `accepted`.
|
|
60
|
+
- [ ] Rejeitado → marcar `rejected`, justificar.
|
|
61
|
+
- [ ] Withdrawn → autor retirou.
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: RUNBOOK-NNNN
|
|
3
|
+
slug: <slug-kebab>
|
|
4
|
+
status: active # active | deprecated | superseded-by-NNNN
|
|
5
|
+
owner: sre-engineer
|
|
6
|
+
created: AAAA-MM-DD
|
|
7
|
+
updated: AAAA-MM-DD
|
|
8
|
+
severity: P0 | P1 | P2 | P3
|
|
9
|
+
related:
|
|
10
|
+
- SDD-NNNN
|
|
11
|
+
- alert: <nome do alerta no Grafana/Datadog>
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# RUNBOOK-NNNN — <Cenário operacional>
|
|
15
|
+
|
|
16
|
+
## Quando este runbook se aplica
|
|
17
|
+
Quando o alerta `<nome>` dispara OU quando observar o sintoma <X>.
|
|
18
|
+
|
|
19
|
+
## Severidade
|
|
20
|
+
**P<N>** — impacto: <descrição>. SLA de resposta: <tempo>.
|
|
21
|
+
|
|
22
|
+
## Diagnóstico (em ordem)
|
|
23
|
+
|
|
24
|
+
### 1. Verificar health endpoints
|
|
25
|
+
```bash
|
|
26
|
+
curl -fsS https://<host>/health
|
|
27
|
+
curl -fsS https://<host>/health/db
|
|
28
|
+
```
|
|
29
|
+
Esperado: 200 + JSON com `status: ok`. Se 5xx → siga §2. Se timeout → siga §3.
|
|
30
|
+
|
|
31
|
+
### 2. Verificar logs recentes
|
|
32
|
+
```bash
|
|
33
|
+
# Loki / Sentry / equivalente
|
|
34
|
+
kubectl logs -n <ns> -l app=<app> --tail=200
|
|
35
|
+
```
|
|
36
|
+
Procurar por: `[ERROR]`, `ECONNREFUSED`, `Timeout`, `OOM`.
|
|
37
|
+
|
|
38
|
+
### 3. Verificar métricas
|
|
39
|
+
- Dashboard: <link>
|
|
40
|
+
- Métricas chave: error_rate, p99_latency, queue_depth, db_connections
|
|
41
|
+
|
|
42
|
+
### 4. Verificar dependências
|
|
43
|
+
| Dep | Comando |
|
|
44
|
+
|---|---|
|
|
45
|
+
| Postgres | `psql -h $DB_HOST -c "SELECT 1"` |
|
|
46
|
+
| Redis | `redis-cli -h $REDIS_HOST ping` |
|
|
47
|
+
| Getrak API | `curl -fsS https://api.getrak.com/status` |
|
|
48
|
+
|
|
49
|
+
## Mitigação
|
|
50
|
+
|
|
51
|
+
### Cenário A: <causa provável A>
|
|
52
|
+
```bash
|
|
53
|
+
# Comando exato de mitigação
|
|
54
|
+
```
|
|
55
|
+
Tempo estimado: <X min>. Reversível: sim/não.
|
|
56
|
+
|
|
57
|
+
### Cenário B: <causa provável B>
|
|
58
|
+
...
|
|
59
|
+
|
|
60
|
+
## Escalação
|
|
61
|
+
- Após <tempo> sem resolução → notificar <canal/pessoa>.
|
|
62
|
+
- Se afetar >X usuários → status page + comunicação.
|
|
63
|
+
|
|
64
|
+
## Pós-incidente
|
|
65
|
+
- [ ] Postmortem aberto em `memory/errors-and-solutions.md`
|
|
66
|
+
- [ ] Causa-raiz identificada
|
|
67
|
+
- [ ] Ação preventiva listada (vira task em `pending-tasks.md`)
|
|
68
|
+
- [ ] Runbook atualizado se faltou algo
|