tests first: Unicode 16.0 pin vectors (failing)
Some checks failed
CultMesh QUIC native / Build win32-x64 (pull_request) Has been skipped
CultMesh QUIC native / Build linux-x64 (pull_request) Has been skipped
CultMesh QUIC native / Release native binaries (pull_request) Has been skipped
CultMesh portability and performance / ubuntu-latest reactive semantics and leases (pull_request) Failing after 6m15s
CultMesh QUIC native / Verify committed binaries match SHA256SUMS (pull_request) Successful in 43s
Some checks failed
CultMesh QUIC native / Build win32-x64 (pull_request) Has been skipped
CultMesh QUIC native / Build linux-x64 (pull_request) Has been skipped
CultMesh QUIC native / Release native binaries (pull_request) Has been skipped
CultMesh portability and performance / ubuntu-latest reactive semantics and leases (pull_request) Failing after 6m15s
CultMesh QUIC native / Verify committed binaries match SHA256SUMS (pull_request) Successful in 43s
Failing before the fix: Rust 1 (16100), Python 2 (16100, 10D40), Kotlin 4 (16100, 10D40, 2EBF0, 2EE5D). TypeScript and C# already pass: their platform data is 16.0 or later. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
ba548d192d
commit
cc931932fc
1 changed files with 50 additions and 2 deletions
|
|
@ -150,7 +150,7 @@
|
|||
]
|
||||
},
|
||||
"admittedMessageId": {
|
||||
"semantics": "Decoder-side rule for a `cultnet.write_admitted.v0` frame's `messageId` (Heimdall's ruling, write-receipt.md). Valid only if it contains at least one Unicode letter (\\p{L}) or number (\\p{N}) AND no Default_Ignorable_Code_Point (DerivedCoreProperties). The compare is RAW: the id is echoed byte for byte, so a decoder neither trims nor normalizes. Each case's id is given as `codePoints` (hex, in order), repeated `repeat` times (default 1), so no lone surrogate appears in this file. A runner builds the frame {schemaVersion write_admitted.v0, messageId, operation put, schemaId note.v0, recordKey note:1} with its own encoder and decodes it with the write_admitted decoder; `refuse` means the decoder refuses the frame the way it refuses an empty or ill-typed messageId, `accept` means it decodes and the id comes back identical. A case with `wireHex` carries the whole frame in MessagePack hex, for an id a language string cannot hold: the lone surrogate U+D800 is not valid UTF-8, so the vector's messageId is a MessagePack str whose bytes are ED A0 80, and Rust, C#, Kotlin and Python build the frame from those bytes and must refuse it. Scope: write_admitted only; error.v1 is untouched.",
|
||||
"semantics": "Decoder-side rule for a `cultnet.write_admitted.v0` frame's `messageId` (Heimdall's ruling, write-receipt.md). Valid only if it contains at least one Unicode letter (\\p{L}) or number (\\p{N}) AND no Default_Ignorable_Code_Point (DerivedCoreProperties). The compare is RAW: the id is echoed byte for byte, so a decoder neither trims nor normalizes. Each case's id is given as `codePoints` (hex, in order), repeated `repeat` times (default 1), so no lone surrogate appears in this file. A runner builds the frame {schemaVersion write_admitted.v0, messageId, operation put, schemaId note.v0, recordKey note:1} with its own encoder and decodes it with the write_admitted decoder; `refuse` means the decoder refuses the frame the way it refuses an empty or ill-typed messageId, `accept` means it decodes and the id comes back identical. A case with `wireHex` carries the whole frame in MessagePack hex, for an id a language string cannot hold: the lone surrogate U+D800 is not valid UTF-8, so the vector's messageId is a MessagePack str whose bytes are ED A0 80, and Rust, C#, Kotlin and Python build the frame from those bytes and must refuse it. Letters, numbers and Default_Ignorable are those of Unicode 16.0 in every runtime, from embedded tables (no platform category lookup), so a runtime's own Unicode version cannot change a result. Scope: write_admitted only; error.v1 is untouched.",
|
||||
"cases": [
|
||||
{
|
||||
"name": "refuse_braille_blank_2800",
|
||||
|
|
@ -360,6 +360,54 @@
|
|||
"expect": "refuse",
|
||||
"why": "U+FEFF is Default_Ignorable; JavaScript trim() would strip it and accept the rest, but the compare is raw"
|
||||
},
|
||||
{
|
||||
"name": "accept_unicode16_gurung_khema_letter_16100",
|
||||
"codePoints": [
|
||||
"16100"
|
||||
],
|
||||
"expect": "accept",
|
||||
"why": "U+16100 GURUNG KHEMA LETTER A is Lo and new in Unicode 16.0 (unassigned in 15.1); the rule is pinned to 16.0 in every runtime"
|
||||
},
|
||||
{
|
||||
"name": "accept_unicode16_garay_digit_zero_10D40",
|
||||
"codePoints": [
|
||||
"10D40"
|
||||
],
|
||||
"expect": "accept",
|
||||
"why": "U+10D40 GARAY DIGIT ZERO is Nd and new in Unicode 16.0"
|
||||
},
|
||||
{
|
||||
"name": "accept_unicode15_1_cjk_ext_i_2EBF0",
|
||||
"codePoints": [
|
||||
"2EBF0"
|
||||
],
|
||||
"expect": "accept",
|
||||
"why": "U+2EBF0, first of CJK Unified Ideographs Extension I, is Lo and new in Unicode 15.1"
|
||||
},
|
||||
{
|
||||
"name": "accept_last_cjk_ext_i_2EE5D",
|
||||
"codePoints": [
|
||||
"2EE5D"
|
||||
],
|
||||
"expect": "accept",
|
||||
"why": "U+2EE5D is the last assigned code point of Extension I (Lo)"
|
||||
},
|
||||
{
|
||||
"name": "refuse_after_cjk_ext_i_2EE5E",
|
||||
"codePoints": [
|
||||
"2EE5E"
|
||||
],
|
||||
"expect": "refuse",
|
||||
"why": "U+2EE5E is unassigned in Unicode 16.0, so neither a letter nor a number"
|
||||
},
|
||||
{
|
||||
"name": "refuse_unassigned_in_16_0_10D90",
|
||||
"codePoints": [
|
||||
"10D90"
|
||||
],
|
||||
"expect": "refuse",
|
||||
"why": "U+10D90 follows the Garay block and is unassigned in Unicode 16.0"
|
||||
},
|
||||
{
|
||||
"name": "accept_abc",
|
||||
"codePoints": [
|
||||
|
|
@ -1476,7 +1524,7 @@
|
|||
"schemaInvalid": 7,
|
||||
"contentHashCases": 4,
|
||||
"scenarioCases": 25,
|
||||
"admittedMessageIdCases": 34
|
||||
"admittedMessageIdCases": 40
|
||||
},
|
||||
"contentHash": {
|
||||
"definition": "sha256(msgpack([operation, schemaId, recordKey, payload])), payload a msgpack bin for a put and nil for a delete; hex lowercase",
|
||||
|
|
|
|||
Loading…
Reference in a new issue