-
Status: implemented-pending-homologation
-
Intake:
sdd/human-requests/req-136.md -
Data de abertura: 2026-08-26
-
Classificação: implementação incremental / scripts de release / GitHub Actions
Objetivo
Preservar a última release válida durante toda a preparação e publicação de uma nova versão, removendo a exclusão antecipada de tags/releases dos scripts locais e transferindo a limpeza da mesma série para o fim bem-sucedido dos workflows do GitHub Actions.
Slice aprovado
-
Remover a exclusão local antecipada de tags e releases dos cinco scripts indicados no intake.
-
Substituir os pushes separados de branch e tags por um único
git push --atomicda branch atual e da nova tag. -
Disponibilizar o histórico completo de tags nos workflows de Gestor e Instalador.
-
Adicionar, imediatamente após
Create Release, a limpeza das tags/releases anteriores da mesma sériemajor.minor, restrita explicitamente aos padrõesgestor-v${TAG_SERIES}.*einstalador-v${TAG_SERIES}.*, preservando a tag recém-publicada. -
Proteger a limpeza com
if: success()e manter tolerância idempotente para releases/tags antigas que já não existam.
Fora do escopo
-
Alterar incremento de versão, empacotamento, conteúdo das notas ou testes de produto dos workflows.
-
Executar release real, criar/excluir tags reais ou chamar a API do GitHub durante a validação local.
-
Alterar workflows de release de plugins, inexistentes no escopo explícito do intake.
-
Fazer commit, push ou deploy.
Contrato de validação
-
bash -nlimpo nos cinco scripts alterados. -
YAML dos dois workflows parseado com sucesso.
-
Verificação estática confirma ausência de pré-exclusão local e presença de push único com
--atomic. -
Verificação estática confirma que a limpeza ocorre depois de
Create Release, usaif: success(), preserva a tag atual e não alcança outras séries ou famílias de tags. -
git diff --checklimpo.
Evidências
-
bash -n: 5/5 scripts aprovados. -
Parse YAML com
yaml@2: 2/2 workflows aprovados. -
Verificação estática: 5/5 scripts sem
OLD_TAGS,git push --deleteougit push --tags, cada um com exatamente umgit push --atomic originpara branch atual + nova tag. -
Verificação estática: 2/2 workflows com histórico completo de tags (
fetch-depth: 0), cleanup depois deCreate Release,if: success()e exclusão explícita da tag atual. -
Simulação local com múltiplas famílias/séries:
-
gestor-v2.9.40selecionou somentegestor-v2.9.38egestor-v2.9.39; -
instalador-v1.5.6selecionou somenteinstalador-v1.5.5; -
gestor-v2.8.*,gestor-v3.0.*,instalador-v1.4.*eplugin-*foram preservadas.
-
-
git diff --check: limpo. -
Review findings-first: sem findings.
-
Memória de execução: 3.820 bytes / 49 linhas, abaixo do alerta; nenhuma poda necessária.
-
Nível 1 respeitado: nenhum commit, push, deploy, criação/exclusão de tag real ou chamada mutável à API do GitHub.