v3.5.0: Keyed-tabular map encoding (§7.2a)
Keyed-tabular map encoding (Section 7.2a)
A JSON object whose values are all objects forming a tabular set is encoded as a keyed table: the shared value fields are declared once in a header, with one key-prefixed row per member, marked by [N:]. This is the object-valued analogue of Section 7.4 tabular array encoding. It is canonical by default, first-class in nested (Sections 7.4.4, 7.6) and streaming ([?:], Section 8) positions, and reuses generic delta (Section 10a) with the map key as the delta identity.
Additive under the Stable lifecycle. Existing payloads are unaffected — the [N:] marker was previously an invalid count. A pre-v3.5 decoder rejects [N:], so decoders must be updated to read v3.5 map output.
Also in v3.5.0
- Negative zero canonicalizes to
0for both integer and floating-point values (Section 2.3.1).-0and0denote the same value, and integer negative zero is not representable in most language number models. - A buffered graph header omits
budget,tokens, andedgeswhen their value is zero and always emitssymbols(Sections 3.2, 16.1), so header output is deterministic across encoders. - Structural tokens and delimiters are matched at the Unicode scalar (code point) level, not grapheme clusters (Section 1), so structural parsing is identical across implementations.
Conformance
Coverage matrix: 31/31 Section 16.5 conditions, 26/26 encoder/decoder checklist, 0 gaps. All six SDKs pass the shared fixtures byte-for-byte. A re-encode idempotence check (generic, graph, and delta) and a differential cross-SDK fuzz were added to the verification suite.