Initial commit: Conflict Checker

Cross-discipline design-contradiction checker for construction drawing
sets. Standalone tool broken out from Iron_Bid; a pipeline stage may
later fold back into Iron_Bid.

Pipeline: PDF->images -> per-sheet assertion extraction -> deterministic
clustering by location -> per-cluster reasoning -> report.
Includes CLI (cli/run_check.py) and web UI (backend/main.py).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-03 00:22:02 +00:00
co-authored by Claude Opus 4.8
commit 1d248a8808
262 changed files with 8209 additions and 0 deletions
@@ -0,0 +1 @@
{"sheet_number": "G11.02", "discipline": "General", "sheet_title": "SYMBOLS & TYPICAL HEIGHTS", "level": null, "scale": null, "assertions": [{"subject": "Counter", "attribute": "knee_clearance_width", "value": "36", "source_text": "36\" MIN", "confidence": "high", "location_key": {"grid": null, "room": null, "level": null, "tag": null}}, {"subject": "Counter", "attribute": "counter_height_AFF", "value": "34", "source_text": "34\" MAX", "confidence": "high", "location_key": {"grid": null, "room": null, "level": null, "tag": null}}, {"subject": "Counter", "attribute": "knee_clearance_height", "value": "28", "source_text": "28\" MIN", "confidence": "high", "location_key": {"grid": null, "room": null, "level": null, "tag": null}}, {"subject": "Signage", "attribute": "mounting_height_range_AFF", "value": "48-60", "source_text": "TACTILE CHARACTERS ON SIGNS SHALL BE LOCATED 48\" AFF MIN MEASURED FROM THE BASELINE OF THE LOWEST TACTILE CHARACTER AND 60\" AFF MAX MEASURED FROM THE BASELINE OF THE HIGHEST TACTILE CHARACTER.", "confidence": "high", "location_key": {"grid": null, "room": null, "level": null, "tag": null}}, {"subject": "Fire Extinguisher Cabinet", "attribute": "protrusion_allowance", "value": "4", "source_text": "NOTE: FIRE EXTINGUISHER CANNOT PROTRUDE MORE THAN 4\"", "confidence": "high", "location_key": {"grid": null, "room": null, "level": null, "tag": null}}, {"subject": "Casework", "attribute": "counter_height_range_AFF", "value": "30-36", "source_text": "COUNTER/CREDENZA @ 30\"-36\" UNO", "confidence": "high", "location_key": {"grid": null, "room": null, "level": null, "tag": null}}, {"subject": "Grab Bar", "attribute": "mounting_height_range_AFF", "value": "33-36", "source_text": "33\"-36\" AFF", "confidence": "high", "location_key": {"grid": null, "room": null, "level": null, "tag": null}}, {"subject": "Grab Bar", "attribute": "load_requirement", "value": "250", "source_text": "NOTE: ALLOWABLE STRESSES SHALL NOT BE EXCEEDED FOR MATERIALS USED WHERE A VERTICAL OR HORIZONTAL FORCE OF 250 LBS. IS APPLIED AT ANY POINT ON THE GRAB BAR, FASTENER MOUNTING DEVICE OR SUPPORTING STRUCTURE.", "confidence": "high", "location_key": {"grid": null, "room": null, "level": null, "tag": null}}, {"subject": "Lavatory", "attribute": "clear_floor_space", "value": "30x48", "source_text": "CLEAR FLOOR SPACE 30\" MIN 48\" MIN", "confidence": "high", "location_key": {"grid": null, "room": "30", "level": null, "tag": null}}, {"subject": "Lavatory", "attribute": "rim_height_AFF", "value": "34", "source_text": "34\" MAX", "confidence": "high", "location_key": {"grid": null, "room": null, "level": null, "tag": null}}, {"subject": "Lavatory", "attribute": "general_note", "value": "Insulate exposed pipes", "source_text": "INSULATE EXPOSED PIPES", "confidence": "high", "location_key": {"grid": null, "room": null, "level": null, "tag": null}}, {"subject": "Mirror", "attribute": "mounting_height_AFF", "value": "40", "source_text": "40\" MAX", "confidence": "high", "location_key": {"grid": null, "room": null, "level": null, "tag": null}}, {"subject": "Soap Dispenser", "attribute": "mounting_height_AFF", "value": "48", "source_text": "48\" MAX", "confidence": "medium", "location_key": {"grid": null, "room": null, "level": null, "tag": null}}]}