Skip to content

IFCSHADINGDEVICE emits $ where Revit writes .NOTDEFINED. on all 20 — the #220 witness rule was not applied to this row #235

Description

@DrunkOnJava

#220 adopted the rule "follow the authoring witness where a recorded edge shows its choice" and applied it to four mappings (IFCWALL, IFCSPACE, IFCDOOR, IFCWINDOW). A fifth row on the same recorded artifact shows the same shape and was deliberately left alone in that PR, because category_map.rs carries an explicit prior decision for it that predates the rule:

IfcShadingDevice declares no PredefinedType value rvt-rs can decode, so none is written ($, not an invented .NOTDEFINED.).

Measured on IFC Exports/2024_Core_Interior_slim.ifc (sha256 bfdf36ffb0bb768f3409d818403990e64d4c262c6780603be87f8077387ad86d) with IfcOpenShell:

Entity Revit writes rvt-rs writes count
IfcShadingDevice .NOTDEFINED. $ 20

Under the #220 rule this is not an invention — .NOTDEFINED. is the witness's own recorded answer for exactly these twenty OST_Floors instances, the same argument that moved IFCWALL off .STANDARD.. Applying it would make per-type PredefinedType agreement with the export exact for every type rvt-rs emits.

The reason to raise it rather than fold it into #220: the existing $ is a decision written down in a comment, and flipping a documented decision deserves its own verdict rather than riding along in another PR. Deciding it either way should also update the EXPORT_OVERRIDE_TARGETS comment and, if changed, add IfcShadingDevice to WITNESS_PREDEFINED_TYPES in tools/ci/ifc_schema_arity.py.

Separately visible in the same measurement and not part of this question, because it is a per-element decode rather than a mapping default: Revit splits its 80 slabs into 78 .FLOOR. + 2 .ROOF., where rvt-rs writes .FLOOR. for all 80. The witness-agreement gate accepts {FLOOR, ROOF} for IfcSlab for that reason.

Found while implementing #220 / #232.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    questionFurther information is requested

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions