OptionalclashRestrict a clash chart to ONE detection rule/run (#5156) by its
ClashRule.id — the same id a clash row's Rule column already
carries. Absent means every rule of the current clash result is
counted together, same as before this field existed; never an empty
string (that reads as "no filter" everywhere else in this file, so it
would be indistinguishable from absent). Only valid when source is
clash — validate.ts rejects it on every other source, the same way
elementField is rejected off elements.
OptionalgroupsRules authored in the shared filter builder. These can express model tags and other predicates with no faithful selector spelling.
A chart's own source filter (#4946): IfcOpenShell selector text, read the same way the Filter tab reads it (
readSelector) and run through the same evaluator (evaluateFilterRulesFederated) — never a second matcher. Not applicable tobcforcompare(seevalidate.ts), because their rows do not stand for one element the selector can match against.