Versionamento
Quando usar
- Acionar pela
$specsfy-specialist-deploy ao preparar release, imagem
destinada a deploy, tag Git ou promoção entre ambientes.
- Em pedido completo de release ou deploy, devolver a coordenação para
$specsfy-specialist-deploy depois de preparar e conferir a versão.
- Não publicar imagem, tag, GitHub Release nem executar deploy sem autorização
explícita. A preparação local pode criar ou atualizar
SEMVER.
Fluxo
- Localizar a raiz do projeto e ler
SEMVER, tags Git, changelog e artefatos
relacionados à entrega.
- Criar
SEMVER somente quando ele estiver ausente e a versão inicial tiver
sido confirmada.
- Classificar a alteração como
patch, minor ou major, explicar o efeito
e propor a próxima versão antes de escrever.
- Atualizar
SEMVER durante a preparação autorizada e propagar o mesmo valor
para metadados, imagem e manifestos que pertencem à entrega.
- Executar testes e conferir que a versão é superior à publicação anterior.
- Quando houver autorização para publicar, enviar primeiro o artefato
imutável. Criar a tag Git e a GitHub Release somente depois que o artefato
estiver disponível.
- Entregar a versão, o digest, o commit, os ambientes alcançados e os comandos
de reversão.
Padrões
- Manter
SEMVER na raiz com uma única versão estável MAJOR.MINOR.PATCH e
quebra de linha final.
- Usar
patch para correção compatível, minor para capacidade compatível e
major para mudança incompatível.
- Tratar
SEMVER como fonte da versão preparada. Tags Git, anotações OCI,
changelog e referência da stack devem reproduzir o mesmo valor.
- Publicar imagens com tag SemVer e commit, registrar o digest e fazer o deploy
por digest quando a plataforma permitir.
- Conferir se uma tag imutável já existe antes do push. Nunca substituir uma
imagem ou tag publicada.
- Usar o utilitário local para operações determinísticas:
node scripts/semver.mjs current --project .
node scripts/semver.mjs bump patch --project .
node scripts/semver.mjs verify 1.4.1 --project .
node scripts/semver.mjs docker-tag registry.example/app --project .
node scripts/semver.mjs verify-docker-tag registry.example/app:1.4.1 --project .
Ao instalar a skill, ajuste o primeiro caminho para apontar para
specsfy-specialist-versioning/scripts/semver.mjs dentro da biblioteca de
skills do agente.
Antipadrões
- Usar
latest como identidade de uma entrega.
- Alterar
SEMVER depois que a imagem já foi compilada com outro valor.
- Criar a tag Git antes de confirmar a presença da imagem no registry.
- Recompilar o mesmo número para corrigir uma publicação. Prepare um novo
incremento.
- Misturar a preparação local com autorização implícita para publicar ou
alterar um ambiente remoto.
Validação
- Executar
current e verify para confirmar o conteúdo de SEMVER.
- Gerar a tag Docker com
docker-tag e executar verify-docker-tag antes do
build, push ou deploy; uma tag diferente do SEMVER interrompe o fluxo.
- Comparar a versão com a tag Git anterior e recusar valor igual ou inferior.
- Comparar
SEMVER, tag da imagem, anotações OCI, changelog e manifesto de
deploy.
- Confirmar o digest publicado antes de criar a tag Git.
- Conferir que o rollback aponta para uma versão e um digest já disponíveis.
Skills relacionadas
$specsfy-specialist-deploy é a única responsável por coordenar o fluxo
completo de release ou deploy.
$specsfy-specialist-docker constrói e publica a imagem identificada pela
versão preparada aqui.
$specsfy-specialist-docker-swarm aplica no cluster a imagem e o digest
conferidos por esta skill.
$specsfy-specialist-ansible transporta os manifestos versionados e executa
o preflight nos hosts.
$specsfy-specialist-delivery-engineering coordena testes, promoção, tag e
GitHub Release.
Leia references/standards.md para a correspondência
entre SemVer, Git, imagens OCI e a sequência de publicação.
1---2name: specsfy-specialist-versioning3description: Gerenciar a versão do sistema pelo SEMVER da raiz e validar tags Docker. Use como apoio focal da `$specsfy-specialist-deploy`.4---56# Versionamento78## Quando usar910- Acionar pela `$specsfy-specialist-deploy` ao preparar release, imagem11 destinada a deploy, tag Git ou promoção entre ambientes.12- Em pedido completo de release ou deploy, devolver a coordenação para13 `$specsfy-specialist-deploy` depois de preparar e conferir a versão.14- Não publicar imagem, tag, GitHub Release nem executar deploy sem autorização15 explícita. A preparação local pode criar ou atualizar `SEMVER`.1617## Fluxo18191. Localizar a raiz do projeto e ler `SEMVER`, tags Git, changelog e artefatos20 relacionados à entrega.212. Criar `SEMVER` somente quando ele estiver ausente e a versão inicial tiver22 sido confirmada.233. Classificar a alteração como `patch`, `minor` ou `major`, explicar o efeito24 e propor a próxima versão antes de escrever.254. Atualizar `SEMVER` durante a preparação autorizada e propagar o mesmo valor26 para metadados, imagem e manifestos que pertencem à entrega.275. Executar testes e conferir que a versão é superior à publicação anterior.286. Quando houver autorização para publicar, enviar primeiro o artefato29 imutável. Criar a tag Git e a GitHub Release somente depois que o artefato30 estiver disponível.317. Entregar a versão, o digest, o commit, os ambientes alcançados e os comandos32 de reversão.3334## Padrões3536- Manter `SEMVER` na raiz com uma única versão estável `MAJOR.MINOR.PATCH` e37 quebra de linha final.38- Usar `patch` para correção compatível, `minor` para capacidade compatível e39 `major` para mudança incompatível.40- Tratar `SEMVER` como fonte da versão preparada. Tags Git, anotações OCI,41 changelog e referência da stack devem reproduzir o mesmo valor.42- Publicar imagens com tag SemVer e commit, registrar o digest e fazer o deploy43 por digest quando a plataforma permitir.44- Conferir se uma tag imutável já existe antes do push. Nunca substituir uma45 imagem ou tag publicada.46- Usar o utilitário local para operações determinísticas:4748```bash49node scripts/semver.mjs current --project .50node scripts/semver.mjs bump patch --project .51node scripts/semver.mjs verify 1.4.1 --project .52node scripts/semver.mjs docker-tag registry.example/app --project .53node scripts/semver.mjs verify-docker-tag registry.example/app:1.4.1 --project .54```5556Ao instalar a skill, ajuste o primeiro caminho para apontar para57`specsfy-specialist-versioning/scripts/semver.mjs` dentro da biblioteca de58skills do agente.5960## Antipadrões6162- Usar `latest` como identidade de uma entrega.63- Alterar `SEMVER` depois que a imagem já foi compilada com outro valor.64- Criar a tag Git antes de confirmar a presença da imagem no registry.65- Recompilar o mesmo número para corrigir uma publicação. Prepare um novo66 incremento.67- Misturar a preparação local com autorização implícita para publicar ou68 alterar um ambiente remoto.6970## Validação7172- Executar `current` e `verify` para confirmar o conteúdo de `SEMVER`.73- Gerar a tag Docker com `docker-tag` e executar `verify-docker-tag` antes do74 build, push ou deploy; uma tag diferente do `SEMVER` interrompe o fluxo.75- Comparar a versão com a tag Git anterior e recusar valor igual ou inferior.76- Comparar `SEMVER`, tag da imagem, anotações OCI, changelog e manifesto de77 deploy.78- Confirmar o digest publicado antes de criar a tag Git.79- Conferir que o rollback aponta para uma versão e um digest já disponíveis.8081## Skills relacionadas8283- `$specsfy-specialist-deploy` é a única responsável por coordenar o fluxo84 completo de release ou deploy.85- `$specsfy-specialist-docker` constrói e publica a imagem identificada pela86 versão preparada aqui.87- `$specsfy-specialist-docker-swarm` aplica no cluster a imagem e o digest88 conferidos por esta skill.89- `$specsfy-specialist-ansible` transporta os manifestos versionados e executa90 o preflight nos hosts.91- `$specsfy-specialist-delivery-engineering` coordena testes, promoção, tag e92 GitHub Release.9394Leia [references/standards.md](references/standards.md) para a correspondência95entre SemVer, Git, imagens OCI e a sequência de publicação.