{ "results": [ { "check": "1 pier from protected template 산외교울산P1형", "result": "PASS", "detail": "{'name': '울산E2E', 'type': 'T형', 'created': '2026-10-19 13:55:14', 'template': '템플릿: 산외교울산P1형', 'origin': {'label': '템플릿: 산외교울산P1형', 'at': '2026-10-19 13:55:14', 'sha': {'params:_schema': '78a2cba5e3555141', 'params:pier_id': '97086571f822df69', 'params:_meta': 'cc84b493e804de9f', 'params:scope': 'dfbd41ca7117a548', 'params:builders': 'e7958245e55ae625', 'params:lean_concrete': '345c5b2907c9e33b', " }, { "check": "2 upload converts the Ulsan DWG and indexes texts", "result": "PASS", "detail": "1148 texts, 3s" }, { "check": "2 RAG original unchanged (read only)", "result": "PASS", "detail": "" }, { "check": "3 search 'EL. 42.763' (footing bottom)", "result": "PASS", "detail": "1" }, { "check": "3 search '28@250=7.000' (footing top chain)", "result": "PASS", "detail": "4" }, { "check": "3 search '24@125=3.000' (coping top layers)", "result": "PASS", "detail": "7" }, { "check": "3 search '8@125' (seat reinforcement)", "result": "PASS", "detail": "6" }, { "check": "4 candidates page renders", "result": "PASS", "detail": "" }, { "check": "4 candidates: template values equal the drawing tables (다름 0)", "result": "PASS", "detail": "122 rows, 0 different" }, { "check": "4 edited bearing-3 h3 detected as the only difference", "result": "PASS", "detail": "[(['G5', 'h3', '3'], 999, 152)]" }, { "check": "4 apply restores the drawing value and keeps the per-bearing form", "result": "PASS", "detail": "{'1': 144, '2': 144, '3': 152, '4': 152}" }, { "check": "4 recognised tables", "result": "INFO", "detail": "[{'key': 'elevation', 'anchor': 7, 'rows': 12}, {'key': 'sole_plate', 'anchor': 7, 'rows': 7}, {'key': 'schedule_SD400', 'anchor': 7, 'rows': 32}, {'key': 'schedule_SD500', 'anchor': 7, 'rows': 33}]" }, { "check": "5 G1 blocked while sections unconfirmed", "result": "PASS", "detail": "" }, { "check": "5 bulk confirm (all required sections)", "result": "PASS", "detail": "26 sections" }, { "check": "6 G1 individual run -> PASS 104/104, reload and unchanged verified", "result": "PASS", "detail": "104/104 25s reload=True unchanged=True " }, { "check": "6 G1 approved", "result": "PASS", "detail": "" }, { "check": "6 G2 individual run -> PASS 35/35, reload and unchanged verified", "result": "PASS", "detail": "35/35 95s reload=True unchanged=True " }, { "check": "6 G2 approved", "result": "PASS", "detail": "" }, { "check": "6 G3 individual run -> PASS 63/63, reload and unchanged verified", "result": "PASS", "detail": "63/63 45s reload=True unchanged=True " }, { "check": "6 G3 approved", "result": "PASS", "detail": "" }, { "check": "6 G4 individual run -> PASS 129/129, reload and unchanged verified", "result": "PASS", "detail": "129/129 215s reload=True unchanged=True " }, { "check": "6 G4 approved", "result": "PASS", "detail": "" }, { "check": "6 G5 individual run -> PASS 75/75, reload and unchanged verified", "result": "PASS", "detail": "75/75 30s reload=True unchanged=True " }, { "check": "6 G5 approved", "result": "PASS", "detail": "" }, { "check": "7 download G1.3dm", "result": "PASS", "detail": "605074 bytes" }, { "check": "7 download G2.3dm", "result": "PASS", "detail": "10938464 bytes" }, { "check": "7 download G3.3dm", "result": "PASS", "detail": "17323320 bytes" }, { "check": "7 download G4.3dm", "result": "PASS", "detail": "32056524 bytes" }, { "check": "7 download G5.3dm", "result": "PASS", "detail": "32173792 bytes" }, { "check": "8 report generated, all gates PASS and approved", "result": "PASS", "detail": "{'chapters_missing': [], 'vocab_bad': [], 'finding_rows': 0, 'finding_rows_without_source': 0, 'schedule_rows': 34, 'schedule_marks': 34, 'gate_rows': 5, 'schedule_unread': False, 'ok': True}" }, { "check": "8 report ch.6: 34 schedule marks, all 일치 with the model", "result": "PASS", "detail": "34 rows; not 일치: []" }, { "check": "8 report self-check passed", "result": "PASS", "detail": "{'chapters_missing': [], 'vocab_bad': [], 'finding_rows': 0, 'finding_rows_without_source': 0, 'schedule_rows': 34, 'schedule_marks': 34, 'gate_rows': 5, 'schedule_unread': False, 'ok': True}" }, { "check": "8 report PDF download", "result": "PASS", "detail": "118933" }, { "check": "9 input change -> all gates stale, approvals void", "result": "PASS", "detail": "" }, { "check": "9 G3 blocked until G1 is approved again", "result": "PASS", "detail": "" }, { "check": "9 footing dx 7,505 -> G1 FAIL (footing checks)", "result": "PASS", "detail": "['footing X', 'lean X']" }, { "check": "9 FAIL gate cannot be approved", "result": "PASS", "detail": "" }, { "check": "9 restored input -> G1 PASS and approved; G2~G5 approvals valid again (same inputs as approved)", "result": "PASS", "detail": "{'G1': True, 'G2': True, 'G3': True, 'G4': True, 'G5': True}" }, { "check": "10 page renders /", "result": "PASS", "detail": "" }, { "check": "10 page renders /pier/울산E2E", "result": "PASS", "detail": "" }, { "check": "10 page renders /pier/울산E2E/gates", "result": "PASS", "detail": "" }, { "check": "10 page renders /pier/울산E2E/candidates", "result": "PASS", "detail": "" }, { "check": "10 page renders /pier/울산E2E/search?q=C7", "result": "PASS", "detail": "" }, { "check": "10 page renders /pier/울산E2E/section/params/coping_rebar", "result": "PASS", "detail": "" }, { "check": "10 delete moves the pier to the trash; template unchanged", "result": "PASS", "detail": "" } ], "passed": 44, "total": 44 }