{
  "about": "OCG-authored RFC 8785 probes (first-party, CC BY 4.0). Each input is JSON text, parsed with JSON.parse so a member named __proto__ is an ordinary own member. expected is the RFC 8785 serialization, written by hand from RFC 8785 §3.2.3 (member names sorted by UTF-16 code unit).",
  "probes": [
    { "id": "P1-int-keys-9-10", "input": "{\"10\":1,\"9\":2}", "expected": "{\"10\":1,\"9\":2}", "why": "array-index member names: JS enumerates them numerically, RFC 8785 sorts them as strings" },
    { "id": "P2-int-and-string-keys", "input": "{\"b\":1,\"2\":2,\"a\":3,\"10\":4}", "expected": "{\"10\":4,\"2\":2,\"a\":3,\"b\":1}", "why": "mixed array-index and ordinary member names" },
    { "id": "P3-year-keys", "input": "{\"2024\":\"x\",\"999\":\"y\"}", "expected": "{\"2024\":\"x\",\"999\":\"y\"}", "why": "year-style keys, the shape a fintech table would carry" },
    { "id": "P4-leading-zero-key", "input": "{\"01\":1,\"1\":2}", "expected": "{\"01\":1,\"1\":2}", "why": "\"01\" is an ordinary string key and \"1\" is an array index; RFC 8785 puts \"01\" first" },
    { "id": "P5-astral-vs-high-bmp", "input": "{\"\\ufb33\":1,\"\\ud83d\\ude02\":2}", "expected": "{\"\ud83d\ude02\":2,\"\ufb33\":1}", "why": "UTF-16 order puts U+1F602 (surrogate D83D) before U+FB33; UTF-8 byte order reverses them" },
    { "id": "P6-proto-member", "input": "{\"__proto__\":1,\"a\":2}", "expected": "{\"__proto__\":1,\"a\":2}", "why": "regression for the null-prototype fix: a member named __proto__ must survive canonicalization" }
  ]
}
