sdd-layer 0.25.3

Spec-Driven Development CLI and agent harness
# Memória Operacional - SDDL-2

## Estado final
- Memória operacional gerada de forma determinística a partir dos artefatos locais existentes.
- O índice de intelligence deve ser reconstruído após alterações nos artefatos canônicos.

## Funcionalidades implementadas
- Project Discovery: 00 — Project Discovery (fonte: `docs/sddl-2/00-project-discovery.md`)
- Risk Classification: Classificação de Risco — SDDL-2: SDD Bot do Slack (fonte: `docs/sddl-2/00-risk-classification.md`)
- Idea: 01 — Visão de Produto (fonte: `docs/sddl-2/01-idea.md`)
- PRD: 02 — PRD: SDD Bot do Slack (fonte: `docs/sddl-2/02-prd.md`)
- Tech Spec: techspec (fonte: `docs/sddl-2/03-techspec.md`)
- Tasks: tasks (fonte: `docs/sddl-2/04-tasks.md`)
- Refinement: 05 — Refinement: SDD Bot do Slack (fonte: `docs/sddl-2/05-refinement.md`)

## Arquitetura atual
- **Artifact store:** .worktree/SDDL-2/docs/sddl-2/ (fonte: `docs/sddl-2/00-project-discovery.md`)
- sdd-layer/ (fonte: `docs/sddl-2/00-project-discovery.md`)
- ├── src/                          # Core Rust do CLI (fonte: `docs/sddl-2/00-project-discovery.md`)
- │   ├── main.rs                   # Entrypoint; subcomandos Clap (fonte: `docs/sddl-2/00-project-discovery.md`)
- │   ├── domain/ (fonte: `docs/sddl-2/00-project-discovery.md`)
- │   │   ├── discovery.rs (fonte: `docs/sddl-2/00-project-discovery.md`)
- │   │   ├── risk.rs (fonte: `docs/sddl-2/00-project-discovery.md`)
- │   │   └── orchestrator/ (fonte: `docs/sddl-2/00-project-discovery.md`)

## Decisões
- **Novo componente separado (brownfield)**: O projeto já tem infraestrutura Rust estabelecida; adicionar um daemon de bot (provavelmente async/tokio) em paralelo exige decisões de arquitetura não triviais sobre isolamento, processo e ciclo d
...(truncado)
 (fonte: `docs/sddl-2/00-risk-classification.md`)
- `architecture-reviewer`: Decisão sobre processo/daemon do bot, isolamento do componente, ciclo de vida em relação ao CLI Rust existente, estratégia de SQLite (fonte: `docs/sddl-2/00-risk-classification.md`)
- Aprovação obrigatória após Tech Spec (arquitetura do daemon, decisões de segurança) (fonte: `docs/sddl-2/00-risk-classification.md`)
- [ ] Decisão documentada sobre armazenamento de secrets (ADR ou seção dedicada na Tech Spec) (fonte: `docs/sddl-2/00-risk-classification.md`)
- > A amplitude reflete a incerteza brownfield na remoção das amarrações existentes e na decisão de arquitetura do daemon. O limite inferior assume que as decisões de arquitetura e segurança são tomadas sem iterações adicionais nos checkpoint
...(truncado)
 (fonte: `docs/sddl-2/00-risk-classification.md`)
- **Decisão:** `better-sqlite3` — API síncrona, prepared statements, WAL, serializa naturalmente no processo único (RNF-06). Binário nativo exige `npm rebuild` por plataforma (R-1, mitigado pelo `sdd bot install`). (fonte: `docs/sddl-2/03-techspec.md`)
- **Decisão:** `await ack()` imediato + `void dispatch(...).catch(...)`. Já é o padrão de `index.ts` linha ~105. Sem fila persistente no MVP — reinício pm2 não retoma jobs em voo (documentar no runbook, R-3). (fonte: `docs/sddl-2/03-techspec.md`)
- Argumento `sdd orchestrator`: `is_card_id` (já existente) decide se consulta Jira: `main.rs` (fonte: `docs/sddl-2/03-techspec.md`)
- Relatório Markdown produzido ao final de cada task contendo: resumo, arquivos alterados, comandos executados, evidências, decisões, riscos e pendências. (fonte: `docs/sddl-2/04-tasks.md`)
- Você é um agente de código executando a task `TASK-01` no workspace `.worktree/SDDL-2`. Use apenas caminhos absolutos. Leia `C:\alisson\sdd-layer\.worktree\SDDL-2\docs\sddl-2\03-techspec.md` seções §4, §6 e §10 (S-03) para obter o DDL compl
...(truncado)
 (fonte: `docs/sddl-2/04-tasks.md`)

