Pin clinic expectations and add the mutation harness #38
merged
@chrismichaelps wrote on 2026-09-28
Closes #30, closes #31, closes #32, closes #37.
Behaviour
- #30: empty text satisfies any maximum (already specified in the Text mirror); pinned with maximum/minimum acceptance and rejection checks.
- #31: brace escaping documented on Text.matches, in its mirror, and in the GitHub wiki Built-In-Checks page; escaped-quantifier match and rejection checks added.
- #32: forEachAsync checks every element while forEachWhereAsync filters; pinned with 2-vs-1 failure checks.
- #37: ports tools/Mutate.pudu (predicate-layer domain) with its mirror page, CONTRIBUTING guidance, and a pull-request mutation gate at threshold 100.
Verification
- pudu check, fmt --check, lint over src test tools: clean.
- pudu test test: 21/21 suites, 249 assertions.
- Mutation: Text 28/28, Async 17/17, full predicate layer 93/93 killed, with two guards simplified so every guard is observable.
- pudu build src/Main.pudu plus --version smoke: ok.
