A geometry fingerprint. The WASM geometry hash surfaces as a bigint
(MeshCollection.geometryHashValues is a BigUint64Array); strings are
accepted for callers that fingerprint geometry another way. undefined
means the entity carries no geometry.
Both revisions must use the same representation. Equality is String(a) === String(b), so a bigint matches its own decimal string form (42n and
'42') but nothing else: '0x2a' is a different fingerprint from 42n.
The engine deliberately does not try to parse or canonicalize string forms,
because a string hash is an opaque token from the caller's own scheme and
reinterpreting one that happens to look numeric would collide it with an
unrelated bigint.
Content matching's first tier sub-buckets on String(hash), which is where
mixing representations costs the most: 42n and '42' land in one
sub-bucket and retire as renamed, while 42n and '0x2a' land in two, so
that tier resolves neither. They are not lost — they fall to the bucket's
residue, where a 1:1 leftover still pairs and ContentMatchKinds as
moved/reshaped, and a larger residue can end up an ambiguous group. So
the cost of mixing is a missed renamed and a spurious geometry difference,
not an unpairable entity.
A geometry fingerprint. The WASM geometry hash surfaces as a
bigint(MeshCollection.geometryHashValuesis aBigUint64Array); strings are accepted for callers that fingerprint geometry another way.undefinedmeans the entity carries no geometry.Both revisions must use the same representation. Equality is
String(a) === String(b), so abigintmatches its own decimal string form (42nand'42') but nothing else:'0x2a'is a different fingerprint from42n. The engine deliberately does not try to parse or canonicalize string forms, because a string hash is an opaque token from the caller's own scheme and reinterpreting one that happens to look numeric would collide it with an unrelatedbigint.Content matching's first tier sub-buckets on
String(hash), which is where mixing representations costs the most:42nand'42'land in one sub-bucket and retire asrenamed, while42nand'0x2a'land in two, so that tier resolves neither. They are not lost — they fall to the bucket's residue, where a 1:1 leftover still pairs and ContentMatchKinds asmoved/reshaped, and a larger residue can end up anambiguousgroup. So the cost of mixing is a missedrenamedand a spurious geometry difference, not an unpairable entity.