## Falhas recorrentes
- `npm install` (em `bot/`): Instala dependências (fonte: `docs/sddl-2/00-project-discovery.md`)
- Risco: Severidade: Descrição (fonte: `docs/sddl-2/00-project-discovery.md`)
- A — Segredos fora do gitignore: Crítico: `sdd-bot.config.yaml` com tokens; wizard trata mas criação manual é risco (fonte: `docs/sddl-2/00-project-discovery.md`)
- B — Timeout Bolt 3s: Alto: Handler deve fazer `ack()` imediato; trabalho real é assíncrono (fonte: `docs/sddl-2/00-project-discovery.md`)
- C — SessionStore sem lock entre instâncias: Médio: Race condition em reinicialização pm2 (fonte: `docs/sddl-2/00-project-discovery.md`)
- D — execa v8 ESM-only em módulo CJS: Médio: Contornado via `dynamic import()` — frágil (fonte: `docs/sddl-2/00-project-discovery.md`)
- E — Ausência de testes no bot TypeScript: Médio: Nenhuma cobertura automatizada encontrada (fonte: `docs/sddl-2/00-project-discovery.md`)
- F — CLI `sdd` no PATH do processo bot: Médio: Falha silenciosa se `sdd` não estiver no PATH do pm2 (fonte: `docs/sddl-2/00-project-discovery.md`)
- --- (fonte: `docs/sddl-2/00-project-discovery.md`)
- **Orquestração:** SDDL-2 (fonte: `docs/sddl-2/00-risk-classification.md`)
- **Data:** 2026-06-24 (fonte: `docs/sddl-2/00-risk-classification.md`)
- **Classificado por:** risk-classifier (subagent) (fonte: `docs/sddl-2/00-risk-classification.md`)

## Comandos confiáveis
- ## Orquestração: SDDL-2 — sdd bot do Slack (fonte: `docs/sddl-2/00-project-discovery.md`)
- `cargo build --release`: Build do binário `sdd` (fonte: `docs/sddl-2/00-project-discovery.md`)
- `cargo test`: Suite de testes Rust (fonte: `docs/sddl-2/00-project-discovery.md`)
- `cargo clippy --all-targets --all-features -- -D warnings`: Lint (fonte: `docs/sddl-2/00-project-discovery.md`)
- `npm install` (em `bot/`): Instala dependências (fonte: `docs/sddl-2/00-project-discovery.md`)
- `npm run build` (em `bot/`): Compila TypeScript → `dist/` (fonte: `docs/sddl-2/00-project-discovery.md`)
- `npm run dev` (em `bot/`): Execução via ts-node (dev) (fonte: `docs/sddl-2/00-project-discovery.md`)
- `sdd doctor`: Valida instalação e config (fonte: `docs/sddl-2/00-project-discovery.md`)
- `sdd bot install`: Gera `sdd-bot.config.yaml` interativamente (fonte: `docs/sddl-2/00-project-discovery.md`)
- # Classificação de Risco — SDDL-2: SDD Bot do Slack (fonte: `docs/sddl-2/00-risk-classification.md`)
- **Segredos e tokens sensíveis**: Bot token (`xoxb-...`) e App token (`xapp-...`) do Slack, API token do Jira e API key de LLM gerenciados em arquivo de config; risco de vazamento via git se `.gitignore` falhar: Critico (fonte: `docs/sddl-2/00-risk-classification.md`)
- **Mudança estrutural no SDD**: Remoção de amarrações do bot nos comandos existentes (`sdd install`, `sdd orchestrator`) afeta o fluxo principal; risco de regressão no caminho crítico do produto: Alto (fonte: `docs/sddl-2/00-risk-classification.md`)

