Skip to content

chore: align all packable packages at 6.3.0 as per-package baseline#12

Merged
cloviscoli merged 2 commits into
masterfrom
claude/baseline-alignment-6.3.0
May 12, 2026
Merged

chore: align all packable packages at 6.3.0 as per-package baseline#12
cloviscoli merged 2 commits into
masterfrom
claude/baseline-alignment-6.3.0

Conversation

@cloviscoli

Copy link
Copy Markdown
Contributor

Resumo

Alinha todos os pacotes publicáveis do Codout.Framework em 6.3.0 como ponto zero do versionamento per-pacote. Bump técnico nos 22 pacotes que ainda estavam em 6.2.2 (EF e Data já foram para 6.3.0 nos PRs anteriores).

Por que alinhar tudo agora

Sem este alinhamento, o ecosystem ficaria assim no NuGet:

Pacote Versão Por quê
Codout.Framework.EF 6.3.0 Fix do SaveOrUpdate
Codout.Framework.Data 6.3.0 Bump técnico (PR #11)
Outros 22 6.2.2 Não tiveram alteração

Isso gera três problemas que o alinhamento resolve:

  1. Carga mental: "esse pacote está em 6.2.2 ou 6.3.0?" — consumidor e dev precisam consultar caso a caso.
  2. Risco de recorrência do bug do EF: qualquer ProjectReference cruzada futura entre pacotes do ecosystem pode esbarrar de novo no problema de dependência (apesar do workflow fix do PR fix(ci): stop -p:Version cascade in dotnet pack; bump Data 6.3.0; drop unmaintained packages #11, ter floor uniforme é defesa em profundidade).
  3. Vitrine inconsistente no NuGet: usuário olha a página de cada pacote e vê números diferentes sem motivo aparente.

Após esta PR, a história é simples: todos os pacotes saem em 6.3.0 juntos; daqui pra frente cada um diverge conforme suas mudanças reais. É o mesmo padrão que Microsoft.Extensions.* 8.0.0 adota (todos saem juntos no major.minor, divergem nos patches).

Trade-off explícito

Publicar 22 pacotes em 6.3.0 que não têm mudança de código pode ser visto como poluição de versões. Mitigantes:

  • Como o ecosystem é interno/single-org, o "ruído" não impacta consumidores externos descobrindo o pacote.
  • A entrada no CHANGELOG nomeia explicitamente quais pacotes tiveram mudança real (EF e Data) versus os 22 que receberam bump técnico — auditável.
  • --skip-duplicate no mass-release garante idempotência: rodar de novo é safe.

Escopo

Incluído (22 pacotes, 6.2.2 → 6.3.0):

Codout.DynamicLinq, Codout.Framework.Api, Codout.Framework.Api.Client, Codout.Framework.Api.Dto, Codout.Framework.Application, Codout.Framework.Common, Codout.Framework.Domain, Codout.Framework.Mongo, Codout.Framework.NH, Codout.Framework.Storage, Codout.Framework.Storage.Azure, Codout.Image.Extensions, Codout.Mailer, Codout.Mailer.AWS, Codout.Mailer.Razor, Codout.Mailer.SendGrid, Codout.Multitenancy, Softprime.Multitenancy, Codout.Security.Argon2, Codout.Security.Bcrypt, Codout.Security.Core, Codout.Security.Scrypt

Não incluído:

Ordem de merge

Este PR depende do PR #11 (workflow fix + Data 6.3.0 + cleanup). Ordem:

  1. PR fix(ci): stop -p:Version cascade in dotnet pack; bump Data 6.3.0; drop unmaintained packages #11 → master (corrige cascade do -p:Version=, bumpa Data, desliga abandonados).
  2. PR chore: align all packable packages at 6.3.0 as per-package baseline #12 (este) → master (alinhamento dos 22).
  3. Actions → "Mass Release":
    • Run 1: confirm: PUBLISH, include_mcp: false, dry_run: true. Revisar os 24 .nupkg no artifact.
    • Run 2: idem com dry_run: false. --skip-duplicate no-op em EF/Data já publicados; os 22 sobem fresh.

Após esses passos, a vitrine do NuGet fica uniforme em 6.3.0 e o próximo release de qualquer pacote será um bump real (patch/minor/major) sob o esquema individual.

Mudanças

  • 22 csproj com <Version>6.2.2</Version><Version>6.3.0</Version>.
  • CHANGELOG.md: nova subseção ### Build**Baseline alignment** listando explicitamente os 22 pacotes que receberam bump técnico. A linha antiga ("Pacotes que não tiveram alteração ficaram congelados em 6.2.2") foi removida — não é mais verdadeira.

Test plan

  • Confirmar que todos os 24 csproj public�veis (todos do release-packages.json) declaram <Version>6.3.0</Version>
  • Validar parse do CHANGELOG.md
  • Após merge: dispatch mass-release.yml em dry-run e revisar a lista de .nupkg gerados (deve ter 24)
  • Re-dispatch com dry_run: false e confirmar que --skip-duplicate ignora EF 6.3.0 e Data 6.3.0 (já publicados) e sobe os 22 novos
  • Sanity check num consumidor: dotnet add package Codout.Framework.<qualquer> --version 6.3.0 resolve

https://claude.ai/code/session_015jxScBEvdKkRwGvJTgK5Py


Generated by Claude Code

claude added 2 commits May 12, 2026 19:52
Two coupled fixes for the broken Codout.Framework.EF 6.3.0 release plus
cleanup of three abandoned packages.

## Workflow fix (root cause)

release.yml and mcp-release.yml were passing both -p:Version= and
-p:PackageVersion= to dotnet pack. Setting Version cascades through the
entire build graph: every ProjectReference also inherits Version=X,
which silently rewrites dependency entries in the generated .nuspec.

That is why the already-published Codout.Framework.EF 6.3.0 declares
"<dependency id=Codout.Framework.Data version=6.3.0 />" even though
Codout.Framework.Data.csproj has <Version>6.2.2</Version> on master:
during the EF pack, -p:Version=6.3.0 leaked into Data too. Consumers
running `dotnet restore` after upgrading to EF 6.3.0 fail with
"Unable to find package Codout.Framework.Data with version >= 6.3.0".

Fix: drop -p:Version= entirely; the .csproj already pins the package
version. Keep -p:PackageVersion= so workflow_dispatch can still override
the outgoing package version without affecting ProjectReference
resolution.

## Codout.Framework.Data 6.3.0

Bump Codout.Framework.Data to 6.3.0 with no code/contract changes, so
that the already-published EF 6.3.0 (which incorrectly demands Data
>= 6.3.0) starts resolving on NuGet. Future EF builds will declare the
correct Data version because of the workflow fix above.

## Drop unmaintained packages from the release surface

Codout.Framework.DP, Cosmos repository, and DocumentDB repository have
been broken for years:

- DP implements an old IRepository<T> shape (Find instead of Where, no
  AllReadOnly/WherePaged/Refresh/CancellationToken overloads, etc.) and
  still references the legacy "Codout.Framework.DAL" folder that no
  longer exists.
- Cosmos and DocumentDB target netcoreapp2.0 (out of support since
  2018), use the deprecated Microsoft.Azure.DocumentDB.Core SDK, and
  reference Codout.Framework.NetStandard.* projects that are not in the
  repo at all.

All three csproj now declare <IsPackable>false</IsPackable> and have
been removed from .github/release-packages.json (24 entries remain).
release.yml and mass-release.yml therefore skip them. Source files are
kept for archaeology; CLAUDE.md spells out what would be needed to
revive each one.

## CLAUDE.md

Added two prescriptive sections:

- "Pacotes excluídos do release automatizado" — names the three above
  and tells future AI agents to refuse a publish request until the
  package is modernized.
- "Cuidados ao usar dotnet pack" — explicitly forbids -p:Version= and
  explains the cascade trap, so the same bug does not get reintroduced.

## Operational follow-up after merge

The user should tag `data-v6.3.0` against master. release.yml (with
the fix above) will pack and push Codout.Framework.Data 6.3.0 to
NuGet.org, at which point the already-published EF 6.3.0 starts to
restore cleanly without reverting any csproj.

https://claude.ai/code/session_015jxScBEvdKkRwGvJTgK5Py
Bump the 22 packages that previously stayed at 6.2.2 to 6.3.0, so the
whole Codout.Framework ecosystem starts the per-package versioning
era from a single, consistent floor.

Rationale:

- Avoid the ambiguity of "some packages at 6.2.2, some at 6.3.0":
  consumers and downstream tooling now see a uniform 6.3.0 baseline
  on NuGet.
- Any future ProjectReference dependency from one Codout package to
  another will have 6.3.0 available as a valid floor.
- Pacotes sem mudança real recebem bump técnico (sem alteração de
  código ou contrato). Trade-off: leve poluição de versões em troca
  de eliminar carga mental e prevenir o sintoma que afetou EF 6.3.0.

Out of scope:

- Codout.Framework.Mcp continues on its own cadence via
  mcp-release.yml (CLI tool with --validate step).
- Codout.Framework.DP, Cosmos and DocumentDB stay IsPackable=false
  (see PR for the workflow + cleanup that landed first).

Operational follow-up after merge:

1. Merge PR #11 (workflow fix + Data 6.3.0 + cleanup) first.
2. Merge this PR (baseline alignment).
3. Actions → "Mass Release" → confirm: PUBLISH, dry_run: true.
4. Review artifacts, then re-dispatch with dry_run: false.
5. --skip-duplicate makes EF 6.3.0 and Data 6.3.0 a no-op on the
   second run; the other 22 publish fresh.

https://claude.ai/code/session_015jxScBEvdKkRwGvJTgK5Py
@cloviscoli cloviscoli merged commit 2c1f3ae into master May 12, 2026
1 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants