🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 bn · 🇧🇦 bs · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇬🇷 el · 🇪🇸 es · 🇪🇪 et · 🇮🇷 fa · 🇫🇮 fi · 🇫🇷 fr · 🇮🇪 ga · 🇮🇳 gu · 🇳🇬 ha · 🇮🇱 he · 🇮🇳 hi · 🇭🇷 hr · 🇭🇺 hu · 🇦🇲 hy · 🇮🇩 id · 🇳🇬 ig · 🇮🇹 it · 🇯🇵 ja · 🇬🇪 ka · 🇰🇭 km · 🇮🇳 kn · 🇰🇷 ko · 🇱🇹 lt · 🇱🇻 lv · 🇮🇳 ml · 🇮🇳 mr · 🇲🇾 ms · 🇲🇹 mt · 🇲🇲 my · 🇳🇵 ne · 🇳🇱 nl · 🇳🇴 no · 🇮🇳 or · 🇮🇳 pa · 🇵🇭 phi · 🇵🇱 pl · 🇧🇷 pt-BR · 🇷🇴 ro · 🇷🇺 ru · 🇱🇰 si · 🇸🇰 sk · 🇸🇮 sl · 🇷🇸 sr · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW
O OmniRoute utiliza um modelo de lançamento de ciclos paralelos: um ramo dedicado release/vX.Y.Z
para o ciclo ativo, main para a linha publicada e uma etiqueta imutável
vX.Y.Z quando esse ciclo é lançado. É normal ver commits a chegar a release/* e a
main — não se trata de um engano.
Os detalhes para os responsáveis pela manutenção encontram-se em CLAUDE.md (Regra Rígida n.º 21) e
RELEASE_CHECKLIST.md. Esta página é o resumo público
destinado aos contribuidores.
| Referência | Função |
|---|---|
release/vX.Y.Z |
Ciclo ativo — desenvolvimento diário e integração de PRs para essa versão |
main |
Linha publicada — recebe o ciclo através de squash-merge quando a versão é lançada |
vX.Y.Z (etiqueta) |
Marcador de lançamento — ponteiro imutável para «o que foi lançado», criado no momento do lançamento |
flowchart LR
A["ramo feat/fix"] --> B["PR → release/vX.Y.Z"]
B --> C["ponta de release/vX.Y.Z"]
C --> D["O PR de lançamento faz squash-merge → main"]
D --> E["Etiqueta vX.Y.Z"]
C --> F["Ciclo seguinte: release/vX+1 criado a partir da ponta congelada"]
Defina como destino o ramo ativo release/vX.Y.Z — não main.
- Encontre o ramo
release/v*aberto com a versão mais elevada (exemplo no momento da redação:release/v3.8.49). - Crie um ramo a partir dessa ponta (
git fetch+ checkout / rebase sobre a mesma). - Abra o PR com base = esse
release/vX.Y.Z.
main não é o ramo de integração diária. Os PRs abertos contra main
normalmente têm de ser redirecionados antes da integração.
Quando um lançamento está a ser reconciliado, é aberta uma issue marcadora com a etiqueta release-freeze.
Isto não interrompe o desenvolvimento:
- O
release/vX.Y.Zcongelado fica a cargo do responsável por esse lançamento. - O
release/vX+1do ciclo seguinte é criado a partir da ponta congelada, para que os contribuidores possam continuar a integrar trabalho. - Os PRs abertos que ainda tenham como destino o ramo congelado devem ser redirecionados para o
ramo
release/v*ativo (com a versão mais elevada).
Verifique se existe um congelamento aberto antes de assumir que o ramo pretendido aceita integrações:
gh issue list --repo diegosouzapw/OmniRoute --label release-freeze --state openA mecânica de integração (etiqueta queue do proprietário → Mergify) está documentada em
MERGE_TRAIN.md.
| Artefacto | Duração | Finalidade |
|---|---|---|
release/vX.Y.Z |
Ciclo em curso | Reúne PRs revistos, mantém o CI verde e serve de base para os PRs |
Etiqueta vX.Y.Z |
Permanente | Marca os elementos exatos que foram lançados no npm / GitHub Releases |
O ramo é a oficina; a etiqueta é o pacote selado. Após o squash-merge para
main, o ciclo seguinte prossegue em release/vX+1 sem esperar que o PR do
lançamento anterior termine.
- CONTRIBUTING.md — configuração, testes e lista de verificação do PR
- RELEASE_CHECKLIST.md — validação antes do lançamento
- MERGE_TRAIN.md — fila de integração e processo de contingência
- RELEASE_GREEN.md — manter verde a ponta do ramo de lançamento