Problem
Language-specific profanity policy should compose into one read-only profanity filter without registering each language as a separate pipeline filter or recompiling maintained dictionaries.
Acceptance Criteria
- Add explicit, symmetric language entrypoints with declarative profile identity.
- Compose multiple profiles into one filter with match provenance and per-profile policy.
- Preserve diagnostic match evidence while merging masking and scanner ranges.
- Make dictionary normalization explicit and keep UTF-16 source-range invariants.
- Preserve legacy mutable factories and add an object-based custom-term factory.
- Support allocation-aware composed scanner streaming.
- Document and validate the public API, distribution entrypoints, and benchmark coverage.
No publish, no merge, no tag/release.
Problem
Language-specific profanity policy should compose into one read-only profanity filter without registering each language as a separate pipeline filter or recompiling maintained dictionaries.
Acceptance Criteria
No publish, no merge, no tag/release.