2.2 KiB
OPS107 — Aprovar e deployar em produção a versão escolhida, sem fila de pendentes (2026-09-14): o approval de produção deixou de segurar a lane compartilhada — com N runs empilhados, o operador aprova e publica qualquer run (tipicamente o último com staging verde) sem tocar nos anteriores. O bloco concurrency: deploy-homeserver (cancel-in-progress: false, queue: max) foi removido do job deploy-production e vive só no deploy-staging (que nunca espera approval e sempre drena); o job waiting de produção segurava o grupo porque a avaliação de concurrency acontece antes do gate do environment, travando o staging e a aprovação dos runs novos (evidência ao vivo 2026-09-14: run 34818635060 waiting de 08:22 a 10:12, runs 34822356060/34824353858 com staging preso desde 08:38/09:06 — o gatilho de revisita da falha conhecida do runbook, disparado). A serialização real permanece intocada: cadeia needs intra-run + UMA instância do runner self-hosted (um job por vez) + o flock único do deploy-homeserver.sh (comentário realinhado; nenhuma linha executável mudou). Nada de auto-approve/auto-cancel/auto-retry: produção segue exclusivamente humana (environment: production com required reviewer, verify full verde) e runs não aprovados não publicam nada; multi-approve segue "o último deploy executado vence" — o runbook registra "aprove só o run escolhido; rejeite os demais". Contrato pinado em ciSkipInvariants.unit.spec.ts: o grupo é exigido no bloco do deploy-staging e concurrency: é proibido no bloco do deploy-production (RED comprovado contra o YAML anterior); deployTrigger/deployScript intocados e verdes. Docs realinhadas: runbook docs/ops/teqo-1313-deploy.md (intro, fluxo itens 1/5/7, primeiro deploy e a falha conhecida agora resolvida), AGENTS.md, AGENTS-infra.md, docs/AGENT-OPS.md e README.md. Sem migration, sem UI, sem access/Consent. Verificação: pnpm gate:fast verde (310 arquivos/3062 unit); e2e não afetado (diff YAML/teste unit/docs — o CI do PR roda o curado por high-risk); aceite ao vivo pós-merge: deixar um run waiting, confirmar o staging de um run novo rodando e aprovar só o escolhido.