Skip to content

fix(ci): stop -p:Version cascade in dotnet pack; bump Data 6.3.0; drop unmaintained packages#11

Merged
cloviscoli merged 1 commit into
masterfrom
claude/cleanup-broken-projectrefs
May 12, 2026
Merged

fix(ci): stop -p:Version cascade in dotnet pack; bump Data 6.3.0; drop unmaintained packages#11
cloviscoli merged 1 commit into
masterfrom
claude/cleanup-broken-projectrefs

Conversation

@cloviscoli

Copy link
Copy Markdown
Contributor

TL;DR

Codout.Framework.EF 6.3.0 está quebrado no NuGet porque declara Codout.Framework.Data >= 6.3.0, e Data 6.2.2 é a última versão publicada. Este PR:

  1. Conserta o bug do workflow que causou isso (-p:Version= cascateando pra ProjectReference).
  2. Bumpa Codout.Framework.Data → 6.3.0 (sem mudança de código/contrato; bump técnico pra fazer EF 6.3.0 voltar a resolver).
  3. Desabilita o release automatizado de três pacotes abandonados que nunca buildaram desde a renomeação de DAL → Data.

Root cause do EF 6.3.0 com dependência quebrada

release.yml e mcp-release.yml passavam dois flags pro dotnet pack:

dotnet pack EF.csproj \
  -p:Version=6.3.0 \
  -p:PackageVersion=6.3.0

-p:Version=X é uma propriedade MSBuild que cascata pra todos os projetos do build graph, incluindo ProjectReference. Durante o pack do EF, Version=6.3.0 vazou para o build do Codout.Framework.Data, e o .nuspec resultante declarou <dependency id="Codout.Framework.Data" version="6.3.0" /> — ignorando o <Version>6.2.2</Version> real do csproj.

-p:PackageVersion=X só afeta o pacote em si e não cascata. O fix é remover -p:Version= e manter só -p:PackageVersion=. Aplicado em ambos os workflows.

Bump técnico de Data → 6.3.0

Como o EF 6.3.0 já publicado tem essa dep quebrada e o NuGet não permite re-upload da mesma versão (mesmo após unlist), o caminho mais barato pra desbloquear consumidores é publicar Codout.Framework.Data 6.3.0 (sem mudanças de código — só bump de versão).

Após mergear este PR, basta tagear data-v6.3.0 em master:

git fetch origin master
git tag -a data-v6.3.0 <merge-sha> -m "Codout.Framework.Data 6.3.0"
git push origin data-v6.3.0

Próximos releases de EF (qualquer >= 6.3.1) já vão declarar a dependência de Data corretamente, pois o workflow não cascata mais.

Pacotes desabilitados pra publicar

Pacote Estado Por que tá quebrado
Codout.Framework.DP IsPackable=false Implementa IRepository<T> antigo (sem Where, AllReadOnly, WherePaged, Refresh, overloads de CancellationToken...). ProjectReference aponta pra pasta Codout.Framework.DAL que sumiu na renomeação pra Data.
Codout.Framework.NetCore.Repository.Cosmos IsPackable=false Target netcoreapp2.0 (fora de suporte desde 2018). SDK legado Microsoft.Azure.DocumentDB.Core 1.5.0 (substituído por Microsoft.Azure.Cosmos). ProjectReferences pra projetos Codout.Framework.NetStandard.* que não existem no repo.
Codout.Framework.NetCore.Repository.DocumentDB IsPackable=false Mesmo cenário do Cosmos.

Os três foram removidos de .github/release-packages.json (24 entries restantes). Source files preservados pra arqueologia. CLAUDE.md documenta o que seria preciso pra revivê-los e instrui AI agents a recusar pedidos de publish até serem modernizados.

Reforço no CLAUDE.md

Duas seções novas pra impedir regressão:

  • Pacotes excluídos do release automatizado — lista os três acima.
  • Cuidados ao usar dotnet pack — proíbe explicitamente -p:Version= e explica a armadilha do cascade.

Arquivos modificados

Arquivo Mudança
.github/workflows/release.yml Remove -p:Version= do pack
.github/workflows/mcp-release.yml Mesmo fix (defensivo — Mcp não tem ProjectReferences hoje)
.github/release-packages.json 27 → 24 entries (remove dp/cosmos/documentdb)
Codout.Framework.Data/Codout.Framework.Data.csproj 6.2.2 → 6.3.0
Codout.Framework.DP/Codout.Framework.DP.csproj IsPackable=false + comentário
src/NetCore/.../Cosmos.csproj IsPackable=false + comentário
src/NetCore/.../DocumentDB.csproj IsPackable=false + comentário
CHANGELOG.md Entries sob 2026-05-12
CLAUDE.md Seções "Pacotes excluídos" e "Cuidados com dotnet pack"

Test plan

  • Validar que o JSON de release-packages.json parsea (24 entries)
  • Confirmar que grep -n "p:Version=" .github/workflows/*.yml só encontra ocorrência dentro de comentário
  • Verificar que os três csproj abandonados têm <IsPackable>false</IsPackable>
  • Após merge: tagear data-v6.3.0 e confirmar publish no NuGet.org
  • Validar consumidor: dotnet add package Codout.Framework.EF --version 6.3.0 deve resolver sem erro

https://claude.ai/code/session_015jxScBEvdKkRwGvJTgK5Py


Generated by Claude Code

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
@cloviscoli cloviscoli merged commit a574ebd 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