Repository navigation
[Generated coverage] Certify strict support matrix, compatibility and cumulative delivery #232
Description
Parent and role
Final delivery/validation task for #227. Current main already contains generated nested/value-object materialization, typed property converters, GeneratedParameters and a bounded Native AOT smoke. #230 is closed and its implementation must not be repeated.
This issue validates remaining #228, #229 and #231 work, and transfers #230's unproven regression/TypeHandler boundary evidence to the appropriate roadmap.
Goal
Demonstrate exact runtime/generated/strict parity and publish a truthful coverage and compatibility contract, with a single cumulative PR and a justified future SemVer target. Candidate release target: v3.7.0, subject to the final SemVer/compatibility gate below.
Required support matrix
For each scenario show runtime, generated non-strict, strict-generated, Native AOT tested, and unsupported/limitations, with links to test evidence:
- Mutable root / immutable constructor;
- explicit
ConstructUsingfactory, including unsupported captures; - nested objects / component value objects / null children;
- property converters, TypeHandler precedence and reflective adapter limitation ([3.8] Inventory reflection and dynamic-code boundaries for the AOT-safe subset #240);
- parameterless commands /
GeneratedParameters/ new typed generated binder; - profile and isolated-runtime behavior;
- renamed/reordered/safe-extra/missing/ambiguous reader columns;
- null/DBNull, provider CLR conversions including current
DateOnly/TimeOnlysupport.
No undocumented claim of full Native AOT support.
Cumulative verification
- Generator/analyzer, runtime, strict and generated consumer tests, positive/negative conversion/shape diagnostics and equivalent result/error behavior.
- Relevant SQLite and required real-provider matrix, plus bounded Native AOT/trim-smoke; warning policy remains explicit.
- Benchmarks including generated materialization with converters, factory, nested and typed-parameter scenarios; record allocations and repeatability. Existing [Roadmap] Add continuous benchmark history and performance observability #219–[Docs] Document continuous benchmark history and finalize the performance roadmap #223 dashboard is optional, not a blocker.
- Public API baselines, package metadata, CI/release governance, SourceLink where relevant, CodeQL, Sonar and docs-generation checks.
Docs and delivery
- Update README/USAGE/COMPATIBILITY/MIGRATION/CHANGELOG and appropriate EN/PT-BR portal source content, regenerating generated pages rather than editing them by hand.
- Reconcile current Dapper support with
[2.1.89,3.0.0)and known TypeHandler AOT limit; coordinate with [3.8] Inventory reflection and dynamic-code boundaries for the AOT-safe subset #240 without blocking unrelated strict support. - Baseline verified on 2026-10-29:
v3.6.1is published (https://github.com/rodri-oliveira-dev/Dapper-FluentMap/releases/tag/v3.6.1). Recheck the latest release/tag andmainwhen starting and before finalizing; do not reuse or amend 3.6.1. - Prepare
v3.7.0as the intended next MINOR release if the cumulative [Roadmap] Expand strict-generated coverage after FluentMap 3.6.1 #227 diff adds the planned backward-compatible functionality and no newer release/tag or breaking change invalidates that target. Run.agents/skills/semantic-versioning/SKILL.mdagainst the actual cumulative diff; record the SemVer rationale in the PR. If the evidence requires another version or identifies breaking changes, stop automatic version selection, document the finding and request explicit maintainer authorization for a major or different release target. - Release-preparation changes belong in the final cumulative PR: update the canonical version source (including
Directory.Build.propswhere applicable), assembly/package/version properties, central packaging and release metadata, and any other references that build/package/release validation actually consumes. Keep all version references coherent and avoid broad incidental rewrites. - Bring
CHANGELOG.mdout ofUnreleasedinto a3.7.0entry (preserving historical release notes); prepare release notes for the implemented features, behavioral limits, compatibility and migration impact. Update README, USAGE, COMPATIBILITY, MIGRATION and EN/PT-BR documentation/portal references that advertise the current or upcoming version. Regenerate derived documentation rather than hand-editing it. - Validate that the package and release pipelines resolve
3.7.0from their authoritative inputs and that the PR build produces correctly versioned, installable artifacts; test assembly/NuGet metadata, package dependency constraints, CI/tag conditions and docs links. Do not create thev3.7.0tag, publish NuGet packages or publish a GitHub Release in this roadmap: keep publication in the separately governed release workflow. - Review
roadmap/generated-coverage-followupsagainst latestmain, push final fixes, open one PR and link/close [Roadmap] Expand strict-generated coverage after FluentMap 3.6.1 #227, [Generated coverage] Support statically resolvable ConstructUsing factories in strict mode #228, [Generated coverage] Audit and close strict nested/value-object materialization gaps #229, [Generated coverage] Add source-generated typed parameter binders for strict queries #231, [Generated coverage] Certify strict support matrix, compatibility and cumulative delivery #232 on merge. Do not include [3.6] Generate property conversion paths and harden TypeHandler interoperability #230 among the closure keywords.
Out of scope
- Repeating existing [3.6] Generate property conversion paths and harden TypeHandler interoperability #230 converter implementation, rewriting stable nested-generation behavior, declaring general Native AOT support, hard-gating noisy hosted-runner performance.
- A second unrelated architectural roadmap or direct package publication.
DoR
- Revised [Generated coverage] Support statically resolvable ConstructUsing factories in strict mode #228/[Generated coverage] Audit and close strict nested/value-object materialization gaps #229/[Generated coverage] Add source-generated typed parameter binders for strict queries #231 acceptance criteria met, or any unsupported shape explicitly excluded and justified.
- Mainline baseline and required CI/provider/AOT expectations available.
- Confirm
v3.6.1is published and check for any newer release/tag or version edits before selecting the final target. - Verify
.agents/skills/semantic-versioning/SKILL.md, planned additive feature diff and compatibility evidence to justify3.7.0or document a required alternate target.
Acceptance
- Matrix accurately separates supported/unsupported runtime, generated, strict and AOT-tested cases.
- Newly supported paths have explicit equivalence, failure and (where claimed) AOT evidence.
- No hidden strict fallback or unresolved material regression remains.
- Existing API, provider and package contracts preserved unless change has an approved SemVer rationale.
-
3.7.0is explicitly justified as a MINOR increment over published3.6.1, or an alternate version has a documented compatibility rationale and explicit approval before metadata changes. - Version sources, NuGet/assembly metadata, changelog, release notes, bilingual docs and release pipeline agree on the chosen version without creating any tag or publication.
DoD
- Relevant full CI, package, PublicAPI, benchmark, provider, CodeQL/Sonar checks pass or unrelated limitations are documented.
- Documentation reflects actual tested support and the TypeHandler risk tracked in [3.8] Inventory reflection and dynamic-code boundaries for the AOT-safe subset #240.
- The cumulative PR includes release preparation for the SemVer-approved target (expected
3.7.0): canonical version values (includingDirectory.Build.propswhere relevant), package/release configuration,CHANGELOG.md, draft release notes and current-version references in EN/PT-BR documentation. - Verify the built package's version/dependency metadata and the release workflow's version resolution; no
v3.7.0tag, GitHub Release or NuGet publication occurs as part of roadmap implementation. - One cumulative PR merged to
main, closing only current open roadmap issues. - No NuGet publication claimed until the separate governed release workflow completes.
Traceability
Existing converter work: closed #230; compatibility baseline: closed #294 / PR #298; reflection risk: #240; performance history: #219–#223.
Activity
rodri-oliveira-dev commentedon Oct 29, 2026
Backlog handoff from #230 (2026-10-29)
The core generated-conversion/TypeHandler-hardening work already exists on
main(see closure evidence in #230). For the final generated-coverage certification:IReadPropertyConverter<,>types; generated helpers invoke the converter directly, with contextual errors and runtime/generated parity tests.DFM011and non-strict runtime fallback, while strict mode must not silently fall back.TypeHandlerCache<T>.Parselimitation in [3.8] Inventory reflection and dynamic-code boundaries for the AOT-safe subset #240, which now tracks that residual risk.[2.1.89,3.0.0)dependency contract.The 3.6.0 release is already published and 3.6.1 is prepared (not published as of the reviewed baseline); do not imply the unfinished generated-coverage roadmap shipped in 3.6.0.
Source: #230, #294. Baseline:
main026fbcd26c48af0298ec4776ca5ac1659a2d676f.[-][3.6] Certify generated coverage, AOT evidence and release documentation[/-][+][Generated coverage] Certify strict support matrix, compatibility and cumulative delivery[/+]