Skip to content

Implement Unicode 17 source-mapped case conversion - #54

Merged
lukewilliamboswell merged 9 commits into
mainfrom
feature/unicode17-case-mapping
Aug 9, 2026
Merged

Implement Unicode 17 source-mapped case conversion#54
lukewilliamboswell merged 9 commits into
mainfrom
feature/unicode17-case-mapping

Conversation

@lukewilliamboswell

@lukewilliamboswell lukewilliamboswell commented Aug 9, 2026

Copy link
Copy Markdown
Collaborator

Fixes #52

Summary

  • adds the Unicode 17 UAX update to basic-cli 0.20 #29 default word-boundary substrate and public Word range/cursor APIs used by titlecasing
  • adds deterministic UnicodeData, SpecialCasing, CaseFolding, Cased, Case_Ignorable, Soft_Dotted, and combining-class case data
  • adds complete-string lower, upper, technical R3 title, and full/simple case folding with explicit default, Turkic, and Lithuanian policies
  • returns owned transformed text plus exactly one source fact per input scalar, including byte/scalar ranges, shape, and contextual provenance
  • adds explicit atomic limits and structured errors; no operation normalizes input or output

Policy and API decisions

  • titlecase uses the same un-tailored Unicode 17 UAX update to basic-cli 0.20 #29 Word transition core
  • full folding selects C/F, simple folding selects C/S, and explicit Turkic profiles apply T overrides
  • source facts are source-oriented so deletion mappings retain complete input identity
  • mapping shape and contextual selection are orthogonal public semantics
  • Case is complete-Str only because ordered contextual output requires replayable source context

@lukewilliamboswell

Copy link
Copy Markdown
Collaborator Author

Independent review record:

  • Maxwell (architecture_plan): reviewed design changes, Word data/runtime fixes, and final allocation evidence; approved after all material findings were resolved.
  • Sagan (workflow_tests): reviewed Case data and runtime/conformance contracts; required and re-reviewed empty-map rendering, exact payload accounting, SpecialCasing ambiguity guards, public API accessors, contextual negatives, and exact limits.
  • Boole (issue_analysis): authored separate data/conformance scopes and did not approve those authored changes.
  • final_integration_review (fresh Tera reviewer): independently reviewed the complete origin/main...HEAD range, ICU differential, signatures, performance evidence, and post-rebase Bidi/Word/Case conflict resolutions; final verdict approved for push/draft PR.

Post-rebase evidence: clean worktree, origin/main ancestor, nine good signatures, deterministic generation, full repository suite, ICU4J 78.3 differential, and combined allocation baselines all pass.

@lukewilliamboswell
lukewilliamboswell marked this pull request as ready for review August 9, 2026 22:49
@lukewilliamboswell
lukewilliamboswell merged commit 8c2bcc5 into main Aug 9, 2026
13 checks passed
@lukewilliamboswell
lukewilliamboswell deleted the feature/unicode17-case-mapping branch August 9, 2026 22:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Implement Unicode 17 full case mapping with source-range facts

1 participant