{
  "provenance": {
    "generator": "scripts/marketing/gen-evidence.mjs",
    "generatedFrom": {
      "commit": "7d340089fa8f14e67da295470809128700366cbe",
      "branch": "feat/website-rebuild-2026-08",
      "workingTreeClean": true
    },
    "injectedNow": "2026-08-28T00:00:00.000Z",
    "guidSeed": "informed.build/evidence",
    "reproduce": "node scripts/marketing/gen-evidence.mjs --model assets/Ifc4_SampleHouse.ifc --ids testdata/ids/website-demo.ids",
    "model": {
      "path": "assets/Ifc4_SampleHouse.ifc",
      "gitTracked": true,
      "sizeBytes": 2273870,
      "sha256": "7606dc4e96b538d6fe7f2fa76655f26186d64d0226f8a10fbc141b9f2cd6cbfe",
      "schema": "IFC4",
      "units": {
        "length": "MILLI·METRE",
        "area": "m²"
      }
    },
    "ids": {
      "path": "testdata/ids/website-demo.ids",
      "gitTracked": true,
      "sha256": "eeda4c21b192f7e31b73a38fadcf1ce571c8f191f67c449816d6c8fd4c69520e",
      "title": "informed.build Demo-Prüfvorgabe"
    },
    "productModules": [
      "src/lib/classification/ids/bcf-export.ts",
      "src/lib/classification/ids/parse.ts",
      "src/lib/classification/ids/report.ts",
      "src/lib/classification/records.ts",
      "src/lib/geometry/aabb.ts",
      "src/lib/geometry/index.ts",
      "src/lib/geometry/mesh-intersection.ts",
      "src/lib/ifc/live-properties.ts",
      "src/lib/ifc/predicate.ts",
      "src/lib/ifc/types-config.ts",
      "src/lib/ifc/unit-scale.ts",
      "src/lib/rules/catalog/accessibility-rules.ts",
      "src/lib/rules/catalog/distance-rules.ts",
      "src/lib/rules/catalog/geometry-rules.ts",
      "src/lib/rules/catalog/index.ts",
      "src/lib/rules/catalog/model-quality-rules.ts",
      "src/lib/rules/catalog/naming-rules.ts",
      "src/lib/rules/catalog/property-rules.ts",
      "src/lib/rules/catalog/safety-rules.ts",
      "src/lib/rules/catalog/spatial-rules.ts",
      "src/lib/rules/checks/geometric-checks.ts",
      "src/lib/rules/rule-kind.ts",
      "src/lib/rules/rule-resolver.ts",
      "src/lib/rules/rule-runner.ts"
    ]
  },
  "coverage": {
    "catalogRules": 56,
    "builtinRulesets": 6,
    "rulesRun": 31,
    "rulesPublishable": 14,
    "rulesExcluded": 17,
    "excludedByReason": {
      "needs-in-app-classification": 1,
      "no-geometry": 12,
      "no-applicable-elements": 4
    },
    "geometryAvailable": false,
    "inAppClassificationAvailable": false,
    "projectUnits": {
      "length": "MILLI·METRE",
      "area": "m²"
    }
  },
  "elements": {
    "total": 74,
    "byType": {
      "IFCMEMBER": 20,
      "IFCFURNITURE": 14,
      "IFCOPENINGELEMENT": 7,
      "IFCPLATE": 6,
      "IFCSPACE": 4,
      "IFCWINDOW": 4,
      "IFCCOVERING": 3,
      "IFCDOOR": 3,
      "IFCWALL": 3,
      "IFCBUILDINGSTOREY": 2,
      "IFCCURTAINWALL": 2,
      "IFCSLAB": 2,
      "IFCWALLSTANDARDCASE": 2,
      "IFCBUILDING": 1,
      "IFCROOF": 1
    }
  },
  "rules": [
    {
      "ruleId": "solibri-11-model-completeness",
      "ruleName": "Modell-Vollständigkeit",
      "category": "model-quality",
      "severity": "warning",
      "kind": "logical",
      "checkType": "model-completeness",
      "ruleset": "model-quality-basic",
      "totalChecked": 4,
      "passCount": 4,
      "failCount": 0,
      "failedElements": 0,
      "passRatePercent": 100,
      "skippedNoGeometry": 0,
      "publishable": true,
      "excluded": null,
      "caveat": null,
      "examples": [],
      "examplesTruncated": 0
    },
    {
      "ruleId": "solibri-21-unique-guid",
      "ruleName": "Eindeutige GUIDs",
      "category": "model-quality",
      "severity": "error",
      "kind": "logical",
      "checkType": "uniqueness",
      "ruleset": "model-quality-basic",
      "totalChecked": 74,
      "passCount": 74,
      "failCount": 0,
      "failedElements": 0,
      "passRatePercent": 100,
      "skippedNoGeometry": 0,
      "publishable": true,
      "excluded": null,
      "caveat": null,
      "examples": [],
      "examplesTruncated": 0
    },
    {
      "ruleId": "solibri-203-name-not-empty",
      "ruleName": "Elemente: Name nicht leer",
      "category": "property",
      "severity": "warning",
      "kind": "logical",
      "checkType": "property-value",
      "ruleset": "model-quality-basic",
      "totalChecked": 14,
      "passCount": 14,
      "failCount": 0,
      "failedElements": 0,
      "passRatePercent": 100,
      "skippedNoGeometry": 0,
      "publishable": true,
      "excluded": null,
      "caveat": null,
      "examples": [],
      "examplesTruncated": 0
    },
    {
      "ruleId": "solibri-176-model-structure",
      "ruleName": "Modellstruktur: Geschoss-Zuordnung",
      "category": "model-quality",
      "severity": "warning",
      "kind": "logical",
      "checkType": "model-structure",
      "ruleset": "model-quality-basic",
      "totalChecked": 14,
      "passCount": 14,
      "failCount": 0,
      "failedElements": 0,
      "passRatePercent": 100,
      "skippedNoGeometry": 0,
      "publishable": true,
      "excluded": null,
      "caveat": null,
      "examples": [],
      "examplesTruncated": 0
    },
    {
      "ruleId": "mq-building-hierarchy",
      "ruleName": "Gebäudehierarchie vollständig",
      "category": "model-quality",
      "severity": "error",
      "kind": "logical",
      "checkType": "model-completeness",
      "ruleset": "model-quality-basic",
      "totalChecked": 2,
      "passCount": 2,
      "failCount": 0,
      "failedElements": 0,
      "passRatePercent": 100,
      "skippedNoGeometry": 0,
      "publishable": true,
      "excluded": null,
      "caveat": null,
      "examples": [],
      "examplesTruncated": 0
    },
    {
      "ruleId": "mq-has-spaces",
      "ruleName": "Modell hat Räume",
      "category": "model-quality",
      "severity": "info",
      "kind": "logical",
      "checkType": "model-completeness",
      "ruleset": "model-quality-basic",
      "totalChecked": 1,
      "passCount": 1,
      "failCount": 0,
      "failedElements": 0,
      "passRatePercent": 100,
      "skippedNoGeometry": 0,
      "publishable": true,
      "excluded": null,
      "caveat": null,
      "examples": [],
      "examplesTruncated": 0
    },
    {
      "ruleId": "solibri-203-wall-fire-rating",
      "ruleName": "Wände: FireRating vorhanden",
      "category": "property",
      "severity": "error",
      "kind": "logical",
      "checkType": "property-exists",
      "ruleset": "property-check",
      "totalChecked": 5,
      "passCount": 0,
      "failCount": 5,
      "failedElements": 5,
      "passRatePercent": 0,
      "skippedNoGeometry": 0,
      "publishable": true,
      "excluded": null,
      "caveat": null,
      "examples": [
        {
          "expressId": 4880,
          "name": "Basic Wall:Wall-Partn_12P-70MStd-12P:285846",
          "type": "IFCWALLSTANDARDCASE",
          "message": "Property \"FireRating\" fehlt"
        },
        {
          "expressId": 4705,
          "name": "Basic Wall:Wall-Partn_12P-70MStd-12P:285792",
          "type": "IFCWALLSTANDARDCASE",
          "message": "Property \"FireRating\" fehlt"
        },
        {
          "expressId": 2327,
          "name": "Basic Wall:Wall-Ext_102Bwk-75Ins-100LBlk-12P:285459",
          "type": "IFCWALL",
          "message": "Property \"FireRating\" fehlt"
        },
        {
          "expressId": 1752,
          "name": "Basic Wall:Wall-Ext_102Bwk-75Ins-100LBlk-12P:285395",
          "type": "IFCWALL",
          "message": "Property \"FireRating\" fehlt"
        },
        {
          "expressId": 1229,
          "name": "Basic Wall:Wall-Ext_102Bwk-75Ins-100LBlk-12P:285330",
          "type": "IFCWALL",
          "message": "Property \"FireRating\" fehlt"
        }
      ],
      "examplesTruncated": 0
    },
    {
      "ruleId": "solibri-17-fire-rating-values",
      "ruleName": "FireRating: Erlaubte Werte",
      "category": "property",
      "severity": "error",
      "kind": "logical",
      "checkType": "allowed-values",
      "ruleset": "property-check",
      "totalChecked": 10,
      "passCount": 0,
      "failCount": 10,
      "failedElements": 10,
      "passRatePercent": 0,
      "skippedNoGeometry": 0,
      "publishable": true,
      "excluded": null,
      "caveat": null,
      "examples": [
        {
          "expressId": 78145,
          "name": "Floor:Simple floor:295048",
          "type": "IFCSLAB",
          "message": "Property \"FireRating\" fehlt"
        },
        {
          "expressId": 33951,
          "name": "Floor:Floor-Grnd-Susp_65Scr-80Ins-100Blk-75PC:286349",
          "type": "IFCSLAB",
          "message": "Property \"FireRating\" fehlt"
        },
        {
          "expressId": 32626,
          "name": "Doors_IntSgl:810x2110mm:285996",
          "type": "IFCDOOR",
          "message": "Property \"FireRating\" fehlt"
        },
        {
          "expressId": 21827,
          "name": "Doors_IntSgl:810x2110mm:285959",
          "type": "IFCDOOR",
          "message": "Property \"FireRating\" fehlt"
        },
        {
          "expressId": 10993,
          "name": "Doors_ExtDbl_Flush:1810x2110mm:285860",
          "type": "IFCDOOR",
          "message": "Property \"FireRating\" fehlt"
        }
      ],
      "examplesTruncated": 5
    },
    {
      "ruleId": "solibri-171-wall-consistency",
      "ruleName": "Wandtyp-Konsistenz",
      "category": "property",
      "severity": "warning",
      "kind": "logical",
      "checkType": "consistency",
      "ruleset": "property-check",
      "totalChecked": 5,
      "passCount": 5,
      "failCount": 0,
      "failedElements": 0,
      "passRatePercent": 100,
      "skippedNoGeometry": 0,
      "publishable": true,
      "excluded": null,
      "caveat": {
        "code": "target-property-absent",
        "detail": "\"FireRating\" ist auf keinem der 5 anwendbaren Elemente belegt — das Ergebnis ist leer, nicht gut. Nicht als Erfolg darstellen."
      },
      "examples": [],
      "examplesTruncated": 0
    },
    {
      "ruleId": "solibri-203-slab-loadbearing",
      "ruleName": "Decken: LoadBearing definiert",
      "category": "property",
      "severity": "info",
      "kind": "logical",
      "checkType": "property-exists",
      "ruleset": "property-check",
      "totalChecked": 2,
      "passCount": 2,
      "failCount": 0,
      "failedElements": 0,
      "passRatePercent": 100,
      "skippedNoGeometry": 0,
      "publishable": true,
      "excluded": null,
      "caveat": null,
      "examples": [],
      "examplesTruncated": 0
    },
    {
      "ruleId": "prop-uvalue-exterior",
      "ruleName": "U-Wert für Außenbauteile",
      "category": "property",
      "severity": "error",
      "kind": "logical",
      "checkType": "property-exists",
      "ruleset": "property-check",
      "totalChecked": 4,
      "passCount": 4,
      "failCount": 0,
      "failedElements": 0,
      "passRatePercent": 100,
      "skippedNoGeometry": 0,
      "publishable": true,
      "excluded": null,
      "caveat": null,
      "examples": [],
      "examplesTruncated": 0
    },
    {
      "ruleId": "prop-material-structural",
      "ruleName": "Material für tragende Elemente",
      "category": "property",
      "severity": "error",
      "kind": "logical",
      "checkType": "property-exists",
      "ruleset": "property-check",
      "totalChecked": 2,
      "passCount": 2,
      "failCount": 0,
      "failedElements": 0,
      "passRatePercent": 100,
      "skippedNoGeometry": 0,
      "publishable": true,
      "excluded": null,
      "caveat": null,
      "examples": [],
      "examplesTruncated": 0
    },
    {
      "ruleId": "prop-cost-group-din276",
      "ruleName": "Kostengruppe (DIN 276) zugeordnet",
      "category": "property",
      "severity": "warning",
      "kind": "logical",
      "checkType": "classification-assigned",
      "ruleset": "property-check",
      "totalChecked": 15,
      "passCount": 0,
      "failCount": 15,
      "failedElements": 15,
      "passRatePercent": 0,
      "skippedNoGeometry": 0,
      "publishable": false,
      "excluded": {
        "code": "needs-in-app-classification",
        "detail": "Prüft Zuordnungen im System \"builtin-din276\" aus dem Klassifizierungs-Store der App; headless nicht vorhanden — würde 100 % Fehler melden."
      },
      "caveat": null,
      "examples": [
        {
          "expressId": 78145,
          "name": "Floor:Simple floor:295048",
          "type": "IFCSLAB",
          "message": "Keine Klassifizierung zugeordnet"
        },
        {
          "expressId": 36107,
          "name": "Windows_Sgl_Plain:1810x1210mm:287567",
          "type": "IFCWINDOW",
          "message": "Keine Klassifizierung zugeordnet"
        },
        {
          "expressId": 35959,
          "name": "Basic Roof:Roof_Flat-4Felt-150Ins-50Scr-150Conc-12Plr:286419",
          "type": "IFCROOF",
          "message": "Keine Klassifizierung zugeordnet"
        },
        {
          "expressId": 33951,
          "name": "Floor:Floor-Grnd-Susp_65Scr-80Ins-100Blk-75PC:286349",
          "type": "IFCSLAB",
          "message": "Keine Klassifizierung zugeordnet"
        },
        {
          "expressId": 33588,
          "name": "Windows_Sgl_Plain:1810x1210mm:286238",
          "type": "IFCWINDOW",
          "message": "Keine Klassifizierung zugeordnet"
        }
      ],
      "examplesTruncated": 10
    },
    {
      "ruleId": "solibri-01-duplicate-detection",
      "ruleName": "Duplikat-Erkennung",
      "category": "geometric",
      "severity": "error",
      "kind": "geometric",
      "checkType": "duplicate",
      "ruleset": "geometry-quality",
      "totalChecked": 14,
      "passCount": 14,
      "failCount": 0,
      "failedElements": 0,
      "passRatePercent": 100,
      "skippedNoGeometry": 14,
      "publishable": false,
      "excluded": {
        "code": "no-geometry",
        "detail": "Geometrische Prüfung — ohne Bounding-Boxen/Meshes (kein Fragments-Modell in Node) überspringt die Regel jedes Element und läge fälschlich bei 0 Befunden."
      },
      "caveat": null,
      "examples": [],
      "examplesTruncated": 0
    },
    {
      "ruleId": "solibri-216-wall-validation",
      "ruleName": "Wand-Geometrie Validierung",
      "category": "geometric",
      "severity": "warning",
      "kind": "geometric",
      "checkType": "custom",
      "ruleset": "geometry-quality",
      "totalChecked": 5,
      "passCount": 5,
      "failCount": 0,
      "failedElements": 0,
      "passRatePercent": 100,
      "skippedNoGeometry": 5,
      "publishable": false,
      "excluded": {
        "code": "no-geometry",
        "detail": "Geometrische Prüfung — ohne Bounding-Boxen/Meshes (kein Fragments-Modell in Node) überspringt die Regel jedes Element und läge fälschlich bei 0 Befunden."
      },
      "caveat": null,
      "examples": [],
      "examplesTruncated": 0
    },
    {
      "ruleId": "geo-slab-thickness",
      "ruleName": "Deckendicke im Bereich",
      "category": "geometric",
      "severity": "warning",
      "kind": "geometric",
      "checkType": "custom",
      "ruleset": "geometry-quality",
      "totalChecked": 2,
      "passCount": 2,
      "failCount": 0,
      "failedElements": 0,
      "passRatePercent": 100,
      "skippedNoGeometry": 2,
      "publishable": false,
      "excluded": {
        "code": "no-geometry",
        "detail": "Geometrische Prüfung — ohne Bounding-Boxen/Meshes (kein Fragments-Modell in Node) überspringt die Regel jedes Element und läge fälschlich bei 0 Befunden."
      },
      "caveat": null,
      "examples": [],
      "examplesTruncated": 0
    },
    {
      "ruleId": "geo-column-height",
      "ruleName": "Stützenhöhe im Bereich",
      "category": "geometric",
      "severity": "warning",
      "kind": "geometric",
      "checkType": "custom",
      "ruleset": "geometry-quality",
      "totalChecked": 0,
      "passCount": 0,
      "failCount": 0,
      "failedElements": 0,
      "passRatePercent": 0,
      "skippedNoGeometry": 0,
      "publishable": false,
      "excluded": {
        "code": "no-geometry",
        "detail": "Geometrische Prüfung — ohne Bounding-Boxen/Meshes (kein Fragments-Modell in Node) überspringt die Regel jedes Element und läge fälschlich bei 0 Befunden."
      },
      "caveat": null,
      "examples": [],
      "examplesTruncated": 0
    },
    {
      "ruleId": "geo-not-at-origin",
      "ruleName": "Element nicht am Ursprung",
      "category": "geometric",
      "severity": "info",
      "kind": "geometric",
      "checkType": "custom",
      "ruleset": "geometry-quality",
      "totalChecked": 7,
      "passCount": 7,
      "failCount": 0,
      "failedElements": 0,
      "passRatePercent": 100,
      "skippedNoGeometry": 7,
      "publishable": false,
      "excluded": {
        "code": "no-geometry",
        "detail": "Geometrische Prüfung — ohne Bounding-Boxen/Meshes (kein Fragments-Modell in Node) überspringt die Regel jedes Element und läge fälschlich bei 0 Befunden."
      },
      "caveat": null,
      "examples": [],
      "examplesTruncated": 0
    },
    {
      "ruleId": "geo-max-size",
      "ruleName": "Element-Ausmaße prüfen",
      "category": "geometric",
      "severity": "warning",
      "kind": "geometric",
      "checkType": "custom",
      "ruleset": "geometry-quality",
      "totalChecked": 14,
      "passCount": 14,
      "failCount": 0,
      "failedElements": 0,
      "passRatePercent": 100,
      "skippedNoGeometry": 14,
      "publishable": false,
      "excluded": {
        "code": "no-geometry",
        "detail": "Geometrische Prüfung — ohne Bounding-Boxen/Meshes (kein Fragments-Modell in Node) überspringt die Regel jedes Element und läge fälschlich bei 0 Befunden."
      },
      "caveat": null,
      "examples": [],
      "examplesTruncated": 0
    },
    {
      "ruleId": "solibri-172-fire-rating-consistency",
      "ruleName": "Brandschutz: Konsistenz",
      "category": "safety",
      "severity": "error",
      "kind": "logical",
      "checkType": "consistency",
      "ruleset": "fire-safety",
      "totalChecked": 0,
      "passCount": 0,
      "failCount": 0,
      "failedElements": 0,
      "passRatePercent": 0,
      "skippedNoGeometry": 0,
      "publishable": false,
      "excluded": {
        "code": "no-applicable-elements",
        "detail": "Keine anwendbaren Elemente im Modell — kein aussagekräftiges Ergebnis."
      },
      "caveat": null,
      "examples": [],
      "examplesTruncated": 0
    },
    {
      "ruleId": "safety-escape-width",
      "ruleName": "Türbreite Mindestmaß (alle Türen)",
      "category": "safety",
      "severity": "warning",
      "kind": "logical",
      "checkType": "property-value",
      "ruleset": "fire-safety",
      "totalChecked": 3,
      "passCount": 1,
      "failCount": 2,
      "failedElements": 2,
      "passRatePercent": 33.3,
      "skippedNoGeometry": 0,
      "publishable": true,
      "excluded": null,
      "caveat": null,
      "examples": [
        {
          "expressId": 32626,
          "name": "Doors_IntSgl:810x2110mm:285996",
          "type": "IFCDOOR",
          "message": "Property \"OverallWidth\": erwartet greater_or_equal 0.9 m, gefunden: 0.81 m"
        },
        {
          "expressId": 21827,
          "name": "Doors_IntSgl:810x2110mm:285959",
          "type": "IFCDOOR",
          "message": "Property \"OverallWidth\": erwartet greater_or_equal 0.9 m, gefunden: 0.81 m"
        }
      ],
      "examplesTruncated": 0
    },
    {
      "ruleId": "safety-fire-wall-rating",
      "ruleName": "Brandschutz-Wände: erlaubte Bewertungen",
      "category": "safety",
      "severity": "error",
      "kind": "logical",
      "checkType": "allowed-values",
      "ruleset": "fire-safety",
      "totalChecked": 0,
      "passCount": 0,
      "failCount": 0,
      "failedElements": 0,
      "passRatePercent": 0,
      "skippedNoGeometry": 0,
      "publishable": false,
      "excluded": {
        "code": "no-applicable-elements",
        "detail": "Keine anwendbaren Elemente im Modell — kein aussagekräftiges Ergebnis."
      },
      "caveat": null,
      "examples": [],
      "examplesTruncated": 0
    },
    {
      "ruleId": "safety-fire-compartment-area",
      "ruleName": "Sehr große Räume (Flächen-Grenzwert)",
      "category": "safety",
      "severity": "warning",
      "kind": "logical",
      "checkType": "property-value",
      "ruleset": "fire-safety",
      "totalChecked": 4,
      "passCount": 4,
      "failCount": 0,
      "failedElements": 0,
      "passRatePercent": 100,
      "skippedNoGeometry": 0,
      "publishable": true,
      "excluded": null,
      "caveat": null,
      "examples": [],
      "examplesTruncated": 0
    },
    {
      "ruleId": "acc-corridor-width",
      "ruleName": "Flur Mindestbreite",
      "category": "accessibility",
      "severity": "warning",
      "kind": "geometric",
      "checkType": "custom",
      "ruleset": "accessibility",
      "totalChecked": 0,
      "passCount": 0,
      "failCount": 0,
      "failedElements": 0,
      "passRatePercent": 0,
      "skippedNoGeometry": 0,
      "publishable": false,
      "excluded": {
        "code": "no-geometry",
        "detail": "Geometrische Prüfung — ohne Bounding-Boxen/Meshes (kein Fragments-Modell in Node) überspringt die Regel jedes Element und läge fälschlich bei 0 Befunden."
      },
      "caveat": null,
      "examples": [],
      "examplesTruncated": 0
    },
    {
      "ruleId": "acc-ramp-slope",
      "ruleName": "Rampen max. Steigung",
      "category": "accessibility",
      "severity": "warning",
      "kind": "logical",
      "checkType": "property-value",
      "ruleset": "accessibility",
      "totalChecked": 0,
      "passCount": 0,
      "failCount": 0,
      "failedElements": 0,
      "passRatePercent": 0,
      "skippedNoGeometry": 0,
      "publishable": false,
      "excluded": {
        "code": "no-applicable-elements",
        "detail": "Keine anwendbaren Elemente im Modell — kein aussagekräftiges Ergebnis."
      },
      "caveat": null,
      "examples": [],
      "examplesTruncated": 0
    },
    {
      "ruleId": "acc-wc-area",
      "ruleName": "WC Mindestfläche",
      "category": "accessibility",
      "severity": "warning",
      "kind": "logical",
      "checkType": "property-value",
      "ruleset": "accessibility",
      "totalChecked": 0,
      "passCount": 0,
      "failCount": 0,
      "failedElements": 0,
      "passRatePercent": 0,
      "skippedNoGeometry": 0,
      "publishable": false,
      "excluded": {
        "code": "no-applicable-elements",
        "detail": "Keine anwendbaren Elemente im Modell — kein aussagekräftiges Ergebnis."
      },
      "caveat": null,
      "examples": [],
      "examplesTruncated": 0
    },
    {
      "ruleId": "collision-structural-mep",
      "ruleName": "Tragwerk ↔ Haustechnik Kollision",
      "category": "distance-clearance",
      "severity": "error",
      "kind": "geometric",
      "checkType": "collision",
      "ruleset": "collision-check",
      "totalChecked": 2,
      "passCount": 2,
      "failCount": 0,
      "failedElements": 0,
      "passRatePercent": 100,
      "skippedNoGeometry": 2,
      "publishable": false,
      "excluded": {
        "code": "no-geometry",
        "detail": "Geometrische Prüfung — ohne Bounding-Boxen/Meshes (kein Fragments-Modell in Node) überspringt die Regel jedes Element und läge fälschlich bei 0 Befunden."
      },
      "caveat": null,
      "examples": [],
      "examplesTruncated": 0
    },
    {
      "ruleId": "collision-wall-pipe",
      "ruleName": "Wand ↔ Rohr Kollision",
      "category": "distance-clearance",
      "severity": "warning",
      "kind": "geometric",
      "checkType": "collision",
      "ruleset": "collision-check",
      "totalChecked": 5,
      "passCount": 5,
      "failCount": 0,
      "failedElements": 0,
      "passRatePercent": 100,
      "skippedNoGeometry": 5,
      "publishable": false,
      "excluded": {
        "code": "no-geometry",
        "detail": "Geometrische Prüfung — ohne Bounding-Boxen/Meshes (kein Fragments-Modell in Node) überspringt die Regel jedes Element und läge fälschlich bei 0 Befunden."
      },
      "caveat": null,
      "examples": [],
      "examplesTruncated": 0
    },
    {
      "ruleId": "collision-arch-structural",
      "ruleName": "Architektur ↔ Tragwerk Kollision",
      "category": "distance-clearance",
      "severity": "warning",
      "kind": "geometric",
      "checkType": "collision",
      "ruleset": "collision-check",
      "totalChecked": 7,
      "passCount": 7,
      "failCount": 0,
      "failedElements": 0,
      "passRatePercent": 100,
      "skippedNoGeometry": 7,
      "publishable": false,
      "excluded": {
        "code": "no-geometry",
        "detail": "Geometrische Prüfung — ohne Bounding-Boxen/Meshes (kein Fragments-Modell in Node) überspringt die Regel jedes Element und läge fälschlich bei 0 Befunden."
      },
      "caveat": null,
      "examples": [],
      "examplesTruncated": 0
    },
    {
      "ruleId": "collision-material-based",
      "ruleName": "Material-basierte Kollision",
      "category": "distance-clearance",
      "severity": "warning",
      "kind": "geometric",
      "checkType": "collision",
      "ruleset": "collision-check",
      "totalChecked": 7,
      "passCount": 7,
      "failCount": 0,
      "failedElements": 0,
      "passRatePercent": 100,
      "skippedNoGeometry": 7,
      "publishable": false,
      "excluded": {
        "code": "no-geometry",
        "detail": "Geometrische Prüfung — ohne Bounding-Boxen/Meshes (kein Fragments-Modell in Node) überspringt die Regel jedes Element und läge fälschlich bei 0 Befunden."
      },
      "caveat": null,
      "examples": [],
      "examplesTruncated": 0
    },
    {
      "ruleId": "collision-generic",
      "ruleName": "Generische Kollisionsprüfung",
      "category": "distance-clearance",
      "severity": "warning",
      "kind": "geometric",
      "checkType": "collision",
      "ruleset": "collision-check",
      "totalChecked": 3,
      "passCount": 3,
      "failCount": 0,
      "failedElements": 0,
      "passRatePercent": 100,
      "skippedNoGeometry": 3,
      "publishable": false,
      "excluded": {
        "code": "no-geometry",
        "detail": "Geometrische Prüfung — ohne Bounding-Boxen/Meshes (kein Fragments-Modell in Node) überspringt die Regel jedes Element und läge fälschlich bei 0 Befunden."
      },
      "caveat": null,
      "examples": [],
      "examplesTruncated": 0
    }
  ]
}
