Começar
Aparência

Vale na hora e fica lembrada neste navegador.

Como se trabalha

18 · Rotinas

O dia a dia de uma stack, rotina por rotina: quem faz, com que comando, e o que precisa estar verdadeiro no fim. Os comandos de tecnologia aparecem como <build>, <rodar app> — a ficha da stack diz quais são.

Mapa das rotinas

As rotinas em três ritmos. No dia a dia, em ciclo: subir o ambiente local, desenvolver uma change, rodar os testes e o E2E. No fim de cada change: entregar e validar, o commit e o deploy, estes do mantenedor. De vez em quando: atualizar o design system ou a arquitetura, mexer em dependências, registrar uma ADR, mudar permissões e perfis, acrescentar uma aplicação, enviar pedidos ao design system, testar a restauração do backup e regenerar capturas. no dia a diasubir o ambientedesenvolver achangerodar os testesrodar o E2Eno fim da changeentregar e validarcommitdeployem menta: do mantenedorde vez em quandoatualizar o design systematualizar a arquiteturadependência novaregistrar uma ADRmudar permissões e perfisacrescentar uma aplicaçãoenviar pedidos ao DStestar a restauraçãoregenerar capturas

Subir o ambiente local

Terminal
eng/dev-db.sh up                  # banco de desenvolvimento
docker compose up -d keycloak     # http://localhost:8088 (admin/admin), realms de dev importados
<rodar app dona do schema>        # roda as migrations
<rodar demais apps>

Ou tudo em container: docker compose up --build. Usuários: um por perfil, listados em docs/acesso/<app>.md. Fim: cada aplicação responde /up e aceita login de cada perfil.

Desenvolver uma change

O ciclo de uma change em duas raias. O mantenedor pede; se o escopo é incerto, o agente explora com perguntas e o mantenedor responde. O agente propõe a change (e uma ADR, se houver decisão técnica); o mantenedor revisa. O agente aplica em TDD, roda os casos E2E novos e a regressão completa, e entrega com o ambiente no ar. O mantenedor valida — ajustes voltam ao apply —, o agente sincroniza e arquiva, e o mantenedor faz o commit. mantenedoragentepedido/opsx:exploreperguntas numeradas, opções, recomendaçãorespostas"1a, 2b, 3a"/opsx:proposeproposal · design · specs · tasks (+ ADR)revisãoajusta ou aprova/opsx:applytarefa a tarefa, em TDDcasos E2Edos cenários novos, setups em cascataregressão completado zero, com 0 falhaentregaambiente no ar, resumo por telavalidaçãona tela, com os dados/opsx:sync + archiveas specs vivas atualizadascommite deploy, se for o casoajustessó se o escopoé incerto

Detalhe em 09.

Rodar testes

O quêComando
Tudo (unidade + integração)Comando: <build>
Só unidade (sem Docker)Comando: recorte documentado no guia de testes
Um módulo / uma classe / um testeComando: recortes documentados no guia de testes
E2E de um casoComando: eng/e2e.sh <agrupamento>/<cenário>/<caso>
E2E de uma áreaComando: eng/e2e.sh <agrupamento>
Regressão E2EComando: eng/e2e.sh --reset --shuffle
Ver uma tela nos dois temas e largurasComando: eng/e2e.sh <caso> --captures
Demonstração visívelComando: eng/e2e.sh <seleção> --demo

Entregar, commitar, implantar

Entregar, commitar e implantar: o agente deixa tudo verde e entrega o ambiente no ar, o resumo por tela, as pendências e as instruções de commit. O mantenedor confere no navegador e diz ok. O agente sincroniza e arquiva a change e manda as instruções finais de commit; o mantenedor faz o commit e o push. Se a change vai para produção, o agente escreve as instruções de deploy e o mantenedor roda o kamal deploy, a dona do schema primeiro. agentemantenedortudo verdebuild, verificador, regressãoentregaambiente, resumo, pendênciasconfereno navegadorsync + archivee as instruções finaiscommit e pushinstruções de deployse for para produçãokamal deploya dona do schema primeirooktracejado: só se a change vai para produção

Atualizar o design system

  1. Mantenedor: no repositório do design system, na tag da versão, roda o atualizador dela (node design-system/atualizar/atualizar.mjs --alvo=<raiz da stack>), que substitui por inteiro vendor/hibex/ e a skill .claude/skills/hibex-ui/ e não faz commit;
  2. Agente: /opsx:propose design-system-X-Y-Z lendo o CHANGELOG.md entre as versões;
  3. Apply: trocas do "Para os produtos", hibex-pendente atendidos, verificador sem erro, capturas das telas afetadas, regressão E2E;
  4. Fim: vendor/hibex/VERSAO na versão nova, pedidos.md atualizado.

Atualizar a arquitetura

Mesmo desenho do design system, com o arquivo ARQUITETURA no lugar de VERSAO:

  1. Mantenedor: decide adotar arquitetura-vX.Y.Z;
  2. Agente: /opsx:propose arquitetura-X-Y-Z lendo o "Para as stacks" do CHANGELOG.md deste repositório, entre a versão do ARQUITETURA e a nova;
  3. Apply: copia docs/decisoes/organizacao/ da versão nova (ORGs novas ou substituídas), revê as ADRs que cumpriam uma ORG substituída, ajusta AGENTS.md, eng/, CI, guias;
  4. Fim: ARQUITETURA na versão nova.

Adicionar ou atualizar uma dependência

Uma dependência nova: se houve alternativa relevante, uma ADR proposta com as alternativas; se não, a razão em uma linha no catálogo ou lockfile. Em todo caso, a versão exata na fonte única. Se é ferramenta de máquina, ela entra como pré-requisito, com versão, no README e no guia. No fim, o eng/pinned-versions.sh fica verde. houve alternativarelevante?ADR (proposta)com as alternativasuma linha de razãono catálogo ou lockfilesimnãoversão exatana fonte únicaé ferramentade máquina?pré-requisitocom versão, no README e no guiasimeng/pinned-versions.sh verdenão é

Versão maior de dependência central (framework, banco, runtime) é change.

Registrar uma decisão

  1. Copiar docs/decisoes/template.md para ADR-NNNN-slug-no-imperativo.md (o próximo número da stack); se a decisão valeria para toda stack, é pedido para a arquitetura virar ORG, em docs/decisoes/pedidos-a-arquitetura.md;
  2. Status proposta; as ORGs que cumpre; contexto, decisão, alternativas, consequências;
  3. Linha no índice docs/decisoes/README.md;
  4. Mantenedor aceita (ou pede ajuste). Revisão de ADR aceita: linha "Revisão" ou nova ADR que a substitui.

Mudar permissões e perfis

  1. Change do OpenSpec (acesso é comportamento);
  2. eng/auth/provision.sh: permissões, perfis, grupos;
  3. eng/auth/dev-realms.sh → conferir o diff dos exports; usuário de exemplo para perfil novo;
  4. Código: conferir a permissão na rota; teste de rota;
  5. docs/acesso/<app>.md: tabelas, matriz, histórico;
  6. E2E: caso do perfil no agrupamento identidade;
  7. Instruções para o mantenedor rodar o provision.sh no Keycloak real.

Acrescentar uma aplicação à stack

Acrescentar uma aplicação à stack: uma ADR diz por quê (público, endereço, família); uma change faz o resto, na ordem: módulo e build, deploy/<app>, compose.yaml, client e perfis em eng/auth, docs/acesso da aplicação, a família em aplicacoes.md, o contrato de observabilidade, os casos dela no agrupamento identidade, e a ficha e o ARCHITECTURE.md atualizados. ADR: por que uma aplicação novapúblico, endereço, família de corchange nova-aplicacao-<nome>1módulo + build2deploy/<app>/3compose.yaml4client e perfis em eng/auth5docs/acesso/<app>.md6família emaplicacoes.md7contrato de observabilidade8casos no agrupamentoidentidade9ficha e ARCHITECTURE.md

Checklist completo no guia nova-aplicacao.md do modelo.

Enviar pedidos ao design system

  1. Mantenedor pede o lote;
  2. Agente monta build/pedidos-design-system/<AAAA-MM-DD>/ (LEIA-ME + uma pasta por pedido, pedido.md no formato do design system, evidências das capturas);
  3. Agente roda node vendor/hibex/pedir.mjs <lote> e corrige os erros;
  4. Mantenedor envia o zip;
  5. Números voltam → pedidos.md e hibex-pendente: NNNN <assunto>.

Testar a restauração do backup

  1. Mantenedor copia um dump real para a estação;
  2. Banco local descartável; eng/backup/restore-db.sh <dump> --confirmar dentro de um container da mesma imagem do backup (cada armazenamento com dados tem o seu restore-<armazenamento>.sh, testado do mesmo jeito);
  3. Sobe a aplicação dona do schema na mesma versão da produção; confere /up e um login;
  4. Registra a data no guia de backup.

O guia de backup da stack é um roteiro de copiar e colar. Nele, cada comando vem completo, e a pasta de destino é criada antes da cópia (mkdir -p antes do scp). Quando um comando pede uma senha, o roteiro diz o nome do segredo no Bitwarden, nunca o valor. E toda variável que ele manda exportar vem com o comando que a obtém. O primeiro teste segue o roteiro ao pé da letra, e o que faltou volta para o guia na mesma hora.

Regenerar capturas

SituaçãoComando
Ver uma tela durante o desenvolvimentoComando: eng/e2e.sh <caso> --captures (diretório temporário)
Atualizar o acervo das telas que a change mudouComando: eng/e2e.sh --captures --archive=<tela>,<tela>
Regerar o acervo inteiroComando: só quando todas as telas mudam (ex.: versão do design system)