Skip to content

[Roadmap] Expand strict-generated coverage after FluentMap 3.6.1 #227

Open

Description

@rodri-oliveira-dev

Current baseline (reviewed on 2026-10-29)

The latest published stable release documented on main is 3.6.0; 3.6.1 is prepared but not yet published. The earlier "[3.6]" roadmap is historical and must not be treated as work still required for 3.6.0.

Already available on main:

  • Source-generated registration and materializers for supported mutable/immutable, nested and component value-object shapes, profiles, safe column reordering and statically-known property converter types.
  • GeneratedParameters for reflection-free strict-generated commands, including bounded Native AOT evidence.
  • A centralized Dapper TypeHandler compatibility boundary and runtime/generated precedence tests.

Closed baseline: #230 (generated converters/TypeHandler hardening) is completed/superseded. Its residual coverage validation belongs to #232, and remaining reflective TypeHandler/AOT investigation to #240. Do not reopen or depend on #230.

Objective

Close actual gaps in strict-generated execution without duplicating features already implemented, changing normal Dapper semantics, or claiming blanket Native AOT support.

Version policy: future compatible release, not 3.6.0 or the already prepared 3.6.1. Before feature work or package version edits, check the current published/prepared state and apply .agents/skills/semantic-versioning/SKILL.md. Recommend the next version from the real diff; do not auto-increment major or rewrite a prepared release's contract.

Delivery scope and order

Order Issue Remaining deliverable Prerequisite
1 #228 Support statically-resolvable ConstructUsing(...) factory shapes in generated strict mode; retain deterministic rejection for unsupported delegates Current main baseline
2 #229 Audit already-generated nested/value-object cases; close specifically proven strict-generation/null/shape/diagnostic gaps #228 only where factory composition requires it
3 #231 Source-generate strongly typed parameter binders without runtime parameter-object reflection Current GeneratedParameters contract; may proceed independently of #229
4 #232 Certify supported/unsupported matrix, semantic parity, targeted provider/AOT coverage, performance and documentation; deliver single cumulative PR #228, #229 and #231 completed

No active delivery steps for #230; it is linked as completed evidence only.

Branch and PR policy

Constraints

Definition of Ready (DoR)

Acceptance criteria

  • At least one statically analyzable explicit factory executes in strict-generated mode without runtime reflection.
  • Existing nested/value-object generated shapes are preserved; any newly supported cases have parity, null and rejection evidence.
  • A known typed parameter object binds in strict-generated mode without runtime reflection, while GeneratedParameters remains supported.
  • Unsupported captures, member graphs, readers, parameter objects and conversion shapes fail deterministically without silent fallback.
  • A machine-readable or documented support matrix distinguishes runtime, generated, strict and tested Native AOT support.
  • No unjustified performance or public API regression.

Definition of Done (DoD)

Traceability

Original plan and decisions: #230 (closed), #294 (closed), PR #298; residual Native AOT investigation: #240; performance history: #219–#223. This issue's prior 3.6 plan is superseded by the present scope.

Activity

  1. rodri-oliveira-dev commented on Oct 29, 2026

    @rodri-oliveira-dev
    OwnerAuthor

    Roadmap reconciliation (2026-10-29)

    #230 is already implemented/superseded on main and is being closed separately. The generated read-converter path, Dapper TypeHandler boundary, precedence regression tests and compatibility limitations have established implementations. Please do not treat #230 as a new implementation prerequisite.

    Remaining follow-ups were moved to #232 (generated coverage/equivalence) and #240 (reflection/Native AOT boundary).

    The original execution plan and 3.6 version references below are historical: 3.6.0 was published on 2026-10-13, and the reviewed main prepares 3.6.1. Before starting remaining work in #228, #229, #231 and #232, re-scope the roadmap for a future compatible release and update the cumulative PR/closure instructions accordingly. Do not recreate or require reopening #230.

    Evidence: #230 closure review, #294 / PR #298; main 026fbcd26c48af0298ec4776ca5ac1659a2d676f.

  2. changed the title [-][Roadmap] FluentMap 3.6: complete generated materialization coverage[/-] [+][Roadmap] Expand strict-generated coverage after FluentMap 3.6.1[/+] on Oct 29, 2026
  3. moved this from Proposed to In Progress in Open Source & Contributionson Oct 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions