Começar
Aparência

Vale na hora e fica lembrada neste navegador.

Como se trabalha

08 · Sistema de documentação

Cada tipo de conhecimento tem um lugar. Quem procura sabe onde olhar, e quem escreve sabe onde pôr. O agente segue o mesmo mapa.

Onde cada coisa vive

Onde cada coisa vive, pela pergunta que ela responde: o que o produto faz vai para openspec/specs, por uma change; por que X e não Y, para docs/decisoes; como o sistema é, para docs/ARCHITECTURE.md; como um pedaço foi montado, para docs/solucoes; como fazer, passo a passo, para docs/guias; quem pode fazer o quê, para docs/acesso; com que tecnologia e versão, para docs/stack.md; para quem é e o método, para docs/produto; como a tela usa o design system, para docs/design-system; regras para o agente, para o AGENTS.md; o trabalho em curso, para openspec/changes. o que você quer registrar?o que o produto fazopenspec/specs/por que X e não Ydocs/decisoes/como o sistema édocs/ARCHITECTURE.mdcomo um pedaço foimontadodocs/solucoes/como fazer, passo apassodocs/guias/quem pode fazer o quêdocs/acesso/<app>.mdcom que tecnologia eversãodocs/stack.mdpara quem é, e o métododocs/produto/como a tela usa o designsystemdocs/design-system/regras para o agenteAGENTS.mdo trabalho em cursoopenspec/changes/o comportamento sómuda por uma change;a decisão, por ADR

Cada documento, seu papel

DocumentoRespondeCiclo de vidaQuem atualiza
README.mdResponde: O que é, estado atual, pré-requisitos, como rodar em 5 comandos, onde ler maisCiclo de vida: vivoQuem atualiza: toda change que muda um desses pontos
docs/ARCHITECTURE.mdResponde: Como o sistema é: aplicações, módulos, domínio em mapa, identidade, implantação, observabilidade — com diagramasCiclo de vida: vivo, sempre reflete o presenteQuem atualiza: toda change que muda a forma do sistema
docs/stack.mdResponde: Com que tecnologia e versão, e onde cada versão moraCiclo de vida: vivoQuem atualiza: change que troca dependência
docs/produto/Responde: Para quem, o quê, o método do negócio (a visão de produto)Ciclo de vida: vivoQuem atualiza: mantenedor + agente
docs/decisoes/Responde: Por que, com alternativasCiclo de vida: imutável depois de aceitaQuem atualiza: nova ADR
docs/solucoes/Responde: Como um pedaço difícil foi montado: algoritmos, telas complexas, fluxos internosCiclo de vida: vivoQuem atualiza: a change que monta o pedaço
docs/guias/Responde: Como operar: rodar local, testar, implantar, restaurar backupCiclo de vida: vivoQuem atualiza: a change que muda a operação
docs/acesso/<app>.mdResponde: Permissões, perfis, grupos, como dar acesso, como outra aplicação obtém acessoCiclo de vida: vivoQuem atualiza: change que mexe em acesso
docs/design-system/Responde: Aplicações e famílias, mapa de estados, pedidos, aprendizadosCiclo de vida: vivoQuem atualiza: change de tela
openspec/specs/Responde: O comportamento vivo, por capabilityCiclo de vida: vivo, via archiveQuem atualiza: archive de change
openspec/changes/archive/Responde: Como cada comportamento chegouCiclo de vida: imutávelQuem atualiza: archive

Por que o ARCHITECTURE.md precisa de disciplina

Sem disciplina, o ARCHITECTURE.md acumula o detalhe de cada capability (uma seção "Domínio" de centenas de linhas) e parágrafos datados ("Estado em 2026-09-12…"). Regra do modelo:

  • o ARCHITECTURE.md tem um parágrafo e um link por capability; o detalhe vai para docs/solucoes/ ou para a spec;
  • nada de "estado em data X" — o presente é o que está escrito; o passado está no Git e no arquivo de changes;
  • todo bloco grande ganha um diagrama antes do texto.

A forma do ARCHITECTURE.md

Seções fixas, na ordem, para toda stack. A primeira tela responde "o que é isto e como se encaixa"; o resto aprofunda.

