Learning
Concept validation, Wolverine validation activation, and future FluentValidation support are different semantic dimensions. A validator declaration does not prove it is active for a handler; package presence does not prove application; and arbitrary predicates must remain named external behavior rather than guessed built-in rules.
Desired neutral model
Add library-neutral facts for:
- validator/rule declaration;
- target subject/type applicability;
- validation activation for a handler/endpoint/profile scope;
- actual application to an entry point;
- execution phase/order when exact;
- named external or unrepresentable behavior;
- source/evidence/producer and derivation lineage.
Example deterministic join:
- FluentValidation adapter: validator V validates command C.
- Wolverine adapter: handler H handles C; validation is active for H's exact scope.
- Generation derivation: V applies to H/C.
Neither adapter consumes the other.
Acceptance criteria
Related: #17, Cratis/Screenplay.CritterStack#4, Cratis/Arc issue to export neutral facts.
Learning
Concept validation, Wolverine validation activation, and future FluentValidation support are different semantic dimensions. A validator declaration does not prove it is active for a handler; package presence does not prove application; and arbitrary predicates must remain named external behavior rather than guessed built-in rules.
Desired neutral model
Add library-neutral facts for:
Example deterministic join:
Neither adapter consumes the other.
Acceptance criteria
Related: #17, Cratis/Screenplay.CritterStack#4, Cratis/Arc issue to export neutral facts.