|
| 1 | +# Política de Dependências entre Projetos Simplicio |
| 2 | + |
| 3 | +Status: aprovada — vigente a partir de 2026-05-28 (issue #21). |
| 4 | + |
| 5 | +## Projetos do ecossistema |
| 6 | + |
| 7 | +| Pacote | Repo | Ecossistema | Versão atual | |
| 8 | +|---|---|---|---| |
| 9 | +| `simplicio-cli` | `wesleysimplicio/simplicio-dev-cli` | PyPI | 0.4.0 | |
| 10 | +| `simplicio-mapper` | `wesleysimplicio/simplicio-mapper` | PyPI + npm | 0.5.0 | |
| 11 | +| `simplicio-prompt` | `wesleysimplicio/simplicio-prompt` | PyPI + npm | 1.7.0 | |
| 12 | +| `simplicio-sprint` | `wesleysimplicio/simplicio-sprint` | PyPI | (verificar) | |
| 13 | +| `simplicio-core` | `wesleysimplicio/simplicio-dev-cli/rust/simplicio-core` | Local extension (futuro PyPI) | 0.1.0 | |
| 14 | + |
| 15 | +## Princípios |
| 16 | + |
| 17 | +1. **Semver consistente.** Todos os pacotes seguem |
| 18 | + [Semantic Versioning](https://semver.org/spec/v2.0.0.html) (`MAJOR.MINOR.PATCH`). |
| 19 | +2. **Pin por floor, não por exato.** Dependências entre projetos do |
| 20 | + ecossistema usam o operador `>=` na versão mais recente publicada no |
| 21 | + momento do release (`simplicio-mapper>=0.5.0`, não `==0.5.0`). |
| 22 | + Compatibilidade futura inclusiva por padrão. |
| 23 | +3. **Sem dependência cíclica.** Um pacote NUNCA depende de outro pacote |
| 24 | + que dependa dele transitivamente. A ordem do grafo é: |
| 25 | + `simplicio-mapper → simplicio-prompt → simplicio-cli`. |
| 26 | +4. **Atualização ativa.** Quando um pacote do ecossistema lança nova |
| 27 | + versão, todos os dependentes devem bumpar o floor em até **15 dias** |
| 28 | + se a versão nova for backward-compatible (minor / patch). Releases |
| 29 | + major exigem PR de migração com nota no CHANGELOG. |
| 30 | + |
| 31 | +## Processo de release-sync |
| 32 | + |
| 33 | +Quando publicar uma nova versão de um pacote do ecossistema, o autor |
| 34 | +**na mesma janela**: |
| 35 | + |
| 36 | +1. Bumpa `version` no `pyproject.toml` (e `package.json` para os pacotes |
| 37 | + duplos npm). |
| 38 | +2. Atualiza `CHANGELOG.md` com a seção `[X.Y.Z]` (Added / Changed / |
| 39 | + Fixed / Removed). |
| 40 | +3. Constrói + publica: |
| 41 | + - PyPI: `python -m build && twine upload dist/*` |
| 42 | + - npm (quando aplicável): `npm publish --access public` |
| 43 | +4. Cria a tag `vX.Y.Z` e empurra (`git push origin vX.Y.Z`). |
| 44 | +5. Cria GitHub Release apontando para a tag, com o body = seção |
| 45 | + `[X.Y.Z]` do CHANGELOG. |
| 46 | +6. Abre um issue + PR em cada pacote dependente bumpando o floor |
| 47 | + (ex.: `simplicio-cli` recebe `simplicio-mapper>=0.6.0`). |
| 48 | + |
| 49 | +## Verificação automática (CI) |
| 50 | + |
| 51 | +- `.github/workflows/check-deps.yml` roda diariamente em `master` e em |
| 52 | + cada PR. Compara as versões pinadas em `pyproject.toml` contra a |
| 53 | + última versão pública no PyPI de cada dependência do ecossistema; se |
| 54 | + o floor estiver atrasado em pelo menos 1 minor, abre/atualiza uma |
| 55 | + issue automática `chore(deps): bump <pkg> floor`. |
| 56 | +- `.github/dependabot.yml` configura updates automáticos para |
| 57 | + `pip` (deps Python) e `cargo` (crate Rust), com schedule semanal |
| 58 | + e auto-merge de patches via `dependabot/auto-merge`. Updates major |
| 59 | + ficam manuais. |
| 60 | + |
| 61 | +## Quando relaxar a política |
| 62 | + |
| 63 | +A regra de 15 dias pode ser estendida quando: |
| 64 | + |
| 65 | +- A release upstream introduziu uma regressão conhecida (registrar no |
| 66 | + issue de bump com link para o issue upstream). |
| 67 | +- O downstream está em meio a um refactor maior que tornaria o bump |
| 68 | + pouco produtivo. Nesse caso, anotar no `CHANGELOG.md` `Known: held at |
| 69 | + <pkg> X.Y` e abrir um issue de tracking. |
| 70 | + |
| 71 | +## Histórico |
| 72 | + |
| 73 | +- 2026-05-28 — política inicial criada via issue #21. |
0 commit comments