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:
woogiandClaude Opus 4.8 committed 2026-07-03 00:22:02 +00:00
commit 1d248a8808
262 files changed
+8209

No files matched your search

@@ -0,0 +1 @@
[{"assertion_id": "P02.02#2", "original_attribute": "room_name", "original_value": "MEN'S RESTROOM", "normalized_value": null, "normalized_unit": null, "normalized_attribute": null, "normalization_notes": "Value is a proper name. No normalization applied.", "source_text_preserved": "MEN'S RESTROOM", "normalization_confidence": "high"}, {"assertion_id": "P02.02#3", "original_attribute": "room_name", "original_value": "WOMEN'S RESTROOM", "normalized_value": null, "normalized_unit": null, "normalized_attribute": null, "normalization_notes": "Value is a proper name. No normalization applied.", "source_text_preserved": "WOMEN'S RESTROOM", "normalization_confidence": "high"}, {"assertion_id": "P02.02#4", "original_attribute": "room_name", "original_value": "CLEANING SUPPLIES/STORAGE", "normalized_value": null, "normalized_unit": null, "normalized_attribute": null, "normalization_notes": "Value is a proper name. No normalization applied.", "source_text_preserved": "CLEANING SUPPLIES/STORAGE", "normalization_confidence": "high"}, {"assertion_id": "P02.02#5", "original_attribute": "room_name", "original_value": "MANAGER'S OFFICE", "normalized_value": null, "normalized_unit": null, "normalized_attribute": null, "normalization_notes": "Value is a proper name. No normalization applied.", "source_text_preserved": "MANAGER'S OFFICE", "normalization_confidence": "high"}, {"assertion_id": "P02.02#6", "original_attribute": "room_name", "original_value": "SALES AREA", "normalized_value": null, "normalized_unit": null, "normalized_attribute": null, "normalization_notes": "Value is a proper name. No normalization applied.", "source_text_preserved": "SALES AREA", "normalization_confidence": "high"}, {"assertion_id": "P02.02#7", "original_attribute": "keynote_assertion", "original_value": "EWH-1 is located above ceiling, suspended as high as possible in ceiling plenum and requires an auxiliary drain pan.", "normalized_value": {"subject": "EWH-1", "location": "above ceiling", "installation": "suspended as high as possible in ceiling plenum", "requirement": "auxiliary drain pan"}, "normalized_unit": null, "normalized_attribute": null, "normalization_notes": "Parsed descriptive text into structured data.", "source_text_preserved": "KEYED NOTE: 1 EWH-1 ABOVE CEILING SUSPENDED AS HIGH AS POSSIBLE IN CEILING PLENUM. PROVIDE AUXILIARY DRAIN PAN BELOW WATER HEATER...", "normalization_confidence": "high"}, {"assertion_id": "P02.02#8", "original_attribute": "Drain Routing", "original_value": "Route 3/4\" T&P drain line and 3/4\" auxiliary drain lines to floor sink below.", "normalized_value": {"T&P_drain_line_size": {"value": 0.75, "unit": "inches"}, "auxiliary_drain_line_size": {"value": 0.75, "unit": "inches"}, "destination": "floor sink"}, "normalized_unit": null, "normalized_attribute": null, "normalization_notes": "Extracted pipe sizes and destination from text. 3/4\" converted to 0.75 inches.", "source_text_preserved": "ROUTE 3/4\" T&P DRAIN LINE AND 3/4\" AUXILIARY DRAIN LINES TO FLOOR SINK BELOW.", "normalization_confidence": "high"}, {"assertion_id": "P02.02#9", "original_attribute": "Support Requirement", "original_value": "Provide adequate supports to prevent any movement of T&P and aux. drain lines.", "normalized_value": null, "normalized_unit": null, "normalized_attribute": null, "normalization_notes": "Qualitative performance requirement. No normalization applied.", "source_text_preserved": "PROVIDE ADEQUATE SUPPORTS TO PREVENT ANY MOVEMENT OF T&P AND AUX. DRAIN LINES.", "normalization_confidence": "low"}, {"assertion_id": "P02.02#10", "original_attribute": "keynote_assertion", "original_value": "Route proposed 1-1/4\" CW line to existing 2\" water main line.", "normalized_value": {"proposed_line_size": {"value": 1.25, "unit": "inches"}, "existing_line_size": {"value": 2, "unit": "inches"}}, "normalized_unit": null, "normalized_attribute": null, "normalization_notes": "Extracted pipe sizes from text. 1-1/4\" converted to 1.25 inches.", "source_text_preserved": "KEYED NOTE: 2 ROUTE PROPOSED 1-1/4\" CW LINE TO EXISTING 2\" WATER MAIN LINE AT THIS APPROXIMATE LOCATION. FIELD VERIFY EXACT LOCATION AND SIZE OF EXISTING PIPE.", "normalization_confidence": "high"}, {"assertion_id": "P02.02#11", "original_attribute": "keynote_assertion", "original_value": "Route 1/2\" cold and hot water down.", "normalized_value": {"pipe_size": {"value": 0.5, "unit": "inches"}, "media": ["cold water", "hot water"]}, "normalized_unit": null, "normalized_attribute": null, "normalization_notes": "Extracted pipe size from text. 1/2\" converted to 0.5 inches.", "source_text_preserved": "KEYED NOTE: 3 ROUTE 1/2\" COLD AND HOT WATER DOWN.", "normalization_confidence": "high"}, {"assertion_id": "P02.02#12", "original_attribute": "keynote_assertion", "original_value": "Route 1/2\" cold water down to recessed valve box. Confirm exact location with owner/architect.", "normalized_value": {"pipe_size": {"value": 0.5, "unit": "inches"}, "media": "cold water", "dLine truncated