# Project Discovery - a-jogada-mais-limpa-sdd-continua-runtime-agnostic-o-core-segue-dono-do-contrato-sdl-8ee3bafff01a

## Rastreabilidade
- Orquestração: a-jogada-mais-limpa-sdd-continua-runtime-agnostic-o-core-segue-dono-do-contrato-sdl-8ee3bafff01a
- Slug: a-jogada-mais-limpa-sdd-continua-runtime-agnostic-o-core-segue-dono-do-contrato-sdl-8ee3bafff01a
- Stage: project-discovery
- Estado atual: draft
- Provider: codex
- Modelo: gpt-5.5
- Effort: xhigh
- Offline: true
- Entrada: A jogada mais limpa: SDD continua runtime-agnostic. O core segue dono do contrato SDLC; Rig/Flue/LangGraph/Agno viram engines/adapters. Isso preserva exatamente a direção que o projeto já vem seguindo: .agents como contrato canônico, MCP/trace como observabilidade e client adapters gerados.

## Identidade do projeto
- Nome detectado: sdd-layer
- Root: `/Users/allan.oliveira/Documents/code/personal/sdd-layer`
- Tipo: cli/app
- Lifecycle: brownfield
- Stack: infra, rust

## Visualizações e documentação HTML
- Markdown canônico: `docs/a-jogada-mais-limpa-sdd-continua-runtime-agnostic-o-core-segue-dono-do-contrato-sdl-8ee3bafff01a/00-project-discovery.md`
- HTML de onboarding: `docs/a-jogada-mais-limpa-sdd-continua-runtime-agnostic-o-core-segue-dono-do-contrato-sdl-8ee3bafff01a/00-project-discovery.html`
- Público: desenvolvedores entrando no projeto, Tech Leads e reviewers que precisam entender stack, comandos, riscos e próximos passos rapidamente.
- Fonte dos gráficos: `DiscoveryReport` gerado pelo inventário read-only do `sdd discover`.

```mermaid
flowchart LR
  projeto["Projeto"]
  projeto --> stack_0["infra"]
  projeto --> stack_1["rust"]
  projeto --> paths["6 grupos de paths detectados"]
  projeto --> comandos["8 comandos sugeridos"]
  projeto --> riscos["1 riscos mapeados"]
```

```mermaid
xychart-beta
  title "Cobertura do inventário"
  x-axis [Código, Testes, Docs, Migrations, Infra, Config, SDD]
  y-axis "Itens" 0 --> 3
  bar [2, 1, 2, 0, 1, 2, 3]
```

```mermaid
xychart-beta
  title "Comandos derivados dos manifests"
  x-axis [Install, Lint, Typecheck, Testes, Build, Pendentes, Ausentes]
  y-axis "Comandos" 0 --> 4
  bar [0, 1, 1, 1, 1, 4, 0]
```

## Estrutura observada
- Código fonte: src, plugins
- Testes: tests
- Docs: docs, README.md
- Migrations: não encontrado no inventário
- Infra/deploy: .github/workflows
- Configurações: sdd.config.yaml, Cargo.toml
- Artefatos SDD: docs, .sdd/intelligence, .sdd/memory

## Inventário técnico detalhado
- Manifests:

| Manifest | Tipo | Nome | Versão | Gerenciador | Workspace | Sinais |
|---|---|---|---|---|---|---|
| `Cargo.toml` | rust | sdd-layer | 0.13.3 | cargo | false | binário Rust, TUI Ratatui, CLI Clap, serialização Serde |
- Componentes principais:

| Path | Tipo | Papel | Evidência |
|---|---|---|---|
| `src` | source | Código fonte principal | path `src` existe |
| `src/domain` | domain | Domínio/regras centrais | path `src/domain` existe |
| `src/runtime` | runtime | Runtime e integrações operacionais | path `src/runtime` existe |
| `src/tui` | interface | Interface TUI | path `src/tui` existe |
| `bot/src` | bot | Bot/integração conversacional | path `bot/src` existe |
| `schemas` | contracts | Schemas e contratos | path `schemas` existe |
| `templates` | templates | Templates de artefatos | path `templates` existe |
| `clients` | client-surfaces | Superfícies geradas para clientes | path `clients` existe |
| `plugins` | plugins | Plugins e skills distribuíveis | path `plugins` existe |
| `adapters` | integrations | Adapters de ferramentas externas | path `adapters` existe |
| `presets` | configuration | Presets de instalação | path `presets` existe |
| `docs` | documentation | Documentação e artefatos locais | path `docs` existe |
- CI:
  - .github/workflows
- Deploy/infra: não encontrado no inventário
- Containers: não encontrado no inventário
- Arquivos de ambiente: não encontrado no inventário
- Variáveis de ambiente observadas: não encontrado no inventário

## Comandos verificados
- Nenhum comando foi executado automaticamente; discovery estruturado e read-only.
- Instalação: ausente
- Lint: cargo clippy --all-targets --all-features -- -D warnings
- Typecheck: cargo check
- Testes: cargo test
- Build: cargo build --release
- Não verificados: cargo clippy --all-targets --all-features -- -D warnings (derivado, não executado) | cargo check (derivado, não executado) | cargo test (derivado, não executado) | cargo build --release (derivado, não executado)
- Ausentes: ausente

## Arquitetura e padrões
- Resumo inferido:
  - Entrypoints reais detectados: `src/main.rs` (rust-bin).
  - Aplicação Rust com binário em `src/main.rs`; contratos e comandos derivam de `Cargo.toml`.
  - Contratos de dados presentes; mudanças em persistência precisam de plano de migração, compatibilidade e rollback.
  - Artefatos SDD detectados em docs, .sdd/intelligence, .sdd/memory; usar traceability map como fonte local de contexto aprovado.
- Confiança da inferência: alta: manifests, entrypoints e componentes foram encontrados
- Entrypoints reais:

| Path | Tipo | Papel | Evidência |
|---|---|---|---|
| `src/main.rs` | rust-bin | Binário principal Rust | path `src/main.rs` existe |
- Camadas e boundaries:

| Path | Tipo | Papel | Evidência |
|---|---|---|---|
| `src/domain` | domain | Domínio isolado | path `src/domain` existe |
| `src/runtime` | runtime | Runtime/plataforma | path `src/runtime` existe |
| `src/tui` | presentation | Apresentação TUI | path `src/tui` existe |
| `src/main.rs` | composition-root | CLI/composição principal | path `src/main.rs` existe |
| `schemas` | contracts | Contratos versionados | path `schemas` existe |
| `templates` | artifact-templates | Templates de artefatos | path `templates` existe |
| `bot/src` | integration | Integração externa/bot | path `bot/src` existe |
| `tests` | verification | Testes automatizados | path `tests` existe |
- Rotas e comandos:

| Path | Tipo | Papel | Evidência |
|---|---|---|---|
| `src/main.rs` | cli-router | Despacho de comandos CLI | path `src/main.rs` existe |
| `.claude/commands` | agent-commands | Comandos Claude | path `.claude/commands` existe |
| `.opencode/commands` | agent-commands | Comandos OpenCode | path `.opencode/commands` existe |
| `.trae/commands` | agent-commands | Comandos Trae | path `.trae/commands` existe |
| `manifest` | clap | Roteamento de CLI via Clap | dependência `clap` detectada |
- Convenções observadas:
  - Instruções portáveis para agentes: `AGENTS.md`
  - Instruções específicas para Claude Code: `CLAUDE.md`
  - Configuração SDD do projeto: `sdd.config.yaml`
  - Contrato canônico do fluxo SDD: `schemas/sdd-contract.yaml`
  - Schema de validação de artefatos: `schemas/artifact-sections.json`
  - Template de rastreabilidade local: `templates/traceability-map.yaml`
  - Template do índice de artefatos: `templates/artifact-index.yaml`
  - CI GitHub Actions: `.github/workflows`
  - Documentação inicial do projeto: `README.md`