## Padrões úteis
- │   │       └── validator.ts (fonte: `docs/sddl-2/00-project-discovery.md`)
- `cargo test`: Suite de testes Rust (fonte: `docs/sddl-2/00-project-discovery.md`)
- `sdd doctor`: Valida instalação e config (fonte: `docs/sddl-2/00-project-discovery.md`)
- E — Ausência de testes no bot TypeScript: Médio: Nenhuma cobertura automatizada encontrada (fonte: `docs/sddl-2/00-project-discovery.md`)
- `test-strategy`: Ausência de testes no bot TypeScript (fonte: `docs/sddl-2/00-project-discovery.md`)
- **Dependências externas múltiplas**: Slack API (Socket Mode + OAuth), Jira REST API, Bitbucket API, provider LLM — quatro sistemas externos com contratos independentes e potencial de breaking change: Alto (fonte: `docs/sddl-2/00-risk-classification.md`)
- **Webhooks/Socket públicos**: Socket Mode do Slack expõe endpoint de eventos; qualquer falha de validação de payload abre superfície para injeção de comandos arbitrários no orquestrador SDD: Alto (fonte: `docs/sddl-2/00-risk-classification.md`)
- **Banco de dados local (SQLite)**: Novo contrato de dados persistido (`cards`, `status`, `contexto`) sem schema versionado nem estratégia de migração documentada: Médio (fonte: `docs/sddl-2/00-risk-classification.md`)
- Validar o mecanismo `/bloqueado` — definir se é suficiente ou se requer campo de status estruturado no banco. (fonte: `docs/sddl-2/00-risk-classification.md`)
- Revisar o contrato de comandos do Slack (parse, validação de payload, tratamento de erros) antes de implementação. (fonte: `docs/sddl-2/00-risk-classification.md`)
- `security-reviewer`: Auditoria do fluxo de tokens/secrets, validação de payload Slack, superfície de injeção via texto livre no `/bot create` (fonte: `docs/sddl-2/00-risk-classification.md`)
- `data-contract-reviewer`: Schema do banco SQLite, contrato de mensagens Slack → SDD, contrato de comentários Jira como gate de estado (fonte: `docs/sddl-2/00-risk-classification.md`)

## Testes e comandos
- Comandos confiáveis para começar a validação:
  - ## Orquestração: SDDL-2 — sdd bot do Slack (fonte: `docs/sddl-2/00-project-discovery.md`)
  - `cargo build --release`: Build do binário `sdd` (fonte: `docs/sddl-2/00-project-discovery.md`)
  - `cargo test`: Suite de testes Rust (fonte: `docs/sddl-2/00-project-discovery.md`)
  - `cargo clippy --all-targets --all-features -- -D warnings`: Lint (fonte: `docs/sddl-2/00-project-discovery.md`)
  - `npm install` (em `bot/`): Instala dependências (fonte: `docs/sddl-2/00-project-discovery.md`)
  - `npm run build` (em `bot/`): Compila TypeScript → `dist/` (fonte: `docs/sddl-2/00-project-discovery.md`)
  - `npm run dev` (em `bot/`): Execução via ts-node (dev) (fonte: `docs/sddl-2/00-project-discovery.md`)
  - `sdd doctor`: Valida instalação e config (fonte: `docs/sddl-2/00-project-discovery.md`)
  - `sdd bot install`: Gera `sdd-bot.config.yaml` interativamente (fonte: `docs/sddl-2/00-project-discovery.md`)
  - # Classificação de Risco — SDDL-2: SDD Bot do Slack (fonte: `docs/sddl-2/00-risk-classification.md`)
  - **Segredos e tokens sensíveis**: Bot token (`xoxb-...`) e App token (`xapp-...`) do Slack, API token do Jira e API key de LLM gerenciados em arquivo de config; risco de vazamento via git se `.gitignore` falhar: Critico (fonte: `docs/sddl-2/00-risk-classification.md`)
  - **Mudança estrutural no SDD**: Remoção de amarrações do bot nos comandos existentes (`sdd install`, `sdd orchestrator`) afeta o fluxo principal; risco de regressão no caminho crítico do produto: Alto (fonte: `docs/sddl-2/00-risk-classification.md`)

## Pendências
- Revisar esta memória em checkpoint humano quando houver decisões de produto ou arquitetura que não aparecem nos artefatos atuais.

## Próximos passos
- Rodar `sdd intelligence learn --all` após qualquer alteração relevante neste diretório de artefatos.

## Contexto para o próximo agente
- Orquestração: `SDDL-2`
- Slug: `sddl-2`
- Gerado em: `2026-07-04T19:17:55Z`

## Rastreabilidade
- Origem local: `docs/sddl-2/traceability-map.yaml`
- Artefatos lidos:
  - `docs/sddl-2/00-project-discovery.md` (project-discovery)
  - `docs/sddl-2/00-risk-classification.md` (risk)
  - `docs/sddl-2/01-idea.md` (idea)
  - `docs/sddl-2/02-prd.md` (prd)
  - `docs/sddl-2/03-techspec.md` (techspec)
  - `docs/sddl-2/04-tasks.md` (tasks)
  - `docs/sddl-2/05-refinement.md` (refinement)
- Artefatos esperados para fechamento da memória:
  - `docs/sddl-2/06-adr.md`
  - `docs/sddl-2/07-review.md`