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>
1 line
17 KiB
JSON
1 line
17 KiB
JSON
[{"assertion_id": "E05.01#14", "original_value": "12", "normalized_value": "12", "normalized_unit": "inches", "normalized_attribute": null, "normalization_notes": "Extracted from source text '12\"'.", "source_text_preserved": true, "normalization_confidence": "high"}, {"assertion_id": "E05.01#15", "original_value": "Must be supported by wire hanger at each corner, independent of ceiling support system", "normalized_value": null, "normalized_unit": null, "normalized_attribute": null, "normalization_notes": null, "source_text_preserved": true, "normalization_confidence": null}, {"assertion_id": "E05.01#16", "original_value": "24", "normalized_value": "24", "normalized_unit": "inches", "normalized_attribute": null, "normalization_notes": "Extracted from source text '24\"'.", "source_text_preserved": true, "normalization_confidence": "high"}, {"assertion_id": "E05.02#0", "original_value": "Circuiting to all non dedicated electrical receptacles and switches are required to utilize parallel circuiting by the use of 'pig tails' to each device so that if an outlet is removed or fails electrical continuity the circuit will not be compromised.", "normalized_value": null, "normalized_unit": null, "normalized_attribute": null, "normalization_notes": null, "source_text_preserved": true, "normalization_confidence": null}, {"assertion_id": "E05.02#1", "original_value": "All electrical wiring must be properly spliced by twisting the wires together and use of approved and listed compression wire nuts for any wiring.", "normalized_value": null, "normalized_unit": null, "normalized_attribute": null, "normalization_notes": null, "source_text_preserved": true, "normalization_confidence": null}, {"assertion_id": "E05.02#2", "original_value": "Confirm switching requirement with the owner.", "normalized_value": null, "normalized_unit": null, "normalized_attribute": null, "normalization_notes": null, "source_text_preserved": true, "normalization_confidence": null}, {"assertion_id": "E05.02#3", "original_value": "Emergency lights on this circuit will receive a hot leg which is not routed via the lighting controller so that the emergency ballast has a constant hot to detect power loss.", "normalized_value": null, "normalized_unit": null, "normalized_attribute": null, "normalization_notes": null, "source_text_preserved": true, "normalization_confidence": null}, {"assertion_id": "E05.02#4", "original_value": "Grounding electrode conductor to ground to 3/4\" x 10' Cu rod or building steel.", "normalized_value": null, "normalized_unit": null, "normalized_attribute": null, "normalization_notes": "Complex value with multiple dimensions. Source text has a likely typo '3/4'' which is '3/4\"' in the value.", "source_text_preserved": true, "normalization_confidence": "low"}, {"assertion_id": "E05.02#5", "original_value": "6", "normalized_value": "6", "normalized_unit": "inches", "normalized_attribute": null, "normalization_notes": "Extracted from source text '6\"'.", "source_text_preserved": true, "normalization_confidence": "high"}, {"assertion_id": "E05.02#6", "original_value": "3\" larger than the transformer (6\" at the rear)", "normalized_value": null, "normalized_unit": null, "normalized_attribute": null, "normalization_notes": "Value is conditional and contains multiple dimensions.", "source_text_preserved": true, "normalization_confidence": "low"}, {"assertion_id": "E05.02#7", "original_value": "Neoprene vibration isolation pad", "normalized_value": null, "normalized_unit": null, "normalized_attribute": null, "normalization_notes": null, "source_text_preserved": true, "normalization_confidence": null}, {"assertion_id": "E05.02#8", "original_value": "Provide NEC working clearance in front of transformers.", "normalized_value": null, "normalized_unit": null, "normalized_attribute": null, "normalization_notes": null, "source_text_preserved": true, "normalization_confidence": null}, {"assertion_id": "E05.02#9", "original_value": "Min 1/4", "normalized_value": "0.25", "normalized_unit": "inches", "normalized_attribute": null, "normalization_notes": "Value is a minimum. Normalized from '1/4\"' in source.", "source_text_preserved": true, "normalization_confidence": "high"}, {"assertion_id": "E05.02#10", "original_value": "4", "normalized_value": "4", "normalized_unit": "count", "normalized_attribute": null, "normalization_notes": "Value represents a quantity.", "source_text_preserved": true, "normalization_confidence": "high"}, {"assertion_id": "E05.02#11", "original_value": "Secure to bottom cord of structure. Provide (2) 1-1/2\" x 1-1/2\" x 3/16\" angled cord to top cord within 6\" of point load. (Typ. for 4).", "normalized_value": null, "normalized_unit": null, "normalized_attribute": null, "normalization_notes": "Complex value with multiple dimensions and counts.", "source_text_preserved": true, "normalization_confidence": "low"}, {"assertion_id": "E05.02#12", "original_value": "4 spring vibration isolators sized for weight of transformer.", "normalized_value": null, "normalized_unit": null, "normalized_attribute": null, "normalization_notes": "Value is a descriptive requirement, not just a quantity.", "source_text_preserved": true, "normalization_confidence": "medium"}, {"assertion_id": "E05.02#13", "original_value": "Anvil trapeze assembly model #45/#46", "normalized_value": null, "normalized_unit": null, "normalized_attribute": null, "normalization_notes": null, "source_text_preserved": true, "normalization_confidence": null}, {"assertion_id": "E05.02#14", "original_value": "Verify support sizing and designed with project structural engineer prior to assembly.", "normalized_value": null, "normalized_unit": null, "normalized_attribute": null, "normalization_notes": null, "source_text_preserved": true, "normalization_confidence": null}, {"assertion_id": "P01.01#0", "original_value": "Seal all penetrations through rated walls, floors and ceilings with a UL listed assembly to provide a rating equal to or greater than the rating of the wall, floor or ceiling.", "normalized_value": null, "normalized_unit": null, "normalized_attribute": null, "normalization_notes": null, "source_text_preserved": true, "normalization_confidence": null}, {"assertion_id": "P01.01#1", "original_value": "Insulate all exposed drain piping and water supply piping beneath A.D.A. compliant lavatories & sinks with fully molded closed cell vinyl insulation kit as manufactured by Truebro, Brocar or McGuire.", "normalized_value": null, "normalized_unit": null, "normalized_attribute": null, "normalization_notes": null, "source_text_preserved": true, "normalization_confidence": null}, {"assertion_id": "P01.01#2", "original_value": "Provide UL fire rated assemblies where pipes penetrate above grade floors. Provide UL fire rated assemblies were pipes penetrate fire rated walls.", "normalized_value": null, "normalized_unit": null, "normalized_attribute": null, "normalization_notes": null, "source_text_preserved": true, "normalization_confidence": null}, {"assertion_id": "P01.01#3", "original_value": "Sanitary Waste and Vent (Below Slab Only): Schedule 40 PVC", "normalized_value": null, "normalized_unit": null, "normalized_attribute": null, "normalization_notes": null, "source_text_preserved": true, "normalization_confidence": null}, {"assertion_id": "P01.01#4", "original_value": "Sanitary Waste and Vent (Above Slab Only): Cast iron pipe and fittings, ASTM A 888 or CISPI 301.", "normalized_value": null, "normalized_unit": null, "normalized_attribute": null, "normalization_notes": null, "source_text_preserved": true, "normalization_confidence": null}, {"assertion_id": "P01.01#5", "original_value": "Domestic Water: Type 'L' copper tubing with wrought copper fittings and 95/5 (tin/antimony) solder joints.", "normalized_value": null, "normalized_unit": null, "normalized_attribute": null, "normalization_notes": null, "source_text_preserved": true, "normalization_confidence": null}, {"assertion_id": "P01.01#6", "original_value": "480", "normalized_value": "480", "normalized_unit": "Volts", "normalized_attribute": null, "normalization_notes": "Unit from source text 'VOLTS'.", "source_text_preserved": true, "normalization_confidence": "high"}, {"assertion_id": "P01.01#7", "original_value": "3", "normalized_value": "3", "normalized_unit": "Phase", "normalized_attribute": null, "normalization_notes": "Unit from source text 'PHASE'.", "source_text_preserved": true, "normalization_confidence": "high"}, {"assertion_id": "P01.01#8", "original_value": "5", "normalized_value": "5", "normalized_unit": "kW", "normalized_attribute": null, "normalization_notes": "Unit from source text 'KW'.", "source_text_preserved": true, "normalization_confidence": "high"}, {"assertion_id": "P01.01#9", "original_value": "30", "normalized_value": "30", "normalized_unit": "Gallons", "normalized_attribute": null, "normalization_notes": "Unit from source text 'GALLONS'.", "source_text_preserved": true, "normalization_confidence": "high"}, {"assertion_id": "P01.01#10", "original_value": "Floor Mounted", "normalized_value": null, "normalized_unit": null, "normalized_attribute": null, "normalization_notes": null, "source_text_preserved": true, "normalization_confidence": null}, {"assertion_id": "P01.01#11", "original_value": "ADA 17\"H elongated bowl", "normalized_value": "17", "normalized_unit": "inches", "normalized_attribute": "bowl_height", "normalization_notes": "Extracted from '17\"H'.", "source_text_preserved": true, "normalization_confidence": "high"}, {"assertion_id": "P01.01#12", "original_value": "Flush handle to be on the wide side of the stall.", "normalized_value": null, "normalized_unit": null, "normalized_attribute": null, "normalization_notes": null, "source_text_preserved": true, "normalization_confidence": null}, {"assertion_id": "P01.01#13", "original_value": "Wall Mounted", "normalized_value": null, "normalized_unit": null, "normalized_attribute": null, "normalization_notes": null, "source_text_preserved": true, "normalization_confidence": null}, {"assertion_id": "P01.01#14", "original_value": "LF-170 LEONARD THERMOSTATIC MIXING VALVE WITH THE OUTLET TEMPERATURE TO BE SET AT 110F.", "normalized_value": "110", "normalized_unit": "degrees Fahrenheit", "normalized_attribute": "outlet_temperature", "normalization_notes": "Extracted from '110F'.", "source_text_preserved": true, "normalization_confidence": "high"}, {"assertion_id": "P01.01#15", "original_value": "LAVATORY (WALL MOUNTED) (A.D.A.)", "normalized_value": null, "normalized_unit": null, "normalized_attribute": null, "normalization_notes": null, "source_text_preserved": true, "normalization_confidence": null}, {"assertion_id": "P01.01#16", "original_value": "Floor Mounted", "normalized_value": null, "normalized_unit": null, "normalized_attribute": null, "normalization_notes": null, "source_text_preserved": true, "normalization_confidence": null}, {"assertion_id": "P01.01#17", "original_value": "Wall Mount Faucet", "normalized_value": null, "normalized_unit": null, "normalized_attribute": null, "normalization_notes": null, "source_text_preserved": true, "normalization_confidence": null}, {"assertion_id": "P01.01#18", "original_value": "Self-rimming", "normalized_value": null, "normalized_unit": null, "normalized_attribute": null, "normalization_notes": null, "source_text_preserved": true, "normalization_confidence": null}, {"assertion_id": "P01.01#19", "original_value": "SINGLE BOWL SINK (A.D.A)", "normalized_value": null, "normalized_unit": null, "normalized_attribute": null, "normalization_notes": null, "source_text_preserved": true, "normalization_confidence": null}, {"assertion_id": "P01.01#20", "original_value": "Install automatic pressure drop activated trap primer by PPP products PR-500.", "normalized_value": null, "normalized_unit": null, "normalized_attribute": null, "normalization_notes": null, "source_text_preserved": true, "normalization_confidence": null}, {"assertion_id": "P02.01#0", "original_value": "INVENTORY", "normalized_value": null, "normalized_unit": null, "normalized_attribute": null, "normalization_notes": null, "source_text_preserved": true, "normalization_confidence": null}, {"assertion_id": "P02.01#1", "original_value": "LOUNGE", "normalized_value": null, "normalized_unit": null, "normalized_attribute": null, "normalization_notes": null, "source_text_preserved": true, "normalization_confidence": null}, {"assertion_id": "P02.01#2", "original_value": "MEN'S RESTROOM", "normalized_value": null, "normalized_unit": null, "normalized_attribute": null, "normalization_notes": null, "source_text_preserved": true, "normalization_confidence": null}, {"assertion_id": "P02.01#3", "original_value": "WOMEN'S ROOM", "normalized_value": null, "normalized_unit": null, "normalized_attribute": null, "normalization_notes": null, "source_text_preserved": true, "normalization_confidence": null}, {"assertion_id": "P02.01#4", "original_value": "MANAGER'S OFFICE", "normalized_value": null, "normalized_unit": null, "normalized_attribute": null, "normalization_notes": null, "source_text_preserved": true, "normalization_confidence": null}, {"assertion_id": "P02.01#5", "original_value": "CLEANING SUPPLIES/STORAGE", "normalized_value": null, "normalized_unit": null, "normalized_attribute": null, "normalization_notes": null, "source_text_preserved": true, "normalization_confidence": null}, {"assertion_id": "P02.01#6", "original_value": "SALES AREA", "normalized_value": null, "normalized_unit": null, "normalized_attribute": null, "normalization_notes": null, "source_text_preserved": true, "normalization_confidence": null}, {"assertion_id": "P02.01#7", "original_value": "EDF-1 is located in WOMEN'S ROOM.", "normalized_value": null, "normalized_unit": null, "normalized_attribute": null, "normalization_notes": null, "source_text_preserved": true, "normalization_confidence": null}, {"assertion_id": "P02.01#8", "original_value": "WC-1 is located in WOMEN'S ROOM.", "normalized_value": null, "normalized_unit": null, "normalized_attribute": null, "normalization_notes": null, "source_text_preserved": true, "normalization_confidence": null}, {"assertion_id": "P02.01#9", "original_value": "FD-1 is located in WOMEN'S ROOM.", "normalized_value": null, "normalized_unit": null, "normalized_attribute": null, "normalization_notes": "Source text '3\"FD-1' indicates a pipe size not present in the original value.", "source_text_preserved": true, "normalization_confidence": null}, {"assertion_id": "P02.01#10", "original_value": "WC-1 is located in MEN'S RESTROOM.", "normalized_value": null, "normalized_unit": null, "normalized_attribute": null, "normalization_notes": null, "source_text_preserved": true, "normalization_confidence": null}, {"assertion_id": "P02.01#11", "original_value": "L-1 is located in MEN'S RESTROOM.", "normalized_value": null, "normalized_unit": null, "normalized_attribute": null, "normalization_notes": null, "source_text_preserved": true, "normalization_confidence": null}, {"assertion_id": "P02.01#12", "original_value": "SK-1 is located in LOUNGE.", "normalized_value": null, "normalized_unit": null, "normalized_attribute": null, "normalization_notes": null, "source_text_preserved": true, "normalization_confidence": null}, {"assertion_id": "P02.01#13", "original_value": "MS-1 is located in CLEANING SUPPLIES/STORAGE.", "normalized_value": null, "normalized_unit": null, "normalized_attribute": null, "normalization_notes": null, "source_text_preserved": true, "normalization_confidence": null}, {"assertion_id": "P02.01#14", "original_value": "FD-1 is located in CLEANING SUPPLIES/STORAGE.", "normalized_value": null, "normalized_unit": null, "normalized_attribute": null, "normalization_notes": "Source text '3\"FD-1' indicates a pipe size not present in the original value.", "source_text_preserved": true, "normalization_confidence": null}, {"assertion_id": "P02.01#15", "original_value": "FS-1 is located in CLEANING SUPPLIES/STORAGE.", "normalized_value": null, "normalized_unit": null, "normalized_attribute": null, "normalization_notes": "Source text '3\"FS-1' indicates a pipe size not present in the original value.", "source_text_preserved": true, "normalization_confidence": null}, {"assertion_id": "P02.01#16", "original_value": "2", "normalized_value": "2", "normalized_unit": "inches", "normalized_attribute": null, "normalization_notes": "Unit from source text '2\"'.", "source_text_preserved": true, "normalization_confidence": "high"}, {"assertion_id": "P02.01#17", "original_value": "2", "normalized_value": "2", "normalized_unit": "inches", "normalized_attribute": null, "normalization_notes": "Unit from source text '2\"'.", "source_text_preserved": true, "normalization_confidence": "high"}, {"assertion_id": "P02.01#18", "original_value": "2", "normalized_value": "2", "normalized_unit": "inches", "normalized_attribute": null, "normalization_notes": "Unit from source text '2\"'.", "source_text_preserved": true, "normalization_confidence": "high"}, {"assertion_id": "P02.02#0", "original_value": "INVENTORY", "normalized_value": null, "normalized_unit": null, "normalized_attribute": null, "normalization_notes": null, "source_text_preserved": true, "normalization_confidence": null}, {"assertion_id": "P02.02#1", "original_value": "LOUNGE", "normalized_value": null, "normalized_unit": null, "normalized_attribute": null, "normalization_notes": null, "source_text_preserved": true, "normalization_confidence": null}] |