chore: align all packable packages at 6.3.0 as per-package baseline#12
Merged
Conversation
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Resumo
Alinha todos os pacotes publicáveis do
Codout.Frameworkem6.3.0como ponto zero do versionamento per-pacote. Bump técnico nos 22 pacotes que ainda estavam em6.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:
Codout.Framework.EFSaveOrUpdateCodout.Framework.DataIsso gera três problemas que o alinhamento resolve:
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.0que não têm mudança de código pode ser visto como poluição de versões. Mitigantes:--skip-duplicateno 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.ScryptNão incluído:
Codout.Framework.EF(já em 6.3.0 com mudança real)Codout.Framework.Data(já em 6.3.0 com bump técnico via PR fix(ci): stop -p:Version cascade in dotnet pack; bump Data 6.3.0; drop unmaintained packages #11)Codout.Framework.Mcp(ciclo próprio viamcp-release.yml, CLI tool com--validate)Codout.Framework.DP,Cosmos,DocumentDB(IsPackable=falsedesde PR fix(ci): stop -p:Version cascade in dotnet pack; bump Data 6.3.0; drop unmaintained packages #11)Ordem de merge
Este PR depende do PR #11 (workflow fix + Data 6.3.0 + cleanup). Ordem:
-p:Version=, bumpa Data, desliga abandonados).confirm: PUBLISH,include_mcp: false,dry_run: true. Revisar os 24.nupkgno artifact.dry_run: false.--skip-duplicateno-op em EF/Data já publicados; os 22 sobem fresh.Após esses passos, a vitrine do NuGet fica uniforme em
6.3.0e o próximo release de qualquer pacote será um bump real (patch/minor/major) sob o esquema individual.Mudanças
<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
<Version>6.3.0</Version>mass-release.ymlem dry-run e revisar a lista de.nupkggerados (deve ter 24)dry_run: falsee confirmar que--skip-duplicateignora EF 6.3.0 e Data 6.3.0 (já publicados) e sobe os 22 novosdotnet add package Codout.Framework.<qualquer> --version 6.3.0resolvehttps://claude.ai/code/session_015jxScBEvdKkRwGvJTgK5Py
Generated by Claude Code