Origem e rumo
20 · Questões em aberto e próximos passos
O que o mantenedor precisa decidir para esta visão virar regra, e o que construir depois. Cada questão traz opções e uma recomendação (a primeira).
Questões para validar
Quinze questões, todas decididas em 2026-10-18.
Sobre este repositório
- Nome do repositório. Decidida:
stack-architecture, transversal a todas as plataformas (sem o prefixoenterprise-), no par com os nomes das stacks (<plataforma>-stack-<produto>). A pasta localarchitecture/segue até o repositório ser criado. - Onde mora o modelo zerado. Decidida: aqui, em
modelo/, versionado junto com a documentação e copiado poreng/new-stack.sh: a regra e o modelo mudam juntos, numa só tag. - Versões da arquitetura. Decidida: tags
arquitetura-vX.Y.Z, comCHANGELOG.mde a parte "Para as stacks", como o design system; cada stack guarda a sua versão no arquivoARQUITETURA. - As ADRs deste repositório. Decidida: as decisões que valem para toda stack viram ORGs daqui e chegam às stacks como cópia; as que valem só para este repositório (o site, o kit de desenho) são ADRs daqui. A numeração é a questão 5.
Sobre as regras
- Numeração das decisões. Decidida: duas famílias, cada uma com a sua sequência desde
0001, no lugar da faixa reservada: ORG (Organization Architecture Decision Record), emdocs/decisoes/organizacao/ORG-NNNN-slug.md, nasce aqui e chega a cada stack como cópia nunca editada; ADR (Architecture Decision Record), emdocs/decisoes/ADR-NNNN-slug.md, nasce na stack. As duas valem como decisão. "Uma ADR nunca contradiz uma ORG" é ela mesma uma ORG (ORG-0002): o que uma ORG não permite vira pedido para cá. O que antes eram sementes "com lacuna" vira ORG (a regra) + ADR pré-escrita no modelo (a escolha da stack). Detalhe em 07. - Banco padrão. Decidida: sem banco padrão. Banco e armazenamentos são lacuna da Fase 1, escolhidos com ADR. O modelo traz critérios de escolha (backup e restauração, imagem com versão exata, teste com o real em container, migrations ou equivalente) e cita o PostgreSQL como opção já provada para dados relacionais, sem impor; MongoDB, filas, armazenamento de arquivos e outros são igualmente válidos.
- E2E na CI. Decidida: não na fundação; cada stack decide numa ADR própria (consequência da questão 12).
- Correção de bug exige change? Decidida: sim, uma change pequena, a critério do mantenedor: um teste que reproduz o bug e a correção; a spec só muda se o comportamento esperado estava errado.
- Hook de infraestrutura. Decidida:
block-infra.pyvem no modelo, ao lado do hook de Git, com teste próprio. - Permissões finas desde a fundação. Decidida: sim, para toda aplicação com área
restrita: ela nasce com
<app>:acessare pelo menos um perfil composto, e o código confere permissões, nunca perfis. Com a observação do mantenedor: uma aplicação também pode ser pública, sem autenticação (site, landing, documentação); isso é declarado na ficha e no documento de acesso dela, e uma aplicação mista separa a parte pública da restrita por rota. - Preparar o ambiente do E2E por fora da interface. Decidida: só em três usos (tempo passou, volume, estado inalcançável), por preparadores com interface do modelo e implementação da stack. Com a observação do mantenedor: as stacks não usam todas SQL nem um banco só (MongoDB, filas, arquivos…) e precisam de simuladores de serviços externos; o ambiente do E2E é feito de pontos de encaixe, não de SQL (11).
- Executor e ferramentas do E2E. Decidida: Playwright Test com a camada
hierarchy/, TypeScript, o Chromium do Playwright, estação (CI por ADR da stack), um processo, sem retentativas, sem comparação visual, login pela tela do Keycloak, roteiro gerado de uma corrida, resultados eme2e/results/(11).
Sobre a referência de estudo
- O papel da stack-projetos. Decidida: ela é só referência de estudo para conceber esta arquitetura e não entra em nenhum fluxo, roteiro ou plano daqui. Se um dia adotar o modelo, aos poucos ou numa reescrita, a decisão é dela, tomada lá: este repositório não conhece as stacks que o usam, nem as futuras. A documentação vive por conta própria: fora do estudo (19), ela aparece só como histórico, e os exemplos usam um produto fictício (03).
Sobre os diagramas e o site
- Diagramas nas stacks. Decidida: rabiscos como recomendação, Mermaid permitido.
Rabisco para o que se lê muito e muda pouco (README, visão de produto, guias, a abertura dos
documentos); Mermaid para o que muda em quase toda change ou precisa sair rápido (sequências,
trechos do
ARCHITECTURE.md). O kit de desenho vem no modelo. - O site da arquitetura. Decidida: aberto, como o site do design system: público e indexado pelos buscadores.
Próximos passos (depois da validação)
| # | Entrega | Prova de pronto |
|---|---|---|
| 1 | Entrega: ORGs e ADRs daqui (aceitas em 2026-10-18) | Prova de pronto: mantenedor aceita |
| 2 | Entrega: modelo/ com todas as lacunas marcadas (feito em 2026-10-19) | Prova de pronto: grep '{{LACUNA:' lista todas; cada id aparece uma vez, com a descrição, no catálogo de modelo/docs/guias/definir-a-stack.md (eng/gap-catalog.sh confere) |
| 3 | Entrega: gaps.sh, pinned-versions.sh, hooks (feito em 2026-10-19) | Prova de pronto: testes dos scripts; rodam na CI do próprio modelo (.github/workflows/ci.yml) |
| 4 | Entrega: hierarchy/ (feito em 2026-10-19) | Prova de pronto: um projeto de exemplo com dois agrupamentos prova seleção, setups sob demanda, contexto, capturas, --shuffle, --walkthrough (exemplos/e2e-atendimento/prove.mjs, na CI) |
| 5 | Entrega: new-stack.sh (feito em 2026-10-19) | Prova de pronto: gera um repositório que passa no portão 0 (eng/tests/test_new_stack.py, na CI) |
| 6 | Entrega: piloto (agora) | Prova de pronto: uma stack nova chega ao portão 2 seguindo só o modelo; tudo que faltou volta como mudança aqui |
| 7 | Entrega: arquitetura-v0.1.0 | Prova de pronto: tag + CHANGELOG; a piloto usa a pré-versão arquitetura-v0.1.0-dev, e a v1.0.0 só sai depois de usos reais (ADR-0003) |
O que esta visão ainda não cobre
Assuntos que vão aparecer e que, quando aparecerem, entram aqui como versão nova:
- comunicação entre stacks além de "conta de serviço + API" (eventos, filas);
- uma aplicação sem interface (só API ou worker);
- ambientes além de local e produção (desenvolvimento implantado, homologação, demonstração). O
toolboxjá tem o realmhibex-enterprise-dev; falta o dos colaboradores, o host e os segredos (12); - cópia externa dos backups (decisão do
toolbox); - guia de segurança de aplicação (SSRF, cabeçalhos, CSP);
- critérios de acessibilidade além do que o design system já cobre.