Skip to content

Dummies: Clarify the bounded retry behavior of distinct collections #189

Description

@Reefact

Problem

The package README states that values are built to satisfy constraints and that Dummies uses no retry loops. That is accurate for scalar generators, but distinct collections intentionally use bounded repeated draws when the element generator's effective cardinality cannot be known.

CollectionState<T> deduplicates generated values and retries collisions up to an exhaustion budget before throwing AnyGenerationException.

Impact

The current wording overstates the implementation guarantee and can mislead users reviewing performance, termination or reproducibility behavior. It also makes the documented contract contradict the deliberate design recorded for distinct collections.

Direction

Keep the implementation, but refine the public promise:

  • scalar generators construct a satisfying value directly rather than generate-and-filter;
  • distinct collections fail eagerly when impossibility can be proven from cardinality;
  • otherwise they use a deterministic, bounded deduplication draw and fail explicitly when the budget is exhausted;
  • no generation path may use an unbounded retry loop.

Update the NuGet README and any user-facing documentation that repeats the stronger claim.

Acceptance criteria

  • Public documentation no longer claims that every generator avoids retry loops.
  • The distinction between direct scalar construction and bounded distinct-collection drawing is explicit.
  • The documentation explains the generation-time AnyGenerationException fallback.
  • Existing examples remain concise and preserve the library's core positioning.

Context

Surfaced during a focused review of the standalone Dummies library.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions