Skip to content

Binder: two unasserted contracts despite 100% coverage (empty required list = success; no property-based invariants) #155

Description

@Reefact

Review finding 19/19 · conventional-comment issue (test) · area binder · gate: follow-up
To add once they exist: labels binder, test. (Already applied: bug.)

Problem

Two behaviors are not asserted despite 100% line/branch coverage:

  1. A required list that is present but empty currently binds as success — this boundary is neither tested nor documented (is an empty required list valid?).
  2. FirstClassErrors.PropertyTests exercises no binder invariant (for example "collect-all reports exactly one error per invalid field", or "paths are stable under element reordering").

Impact

Coverage measures execution, not assertion: the empty-required-list contract can change silently, and no property-based test guards the binder's core invariants against regression.

Direction

Decide and document whether an empty required list is valid, add a test pinning that contract, and add a small set of property-based invariants for collect-all and path stability.

Context

Surfaced by the RequestBinder review (design spec #126, shipped in #141). Finding 19 of 19.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions