# 00 — Project Discovery
## Orquestração: SDDL-2 — sdd bot do Slack

worktree: SDDL-2
branch-raiz: main

**Data:** 2026-06-24
**Agente:** project-discovery
**Estado:** recorded
**Artifact store:** .worktree/SDDL-2/docs/sddl-2/

---

## 1. Identidade do projeto

| Campo | Valor |
|---|---|
| Nome | sdd-layer |
| Versão atual | 0.15.2 |
| Tipo | agent-layer / CLI Spec-Driven |
| Ciclo de vida | brownfield |
| Linguagem principal | Rust (binário `sdd`) |
| Camada bot | TypeScript / Node.js 20 (diretório `bot/`) |
| Repositório | github.com/alexandesigner/sdd-layer |

---

## 2. Stack tecnológica

### 2.1 Core CLI (Rust)

| Componente | Versão/detalhe |
|---|---|
| Rust edition | 2021 |
| clap | 4.5 (derive) |
| serde / serde_json / serde_yaml | 1.0 / 1.0 / 0.9 |
| sha2 | 0.10 (HMAC-SHA256 Slack) |
| ratatui + crossterm | 0.29 / 0.28 |
| rmcp | 1.7.0 (feature `mcp-rmcp`, opcional) |
| rig-core | 0.38.2 (feature `rig-adapter`, opcional) |
| anyhow | 1.0 |

### 2.2 Bot Slack (TypeScript/Node.js)

| Componente | Versão | Papel |
|---|---|---|
| @slack/bolt | ^3.22.0 | framework Slack (Socket Mode) |
| @slack/web-api | ^7.8.0 | chamadas REST Slack |
| @anthropic-ai/sdk | ^0.36.3 | provider LLM Anthropic |
| openai | ^4.85.7 | provider LLM OpenAI |
| axios | ^1.8.4 | HTTP para Jira e Bitbucket REST |
| execa | ^8.0.1 (ESM-only) | execução do CLI `sdd` |
| pm2 | ^5.4.3 | processo daemon em produção |

---

## 3. Estrutura de diretórios relevante

```
sdd-layer/
├── src/                          # Core Rust do CLI
│   ├── main.rs                   # Entrypoint; subcomandos Clap
│   ├── domain/
│   │   ├── discovery.rs
│   │   ├── risk.rs
│   │   └── orchestrator/
│   └── runtime/
│       ├── mcp.rs
│       ├── slack.rs              # Verificação HMAC-SHA256
│       └── trace.rs
├── bot/                          # Bot TypeScript (Slack-first)
│   ├── src/
│   │   ├── index.ts              # Entrypoint Bolt + Socket Mode
│   │   ├── commands/
│   │   │   ├── bot-criar.ts
│   │   │   ├── card-editar.ts
│   │   │   └── aprovado.ts
│   │   ├── providers/
│   │   │   ├── jira.ts
│   │   │   ├── bitbucket.ts
│   │   │   └── slack.ts
│   │   └── session/
│   │       ├── store.ts
│   │       └── validator.ts
│   └── package.json
├── adapters/                     # atlassian.yaml, github.yaml, etc.
├── templates/                    # skill-catalog.yaml, workflows/
├── .sdd/                         # Runtime state (JSONL)
└── .worktree/                    # Worktrees de cards
```

---

## 4. Comandos verificados

| Comando | Propósito |
|---|---|
| `cargo build --release` | Build do binário `sdd` |
| `cargo test` | Suite de testes Rust |
| `cargo clippy --all-targets --all-features -- -D warnings` | Lint |
| `npm install` (em `bot/`) | Instala dependências |
| `npm run build` (em `bot/`) | Compila TypeScript → `dist/` |
| `npm run dev` (em `bot/`) | Execução via ts-node (dev) |
| `sdd doctor` | Valida instalação e config |
| `sdd bot install` | Gera `sdd-bot.config.yaml` interativamente |

---

## 5. Integrações existentes

| Sistema | Status |
|---|---|
| Slack (Socket Mode) | Implementado em `bot/src/providers/slack.ts` |
| Jira Cloud/Server | Implementado em `bot/src/providers/jira.ts` |
| Bitbucket Cloud/Server | Implementado em `bot/src/providers/bitbucket.ts` |
| Anthropic API | Implementado em `bot/src/providers/llm/anthropic.ts` |
| OpenAI API | Implementado em `bot/src/providers/llm/openai.ts` |

---

## 6. Riscos e pontos de atenção para SDDL-2

| Risco | Severidade | Descrição |
|---|---|---|
| A — Segredos fora do gitignore | Crítico | `sdd-bot.config.yaml` com tokens; wizard trata mas criação manual é risco |
| B — Timeout Bolt 3s | Alto | Handler deve fazer `ack()` imediato; trabalho real é assíncrono |
| C — SessionStore sem lock entre instâncias | Médio | Race condition em reinicialização pm2 |
| D — execa v8 ESM-only em módulo CJS | Médio | Contornado via `dynamic import()` — frágil |
| E — Ausência de testes no bot TypeScript | Médio | Nenhuma cobertura automatizada encontrada |
| F — CLI `sdd` no PATH do processo bot | Médio | Falha silenciosa se `sdd` não estiver no PATH do pm2 |

---

## 7. Skills recomendadas para SDDL-2

| Skill | Justificativa |
|---|---|
| `security-privacy` | Tokens Slack/Jira/LLM; HMAC-SHA256 |
| `integrations` | Slack API, Jira REST, Bitbucket REST, LLM providers |
| `data-contracts` | SessionEntry, BotConfig, sessions.json |
| `test-strategy` | Ausência de testes no bot TypeScript |
| `release-readiness` | Deploy via pm2; sem pipeline CI para o bot |
| `checkpoints` | Fluxo de aprovação Slack como checkpoint humano crítico |

---

## Rastreabilidade

| Campo | Valor |
|---|---|
| Orquestração | SDDL-2 — sdd bot do Slack |
| Artefato | 00-project-discovery.md |
| Artifact store local | `.worktree/SDDL-2/docs/sddl-2/` |
| Próximo artefato | `00-risk-classification.md` |
| Estado | recorded |