O ARCHITECTURE.md de toda stack tem nove seções, na ordem: visão geral, aplicações e módulos, domínio, identidade e acesso, persistência, interface, implantação, observabilidade e relação com a plataforma. Três regras: um parágrafo e um link por capability; nada de "estado em data X"; um diagrama antes de todo bloco grande. docs/ARCHITECTURE.md1visão geraldiagrama de implantação2aplicações e módulosdiagrama de dependências3domíniomapa de capabilities4identidade e acessorealms, clients, link para acesso/5persistênciabanco, dono do schema6interfacedesign system, famílias7implantaçãoendereços, accessories, backup8observabilidadeo que chega ao Grafana9relação com a plataformatoolbox, design system, pendênciasum parágrafo e um linkpor capability; o detalhevai para solucoes/nada de "estadoem 2026-09-12…":o texto é o presenteum desenho antesde todo bloco grandea primeira tela:"o que é isto ecomo se encaixa"

Diagramas

  • Um diagrama abre cada documento grande (ORG-0005). O leitor entende o assunto antes de ler, e o texto ao redor diz o mesmo que o diagrama;
  • Recomendado: rabisco desenhado por código, no estilo de rabisco do design system (traço de lápis, Caveat, só as cores da marca, nos dois temas), com o kit que vem no modelo (eng/sketches/). Serve ao que se lê muito e muda pouco: o README, a visão de produto, os guias, a abertura dos documentos. É como este repositório desenha;
  • Permitido: Mermaid, escrito no próprio texto, para o que muda em quase toda change ou precisa sair rápido. Tipos e usos:
Tipo MermaidPara quê
flowchartPara quê: caminhos de decisão, dependências
sequenceDiagramPara quê: conversa entre partes no tempo (login OIDC, deploy, setup do E2E)
stateDiagram-v2Para quê: estados de uma entidade
erDiagramPara quê: modelo de dados
  • Imagem que não é diagrama é, de preferência, SVG desenhado por um script versionado em eng/ (diff legível, regerável, nítido em qualquer tamanho — como o banner deste repositório); quando precisa de um gerador de imagens, o agente escreve o prompt em <caminho-da-imagem>.prompt.md e o mantenedor gera a imagem.

Guias que toda stack tem

O modelo traz os guias com a estrutura pronta; a Fase 2 preenche o específico.

GuiaNasce emConteúdo
fluxo-openspec.mdNasce em: Fase 0 (pronto)Conteúdo: como trabalhar com changes
definir-a-stack.mdNasce em: Fase 0 (pronto)Conteúdo: o roteiro da Fase 1
desenvolvimento-local.mdNasce em: change esqueletoConteúdo: os dois caminhos locais, portas, usuários por perfil
testes.mdNasce em: esqueleto + e2e-baseConteúdo: as três camadas, recortes, ler resultados, E2E por nível
identidade.mdNasce em: identidadeConteúdo: provisionar realms e clients, dar acesso, IdP externo, produção
observabilidade-local.mdNasce em: observabilidadeConteúdo: ver trace, métrica e log na máquina
implantacao.mdNasce em: implantacaoConteúdo: primeiro deploy (checklist do portão 3), deploys seguintes
backup-e-restauracao.mdNasce em: implantacaoConteúdo: backup manual, restauração, teste de restauração
atualizar-design-system.mdNasce em: aparenciaConteúdo: caminho da atualização por change; pedidos
nova-aplicacao.mdNasce em: Fase 0 (pronto)Conteúdo: acrescentar uma aplicação à stack (ver 18)

Guias genéricos de plataforma (inicializar VPS, apontar DNS, gerenciar segredos no Bitwarden) vivem no toolbox e são referenciados, nunca copiados.

O template de ADR

Markdown
# ADR-NNNN — Título curto no imperativo

- **Status:** proposta | aceita (AAAA-MM-DD) | substituída por ADR-XXXX | não adotada
- **Data:** AAAA-MM-DD
- **Cumpre:** ORG-NNNN, ORG-NNNN (as ORGs dentro das quais decide)
- **Change:** `<nome-da-change>` (quando nasce de uma)
- **Revisa:** ADR-XXXX (quando revisa outra)

## Contexto
## Decisão
## Alternativas consideradas
## Consequências

O documento de solução

Uma solução nasce quando a change monta algo que o leitor futuro não entenderia só pelo código e pela spec: um algoritmo (motor de agendamento), uma tela com muitos estados (agenda do gestor), um fluxo entre várias partes (prévia de links com proteção de SSRF). Forma:

  1. o problema em um parágrafo;
  2. um diagrama;
  3. as peças (classes, tabelas, rotas) e como se ligam;
  4. as armadilhas conhecidas;
  5. links: change de origem, ADRs, spec.