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 @@
{"issues": [{"issue_id": "CBI-001", "source_stage": "constructability", "category": "other", "severity": "critical", "confidence": "high", "location": "General Notes and Project Description", "disciplines": ["General"], "sheets": ["G11.04", "G21.01", "G31.02"], "description": "The project scope is defined inconsistently as both a 'FIRST GENERATION RETAIL SPACE' build-out (implying an empty shell) and a 'TENANT INTERIOR REMODEL' (implying existing construction to be demolished). Specification 02 41 00 for selective demolition also implies a remodel. This ambiguity presents a major risk to bidders who cannot accurately determine the scope of demolition work.", "evidence": [{"discipline": "General", "sheet": "G11.04", "source_text": "PROJECT IS A TENANT INTERIOR LEASE SPACE BUILD OUT FOR A FIRST GENERATION RETAIL SPACE.", "asserted_value": "First Generation Build-out"}, {"discipline": "General", "sheet": "G21.01", "source_text": "PROJECT IS A TENANT INTERIOR REMODEL OF 3,323 SF", "asserted_value": "Remodel"}], "recommended_resolution": "Clarify if the project is a first-generation build-out or a remodel and ensure all drawing sheets consistently reflect the correct scope of work, particularly regarding demolition.", "code_reference": null}, {"issue_id": "CBI-002", "source_stage": "constructability", "category": "access_clearance", "severity": "critical", "confidence": "high", "location": "INVENTORY Room, West Wall", "disciplines": ["Architectural", "Plumbing"], "sheets": ["A24.01", "P02.02"], "description": "The Architectural plan shows a Network Rack System to be mounted on the west wall of the INVENTORY room, while the Plumbing plan shows the Electric Water Heater (EWH-1) mounted in the exact same location. These two pieces of equipment cannot occupy the same space, creating a direct spatial clash.", "evidence": [{"discipline": "Architectural", "sheet": "A24.01", "source_text": "RACK SYSTEM ABOVE SAFE @ -74\" TO BOTTOM", "asserted_value": "Network Rack is located on west wall of Inventory room."}, {"discipline": "Plumbing", "sheet": "P02.02", "source_text": "EWH-1", "asserted_value": "Electric Water Heater is located on west wall of Inventory room."}], "recommended_resolution": "Coordinate the architectural, plumbing, and electrical drawings to relocate either the network rack or the water heater to resolve the spatial clash. It is strongly advised not to locate water-bearing equipment above or adjacent to sensitive electronic equipment.", "code_reference": null}, {"issue_id": "CBI-003", "source_stage": "constructability", "category": "support_anchorage", "severity": "critical", "confidence": "high", "location": "Roof", "disciplines": ["Architectural", "Mechanical"], "sheets": ["A25.01", "M01.01", "M02.02"], "description": "The Architectural Roof Plan (A25.01) shows and provides dimensions for only one new Rooftop Unit (RTU). The Mechanical Roof Plan (M02.02) and schedule (M01.01) clearly indicate two new RTUs (RTU-1 & RTU-2). This discrepancy poses a risk that structural support, roof curbs, and warranty-compliant penetrations may only be provided for one unit, leaving the second unit without required support.", "evidence": [{"discipline": "Architectural", "sheet": "A25.01", "source_text": "2 NEW RTU, PROVIDE NEW MECHANICAL ROOF CURBS AS NECESSARY...", "asserted_value": "Architectural roof plan shows one graphic location for 'NEW RTU'."}, {"discipline": "Mechanical", "sheet": "M02.02", "source_text": "RTU-1, RTU-2", "asserted_value": "Mechanical roof plan shows two distinct RTUs."}, {"discipline": "Mechanical", "sheet": "M01.01", "source_text": "TAG: RTU-1,2; MFR. CARRIER; MODEL 50FE-M07", "asserted_value": "Mechanical schedule lists two RTUs."}], "recommended_resolution": "The Architectural and Mechanical plans must be coordinated. The Architectural Roof Plan should be updated to show the correct quantity and locations for both RTUs to ensure proper structural and roofing provisions are made.", "code_reference": null}, {"issue_id": "CBI-004", "source_stage": "constructability", "category": "detail_gap", "severity": "high", "confidence": "high", "location": "Ceilings, throughout space", "disciplines": ["Architectural", "General"], "sheets": ["A22.01", "A23.01", "G31.05"], "description": "There is a fundamental conflict in the ceiling material specified. The Reflected Ceiling Plan (A22.01) and Finish Plan (A23.01) both specify an acoustical tile ceiling (AT-1) throughout the space. However, the Gypsum Board specification (09 29 00 on sheet G31.05) explicitly includes a specification for 5/8\" gypsum board on ceilings. This ambiguity affects bidding and the entire interior construction sequence.", "evidence": [{"discipline": "Architectural", "sheet": "A23.01", "source_text": "N. CEILING THROUGHOUT ENTIRE SPACE TO BE AT-1 ACOUSTIC CEILING TILE WITH C4-A CEILING GRID.", "asserted_value": "Acoustic Tile Ceiling"}, {"discipline": "General", "sheet": "G31.05", "source_text": "THICKNESS: ... B. CEILINGS: 5/8 INCH.Line truncated