You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The previous 3.x roadmap established the current foundation: mainline/release stabilization, real-provider certification, two-type multi-mapping, asynchronous mapped multiple results, strict generated materialization, reordered generated shapes, Native AOT evidence and MySQL/MariaDB certification.
The repository is now mature enough that the next cycle should focus primarily on library capability and long-term API quality rather than another broad repository-cleanup effort.
Four gaps remain especially valuable:
compatibility metadata can still drift between package constraints, CI and documentation;
strict generated materialization/Native AOT support is useful but still intentionally narrow;
mapping functionality is incomplete around writes, higher-arity multi-mapping and explicit immutable/value-object construction;
the expanded 3.x public surface needs stronger API/nullability/compatibility/performance governance.
Outcome
Evolve FluentMap 3.x as a focused, compatibility-conscious mapping layer for Dapper with:
one verifiable compatibility contract;
a more practical generated-only/Native AOT path;
more complete mapping capabilities without ORM scope creep;
explicit public API and regression governance.
This roadmap does not assign release numbers in advance. Each workstream must preserve SemVer; release slicing is decided from the actual public API impact once implementation is ready.
Branch and pull-request strategy
All child issues in this roadmap are implemented sequentially on one shared branch:
A child workstream is considered implementation-complete when its own DoD is satisfied and its changes are committed/pushed to the shared branch; roadmap completion still requires the final PR to merge and post-merge evidence to pass.
Common implementation constraints
Keep FluentMap a mapping/materialization layer for Dapper.
Preserve the historical EntityMap<T>, FluentMapper.Initialize(...) and normal Dapper type-map path.
Preserve documented global-state boundaries for normal Dapper queries and Dommel.
Keep isolated FluentMapRuntime behavior explicit.
Do not silently introduce reflection/dynamic-code fallback into strict-generated APIs.
New public APIs must be SemVer-safe, documented and covered by negative/edge-case tests.
Provider, performance, trimming/AOT and compatibility claims must be backed by reproducible evidence.
Prefer internal reusable pipelines over overload-by-overload duplication.
Do not add generic CRUD generation, LINQ translation, SQL parsing, query building, change tracking, Unit of Work, migrations or automatic one-to-many graph aggregation.
Definition of Ready (DoR)
The roadmap is ready to execute when:
Current main CI is green or any unrelated failure is documented.
Mainline CI, provider compatibility, generator/analyzer tests, Native AOT smoke, pack validation, Sonar and CodeQL are green.
Public API/package compatibility validation shows no undocumented breaking change.
Supported dependency/provider/AOT claims match reproducible CI evidence.
Public API baselines include the final intentional API surface delivered by this roadmap.
Benchmark reporting has a documented baseline for the materialization paths changed by this roadmap.
README/usage/migration/compatibility/changelog documentation is reconciled with actual shipped behavior.
Release version(s) are selected according to SemVer from the implemented public API impact rather than from the roadmap labels.
No roadmap checkbox is marked complete solely from implementation intent; completion is backed by tests and mainline evidence.
How to verify completion
Review the single final roadmap PR, each child issue's DoD evidence, the final main workflow runs, package validation output, provider matrix, Native AOT smoke, public API baseline changes and benchmark artifacts.
The final support claims must match what those artifacts demonstrate, not what the roadmap originally intended.
Pain / problem
The previous 3.x roadmap established the current foundation: mainline/release stabilization, real-provider certification, two-type multi-mapping, asynchronous mapped multiple results, strict generated materialization, reordered generated shapes, Native AOT evidence and MySQL/MariaDB certification.
The repository is now mature enough that the next cycle should focus primarily on library capability and long-term API quality rather than another broad repository-cleanup effort.
Four gaps remain especially valuable:
Outcome
Evolve FluentMap 3.x as a focused, compatibility-conscious mapping layer for Dapper with:
This roadmap does not assign release numbers in advance. Each workstream must preserve SemVer; release slicing is decided from the actual public API impact once implementation is ready.
Branch and pull-request strategy
All child issues in this roadmap are implemented sequentially on one shared branch:
roadmap/216-next-3xExecution model:
main, then commits and pushes its completed work.roadmap/216-next-3xtomaincontaining the entire roadmap implementation.Do not create one branch or PR per child issue. Do not merge partial roadmap work into
main.Delivery plan
Workstreams
#212 — Stabilize compatibility metadata and repository consistency
Required result:
This issue is the first delivery gate because subsequent work should not build on an ambiguous package compatibility baseline.
#213 — Expand strict generated materialization and Native AOT coverage
Required result:
This workstream improves the existing generated/AOT architecture rather than creating a parallel query framework.
#214 — Complete advanced mapping capabilities without expanding ORM scope
Required result:
This workstream must not introduce generic CRUD generation, SQL parsing, query building, change tracking or automatic graph aggregation.
#215 — Strengthen public API governance, nullability and regression protection
Required result:
The final API baseline for this roadmap should include intentional public APIs added by preceding workstreams.
Dependency and sequencing rules
roadmap/216-next-3x.main.main.Common implementation constraints
EntityMap<T>,FluentMapper.Initialize(...)and normal Dapper type-map path.FluentMapRuntimebehavior explicit.Definition of Ready (DoR)
The roadmap is ready to execute when:
mainCI is green or any unrelated failure is documented.COMPATIBILITY.md.Roadmap acceptance criteria
Roadmap Definition of Done (DoD)
main.How to verify completion
Review the single final roadmap PR, each child issue's DoD evidence, the final
mainworkflow runs, package validation output, provider matrix, Native AOT smoke, public API baseline changes and benchmark artifacts.The final support claims must match what those artifacts demonstrate, not what the roadmap originally intended.