- Frameworks e estratégia de testes:
  - cargo test
  - go test
- Paths de teste:
  - tests
- Comandos de qualidade:
  - cargo clippy --all-targets --all-features -- -D warnings
  - cargo check
  - cargo test
  - cargo build --release
- Coverage: não encontrado no inventário
- Lacunas de qualidade:
  - coverage não encontrado; tratar como não verificado
- Migrations: não encontrado no inventário
- Schemas:
  - schemas
- Contratos API: não encontrado no inventário
- ORM/persistência: não encontrado no inventário
- Seeds/fixtures:
  - tests/fixtures
- Serviços externos:
  - OpenAI
  - Anthropic
  - GitHub
- Auth:
  - API keys
  - Tokens
- Webhooks: não encontrado no inventário
- Filas/jobs: não encontrado no inventário
- Storage: não encontrado no inventário
- Observabilidade: não encontrado no inventário
- Code intelligence:
  - codegraph: available=true, indexed=true, marker=`.codegraph/`
    - Comandos sugeridos:
      - `codegraph sync .`
      - `codegraph status .`
      - `codegraph files --path . --json`
      - `codegraph query "<symbol>" --path . --json`
      - `codegraph context "<task>" --path . --format markdown`
      - `git diff --name-only | codegraph affected --path . --stdin --quiet`
    - Fallback: Use `rg --files`, `rg`, leitura focada e testes afetados derivados dos manifests.
  - lexa: available=false, indexed=false, marker=`.lexa/graph.lexa`
    - Comandos sugeridos:
      - `lexa status`
      - `lexa files`
      - `lexa brief "<task>"`
      - `lexa audit`
    - Fallback: Use `rg --files`, `rg`, outlines manuais por arquivo e Context Pack SDD.

## Linguagem de domínio
- CONTEXT.md: não encontrado no inventário
  - CONTEXT-MAP.md: não encontrado
- ADRs: não encontrado no inventário
  - Recomendação: Criar glossário/ADRs apenas quando decisões ou termos de domínio forem resolvidos.

## Riscos do projeto
- infra/deploy: exigir checkpoint antes de mudanças operacionais

## Regras para a pipeline
- Refinement obrigatório quando houver risco medium/high/critical, migração, dados, segurança, dependência externa, arquitetura incerta ou code intelligence indicar impacto amplo.
- Agent Team obrigatório quando a feature cruzar frontend/backend/dados/infra, segurança, performance, data contracts ou área brownfield desconhecida.
- Checkpoint adicional quando houver ADR nova, alteração de contrato, migração, deploy, feature flag ou decisão de arquitetura dificil de reverter.
- Evidências mínimas de review: Context Pack, comandos executados, testes, diff, riscos residuais e fallback usado quando CodeGraph/Lexa não existirem.

## Recomendações de skills e regras
- Orquestração: a-jogada-mais-limpa-sdd-continua-runtime-agnostic-o-core-segue-dono-do-contrato-sdl-8ee3bafff01a
- Objetivo: documentar próximas skills/rules/contextos específicos do projeto depois do discovery.
- Uso: trate cada linha como recomendação baseada em sinais do repositório; confirme no Project Discovery antes de materializar.

| Tecnologia/contexto | Sinais | Skill sugerida | Rule sugerida | Contexto AGENTS/CLAUDE |
|---|---|---|---|---|
| Rust project conventions (rust-project) | Cargo.toml | `.agents/skills/rust-project/SKILL.md` | `.cursor/rules/rust-project.mdc` | Adicionar seção curta em `AGENTS.md` e, se houver divergência Claude, em `CLAUDE.md`. |
| CI and release readiness (ci-release) | CI config | `.agents/skills/ci-release/SKILL.md` | `.cursor/rules/ci-release.mdc` | Adicionar seção curta em `AGENTS.md` e, se houver divergência Claude, em `CLAUDE.md`. |
| Local test strategy (test-strategy-local) | test framework detected | `.agents/skills/local-test-strategy/SKILL.md` | `.cursor/rules/local-test-strategy.mdc` | Adicionar seção curta em `AGENTS.md` e, se houver divergência Claude, em `CLAUDE.md`. |

