Optionalcrosstrue when whole and at least one of pieces carry a
different ifcType — candidates are bucketed by class FAMILY
(DiffOptions.classFamilies, issue #4955), so a wall republished as
IfcBuildingElementPart layers is a claim like any other, flagged so a
reviewer sees that the class changed on the way. Absent otherwise.
OptionalexcludedThe one same-class element that sat inside the whole's box, was NOT part of this claim, and whose own volume explained the whole overshoot on its own.
Present only when the bounded one-interloper exception fired. It is reported rather than silently dropped: the claim is "these pieces are the whole, and that thing is something else", and the second half is a statement about a real entity a reviewer may disagree with.
The k >= 2 entities on the other side, in a deterministic order.
OptionalpiecesSum of the pieces' volumes. Present exactly on verified and displaced.
Optionalvolume(piecesVolume - wholeVolume) / wholeVolume, signed — negative means the
pieces account for less material than the whole did. Within
DiffOptions.splitVolumeTolerance by construction wherever present.
The single entity: the BASE entity of a split, the HEAD entity of a merge.
Optionalwholewhole's volume. Present exactly on verified and displaced.
One claim that a single entity and a group of entities on the other side are the same material (issue #1891, DiffOptions.detectSplitMerge).
A claim, not a decision. Unlike a retiring ContentMatch, this never removes a DiffEntry and never touches ModelDiff.counts: every participant is still reported as the
added/deletedit is. A split bindsk + 1entities on ONE evidence chain, so retiring them would let a single wrong claim deletek + 1real changes; a UI groups the underlying add/deletes under the claim instead.For the same reason no claim here ever becomes an identity-map entry: identity is not a relation that survives being split.
CLAIMABLE_KINDSinidentity-map.tsreads ContentMatches only, and these are not one.