Dictionary
Object map from keys to values (a plain Blue object node). - Object shape (no properties field): detail: > Blue objects are plain maps of field → node; there is no `properties` key in the language (§2, §8.2.4). Dictionary is just an object with typing constraints for its keys/values. - Why not `value`/`items`: detail: > Dictionary is neither a scalar nor a list wrapper; `value`/`items` are instance wrappers for scalars/lists (§2.1). They do not apply to maps. - Key typing & serialization: detail: > Keys are serialized using the `keyType`’s canonical textual form. Because JSON member names are strings, non-Text keys are converted to strings (e.g., Integer 42 → "42", Double 1.0 → "1"). Distinct values that map to the same canonical string will collide; authors SHOULD choose a `keyType` that avoids ambiguity for their domain. - Defaults & compatibility: detail: > `keyType` and `valueType` are OPTIONAL. If `keyType` is omitted, it defaults to Text. If `valueType` is omitted, values may be any Blue node. Subtyping/compatibility must be preserved for both keyType and valueType when present (§4.2). - Ordering & equality: detail: > Key order is irrelevant for identity (RFC 8785 canonicalization). Equality compares by canonical JSON / BlueId rules. - Applicable schema: detail: > §5.3 object constraints: minFields, maxFields.