Skip to content

Release 3.0.0-rc.1 readiness - #3

Open
rodri-oliveira-dev wants to merge 49 commits into
masterfrom
release/3.0.0-rc.1
Open

Release 3.0.0-rc.1 readiness#3
rodri-oliveira-dev wants to merge 49 commits into
masterfrom
release/3.0.0-rc.1

Conversation

@rodri-oliveira-dev

Copy link
Copy Markdown
Owner

Summary

This PR prepares the forked 3.0.0-rc.1 line against master, collecting the changes accumulated since the last published upstream version/tag (v2.0.0). It is intentionally opened as a draft so the release evidence and remaining publication decision can be reviewed before merge.

What changed since the last version

  • Added generated materialization contracts, source generator registration, generated flat/complex materializers, runtime fallback integration, and benchmark coverage.
  • Added persistence metadata for FluentMap properties, including read-only, computed, database default, key/identity/generated semantics, and Dommel integration for write operations.
  • Added advanced mapped query APIs, including mapped multiple-result reads, MappedGridReader, unbuffered reads, and async streaming.
  • Added property converter metadata and runtime/generated read conversion support, with analyzer/runtime validation for invalid or duplicate converter configuration.
  • Added isolated configuration support through immutable configuration snapshots, FluentMapRuntime, compatibility bridge behavior for the static API, and a new Dapper.FluentMap.DependencyInjection package.
  • Added analyzer/generator diagnostics and release tracking manifests for the new DFM001-DFM015 diagnostic surface.
  • Added provider compatibility tests, consumer smoke apps, package artifact validation, vulnerability audit, SourceLink/provenance validation evidence, and release workflow hardening.
  • Added public release documentation: CHANGELOG.md, COMPATIBILITY.md, MIGRATION.md, SUPPORT.md, and SDD evidence for Etapas 7-12 and the RC cycle.

Release and packaging notes

  • The intended package version is 3.0.0-rc.1; default local package output is guarded as development prerelease output rather than accidentally producing 2.0.0 or stable 3.0.0.
  • Package validation is enabled for runtime packages with lib/: Dapper.FluentMap, Dapper.FluentMap.Dommel, and Dapper.FluentMap.DependencyInjection.
  • Release artifact validation covers expected package IDs, versions, nuspec metadata, dependency ranges, package layout, repository metadata, README/license presence, and SHA-256 manifests.
  • Consumer smoke validates package consumption without ProjectReference for core, Dommel, Dependency Injection, analyzer, generator, and trimmed publish scenarios.

Known limitations / release status

  • 3.0.0-rc.1 publication was blocked because .sdd/release-3.0.0-rc.1/PUBLISH-AUTHORIZATION.md was absent.
  • No NuGet packages were published, no v3.0.0-rc.1 tag was created, and no GitHub Release was created as part of the recorded RC.6 outcome.
  • SQL Server and PostgreSQL provider certification remain conditional on real connection strings/services; SQLite is the automated provider-certified lane.
  • Native AOT is not claimed as fully supported; trimming smoke exists for explicit/generated registration paths.
  • Package signing, formal SBOM, and fork-owned API/binary baseline remain stable-release decisions/blockers.

Validation recorded in the branch

  • dotnet restore ./Dapper.FluentMap.sln
  • dotnet build ./Dapper.FluentMap.sln --configuration Release --no-restore
  • dotnet test ./Dapper.FluentMap.sln --configuration Release --no-build
  • provider compatibility tests with SQLite, with SQL Server/PostgreSQL skipped when connection strings are absent
  • dotnet pack ./Dapper.FluentMap.sln --configuration Release --no-build -p:Version=3.0.0-rc.1
  • eng/validate-release-artifacts.ps1
  • eng/consumer-smoke/run-consumer-smoke.ps1
  • SourceLink validation for package PDBs from remote artifacts
  • GitHub artifact attestation/provenance validation for remote artifacts
  • dotnet list ./Dapper.FluentMap.sln package --vulnerable --include-transitive

Review focus

  • Public API and binary compatibility policy for the fork-owned 3.0.0 line.
  • Whether the release workflow and publication authorization model are acceptable before retrying RC publication.
  • Whether remaining stable blockers should stay out of RC.1 or require an RC.2 before stable.

@rodri-oliveira-dev rodri-oliveira-dev self-assigned this Jul 29, 2026
@rodri-oliveira-dev
rodri-oliveira-dev marked this pull request as ready for review July 30, 2026 16:26

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 2315d89b3b

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +463 to +465
builder.Append(" = new ");
builder.Append(leaf.ReadConverter.ConverterTypeName);
builder.AppendLine("();");

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Reutilize a instância configurada do conversor gerado

Quando ConvertFromDatabaseUsing<TConverter, TDatabase>() usa um conversor com estado por instância ou inicialização dependente do ambiente, este campo cria uma segunda instância global, diferente daquela criada e armazenada no PropertyMap. Como o materializador é selecionado comparando apenas os tipos do conversor, consultas geradas passam a produzir resultados diferentes do fallback e runtimes isolados compartilham indevidamente o mesmo conversor estático; registre o materializador com a instância capturada pela configuração ou não gere esse caminho sem poder preservá-la.

AGENTS.md reference: AGENTS.md:L176-L180

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: In Progress

Development

Successfully merging this pull request may close these issues.

1 participant