## Capability map
| Capability | Fonte | Gatilho | Stages | Skill local | Modo | Risco | Fallback |
|---|---|---|---|---|---|---|---|
| Code intelligence opcional | [SDD + CodeGraph + Lexa](https://github.com/colbymchenry/codegraph, https://github.com/anvia-hq/lexa) | Discovery, Tech Spec, Execution ou Review em código brownfield. | project-discovery, techspec, execution, review | `.agents/skills/code-intelligence/SKILL.md` | optional | Índice pode estar ausente ou obsoleto; verificar status antes de confiar. | `rg --files`, `rg`, leitura focada e comandos reais do projeto. |
| Execução disciplinada | [Superpowers + Matt Pocock Skills](https://github.com/obra/superpowers/tree/main/skills, https://github.com/mattpocock/skills) | Qualquer task de implementação, bugfix ou performance. | execution, review | `.agents/skills/execution-discipline/SKILL.md` | adapted | Pode virar ritual sem evidência; exigir teste/loop/verificação específicos. | Aplicar checklist local de teste, diagnóstico e validação fresca. |
| Linguagem de domínio e ADRs leves | [Matt Pocock Skills](https://github.com/mattpocock/skills) | Termos ambíguos, domínio rico, PRD/Tech Spec com decisões difíceis. | idea, prd, techspec, execution, memory | `.agents/skills/domain-language/SKILL.md` | adapted | Não transformar glossário em spec nem criar ADR para decisão trivial. | Registrar termos no artifact SDD e apontar para ADRs existentes. |
| Deepening arquitetural | [Matt Pocock Skills](https://github.com/mattpocock/skills) | Acoplamento, módulos rasos, baixa testabilidade ou refactor grande. | project-discovery, techspec, refinement, review | `.agents/skills/architecture-deepening/SKILL.md` | adapted | Não refatorar automaticamente; propor candidatos e exigir checkpoint. | Documentar fricção e converter em task/ADR futura. |

## Como materializar
- Crie skills em `.agents/skills/<nome>/SKILL.md` para conhecimento acionado por tarefa.
- Espelhe para `.claude/skills/<nome>/SKILL.md` quando quiser invocação direta no Claude Code.
- Crie rules em `.cursor/rules/*.mdc` para Cursor e em `.agents/rules/*.md` para Antigravity.
- Mantenha `AGENTS.md` como contexto portável e `CLAUDE.md` apenas para diferenças do Claude Code.
- Em cada skill, mantenha `SKILL.md` curto: gatilho claro, procedimento, evidências esperadas e links para referências opcionais.
- Não registre segredos; cite variáveis, arquivos e comandos com valores redigidos.
- Reexecute `sdd context recommend` quando a stack ou os comandos do projeto mudarem e revise `sdd context materialize --name "<orquestracao>"` antes de aplicar blocos com `--write`.

## Contexto para próximos agentes
- Antes de Tech Spec ou Execution, rode ou leia `sdd context build --name "a-jogada-mais-limpa-sdd-continua-runtime-agnostic-o-core-segue-dono-do-contrato-sdl-8ee3bafff01a" --stage <stage> --write` quando houver artifact store.
- Use `code-intelligence` se CodeGraph/Lexa estiverem disponíveis; caso contrário, use `rg --files`, `rg` e leitura focada.
- Use `execution-discipline` para TDD vertical, diagnóstico com feedback loop e verificação fresca antes de declarar conclusão.
- Use `domain-language` quando termos do usuário divergirem do glossário ou ADRs existentes.
- Use `architecture-deepening` quando a mudança exigir refactor de módulo raso ou seam pouco testável.

## Prompt para agente
Use o subagent `project-discovery` para validar este inventário, completar lacunas e salvar recomendações materializáveis sem alterar código.
