Files
Maximiliano Korp d0bcdaef8a feat(intelligence): pin one Unicode case-folding table across all three SDKs
Path and manifest collision keys are contract-bearing: the conformance corpus
declares `references/Straße.txt` + `references/STRASSE.txt` and `references/İ.txt`
+ `references/i̇.txt` invalid, and only full Unicode Default Case Folding
collapses them. TypeScript already used a generated Unicode 17.0.0 table, C# used
`ToUpperInvariant` (simple case mapping, no `ß` expansion and no `İ` folding),
and Python used `str.casefold()` (whatever Unicode version the interpreter
ships - 95 code points differ from Unicode 17.0.0 on Python 3.10).

`scripts/generate-unicode-default-case-folding.mjs` now emits the identical
pinned table for all three languages from one parse of one SHA-256-pinned
source, so a regeneration cannot refresh one language and leave the others
behind. Each language gets exactly one folding definition site, which both the
SDK's own collision checks and the portable contract validator consume.

Escape hex digits are lowercase so that `ruff format` - which the pre-commit
hook runs over staged Python - treats the generated table as already formatted.
2026-07-24 16:33:19 -07:00
..