chore(rebar): Pier_T_rebar 작업 폴더 초기 구성 및 외부 의존 파일 통합

- Code\rebar_pipeline, review_pipeline, pier-program을 정션에서 실제 폴더로 전환
- Code\rhino_mcp 및 CLAUDE_rhino배경.md 추가, .mcp.json은 PYTHONPATH로 새 위치 사용
- pier-program 내부 .git 제거(이력은 backup\pier-program_20261028.bundle에 보관)
- worktree 가이드 반영(CLAUDE.local.md, HANDOFF.md)
- D:\Rhino-MCP 경로 참조를 새 위치로 치환

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
ahnyongjooandClaude Sonnet 5.5 committed 2026-10-28 11:20:18 +09:00
commit 964a841de1
3978 files changed
+58013356

No files matched your search

File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,163 @@
{
"expected:G1": {
"sha": "76373493feef03ec",
"by": "심영표",
"at": "2026-10-20 15:44:37",
"why": "[검토 요약 일괄 확정] 앱 확인 일치 — C2 표 후보 10건이 현재 값과 모두 같다 | 변경: 생성 시점 대비 73/149개 값이 바뀜 — column.height: 12003 → 12133; coping.z_top_center: 43555 → 42602; coping.z_top_left: 43411 → 42456 … | 출처: 도면에서 읽기 25건 반영 (2026-10-20 15:44 심영표)",
"app_st": "g"
},
"expected:G2": {
"sha": "0d8dc6f2c533363e",
"by": "심영표",
"at": "2026-10-20 15:44:37",
"why": "[검토 요약 일괄 확정] 사용자가 도면과 대조했다고 표시함. 앱 확인 주의 — C2b 앵커 필드 9개 중 5개만 같다 (A 5 · B 0) — 대조 범위 56% | 변경: 생성 시점 대비 13/50개 값이 바뀜 — dia.P4: 19 → 29; dia.P5: 19 → 29; hoop_chain.groups.2.0: 36 → 37 … | 출처: 도면에서 읽기 12건 반영 (2026-10-20 15:44 심영표)",
"app_st": "w"
},
"expected:G3": {
"sha": "cd9ad93c1a54a125",
"by": "심영표",
"at": "2026-10-20 15:44:37",
"why": "[검토 요약 일괄 확정] 사용자가 도면과 대조했다고 표시함. 앱 확인 주의 — C2b 앵커 필드 19개 중 11개만 같다 (A 11 · B 0) — 대조 범위 58% | 변경: 생성 시점 대비 22/84개 값이 바뀜 — b10_size.0: 9198 → 10198; b9_grid.x.n: 34 → 38; b9_grid.x.start: -4125 → -4625 … | 출처: 도면에서 읽기 14건 반영 (2026-10-20 15:44 심영표)",
"app_st": "w"
},
"expected:G4": {
"sha": "8313077afa88199e",
"by": "심영표",
"at": "2026-10-20 15:44:37",
"why": "[검토 요약 일괄 확정] 사용자가 도면과 대조했다고 표시함. 앱 확인 주의 — C2b 앵커 필드 26개 중 8개만 같다 (A 3 · B 5) — 대조 범위 31% | 변경: 생성 시점 대비 45/147개 값이 바뀜 — L.C10: 10310 → 10314.0; L.C11: 8934 → 8941.0; L.C15: 2784 → 2774.0 … | 출처: 도면에서 읽기 16건 반영 (2026-10-20 15:44 심영표)",
"app_st": "w"
},
"expected:G5": {
"sha": "a040b1b1cd50c67b",
"by": "심영표",
"at": "2026-10-20 15:44:37",
"why": "[검토 요약 일괄 확정] 앱 확인 일치 — C2 표 후보 60건이 현재 값과 모두 같다 | 변경: 생성 시점 대비 16/41개 값이 바뀜 — W.1: 740 → 640; W.2: 740 → 640; W.3: 890 → 750 … | 출처: 도면에서 읽기 25건 반영 (2026-10-20 15:44 심영표)",
"app_st": "g"
},
"expected:pier_id": {
"sha": "abc5ac4ec94f0b99",
"by": "심영표",
"at": "2026-10-20 15:44:37",
"why": "[검토 요약 일괄 확정] 사용자가 도면과 대조했다고 표시함. 앱 확인 주의 — C7 고정(F) 항목이 원본과 다르다 — 사유 기록: 도면에서 읽기 반영(심영표): pier_id | 변경: 생성 시점 대비 1/1개 값이 바뀜 — : P1 → P2",
"app_st": "w"
},
"expected:planned_fail": {
"sha": "65ab87c785e1b53b",
"by": "심영표",
"at": "2026-10-20 15:44:37",
"why": "[검토 요약 일괄 확정] 사용자가 도면과 대조했다고 표시함. 앱 확인 해당 없음 — 사람 결정 기록 또는 참고 정보 — 앱이 도면과 대조하지 않는다 | 변경: 생성 시점 대비 6/28개 값이 바뀜 — 0.approved: 사용자 2026-10-07 → 사용자 선택 2026-10-20 (심영…; 0.reason: 작도 28본 채택(F2) vs D3 3… → 작도 32본 채택(좌우 대칭) vs D…; 6.approved: null → 사용자 선택 2026-10-20 (심영… … | 주의 표시: 설계자 확인 전 임시 등록 포함",
"app_st": "x"
},
"expected:rebar_palette": {
"sha": "c41013bf3e985022",
"by": "심영표",
"at": "2026-10-20 15:44:37",
"why": "[검토 요약 일괄 확정] 사용자가 도면과 대조했다고 표시함. 앱 확인 해당 없음 — 사람 결정 기록 또는 참고 정보 — 앱이 도면과 대조하지 않는다 | 변경: 생성 시점 값 그대로(15개 값)",
"app_st": "x"
},
"expected:tol_mm": {
"sha": "d0ff5974b6aa52cf",
"by": "심영표",
"at": "2026-10-20 15:44:37",
"why": "[검토 요약 일괄 확정] 사용자가 도면과 대조했다고 표시함. 앱 확인 해당 없음 — 사람 결정 기록 또는 참고 정보 — 앱이 도면과 대조하지 않는다 | 변경: 생성 시점 값 그대로(1개 값)",
"app_st": "x"
},
"params:bearing_seats": {
"sha": "48357d2c0a3dbbff",
"by": "심영표",
"at": "2026-10-20 15:44:37",
"why": "[검토 요약 일괄 확정] 앱 확인 일치 — C2 표 후보 50건이 현재 값과 모두 같다 | 변경: 생성 시점 대비 79/200개 값이 바뀜 — bearings.0.B: 640 → 540; bearings.0.centre.0: -5053.0 → -5032.3; bearings.0.centre.1: -697.8 → -700.2 … | 출처: 도면에서 읽기 53건 반영 (2026-10-20 15:44 심영표)",
"app_st": "g"
},
"params:column": {
"sha": "90f35a94959c80cb",
"by": "심영표",
"at": "2026-10-20 15:44:37",
"why": "[검토 요약 일괄 확정] 앱 확인 일치 — C2b A등급 1건·B등급 0건이 현재 값과 같다 (앵커가 있는 1개 필드의 100%) | 변경: 생성 시점 대비 1/5개 값이 바뀜 — height: 12003 → 12133 | 출처: 도면에서 읽기 1건 반영 (2026-10-20 15:44 심영표)",
"app_st": "g"
},
"params:column_rebar": {
"sha": "e874c3252e6b0067",
"by": "심영표",
"at": "2026-10-20 15:44:37",
"why": "[검토 요약 일괄 확정] 사용자가 도면과 대조했다고 표시함. 앱 확인 근거 없음 — 앱이 독립적으로 대조할 근거가 없다 — 도면과 직접 대조한 뒤 사유와 함께 확정 | 변경: 생성 시점 대비 101/229개 값이 바뀜 — hoops.levels.0: 27388 → 26303; hoops.levels.1: 27508 → 26423; hoops.levels.10: 28588 → 27503 … | 출처: 도면에서 읽기 15건 반영 (2026-10-20 15:44 심영표)",
"app_st": "n"
},
"params:coping": {
"sha": "2551fa3c387f8e1d",
"by": "심영표",
"at": "2026-10-20 15:44:37",
"why": "[검토 요약 일괄 확정] 앱 확인 일치 — C2b A등급 1건·B등급 3건이 현재 값과 같다 (앵커가 있는 5개 필드의 80%) | 변경: 생성 시점 대비 14/31개 값이 바뀜 — top_steps.0.x1: -3801 → -3781.0; top_steps.0.z: 43411 → 42456; top_steps.1.x0: -3801 → -3781.0 … | 출처: 도면에서 읽기 14건 반영 (2026-10-20 15:44 심영표)",
"app_st": "g"
},
"params:coping_rebar": {
"sha": "10ca4624780f8ebd",
"by": "심영표",
"at": "2026-10-20 15:44:37",
"why": "[검토 요약 일괄 확정] 사용자가 도면과 대조했다고 표시함. 앱 확인 근거 없음 — 앱이 독립적으로 대조할 근거가 없다 — 도면과 직접 대조한 뒤 사유와 함께 확정 | 변경: 생성 시점 대비 113/322개 값이 바뀜 — bottom.z_flat: 40511 → 39556; c14.hooks_up.0.1: 41011 → 40056.2; c14.hooks_up.1.1: 41011 → 40056.2 … | 출처: 도면에서 읽기 17건 반영 (2026-10-20 15:44 심영표); 도면에서 읽기 1건 반영 (2026-10-20 15:44 심영표)",
"app_st": "n"
},
"params:display": {
"sha": "55b735ee54e27801",
"by": "심영표",
"at": "2026-10-20 15:44:37",
"why": "[검토 요약 일괄 확정] 사용자가 도면과 대조했다고 표시함. 앱 확인 주의 — C7 고정(F) 항목이 원본과 다르다 — 사유 기록: 도면에서 읽기 반영(심영표): display.hidden_ids | 변경: 생성 시점 대비 2/73개 값이 바뀜 — hidden_ids.0: P1-FT → P2-FT; hidden_ids.1: P1-CP → P2-CP | 출처: 도면에서 읽기 1건 반영 (2026-10-20 15:44 심영표)",
"app_st": "w"
},
"params:footing": {
"sha": "1193bdbbe6cd6cc3",
"by": "심영표",
"at": "2026-10-20 15:44:37",
"why": "[검토 요약 일괄 확정] 사용자가 도면과 대조했다고 표시함. 앱 확인 근거 없음 — 앱이 독립적으로 대조할 근거가 없다 — 도면과 직접 대조한 뒤 사유와 함께 확정 | 변경: 생성 시점 대비 2/9개 값이 바뀜 — size_x: 9350 → 10350.0; z_bottom: 26208 → 25123 | 출처: 도면에서 읽기 2건 반영 (2026-10-20 15:44 심영표)",
"app_st": "n"
},
"params:footing_rebar": {
"sha": "a520d864bcef7066",
"by": "심영표",
"at": "2026-10-20 15:44:37",
"why": "[검토 요약 일괄 확정] 사용자가 도면과 대조했다고 표시함. 앱 확인 근거 없음 — 앱이 독립적으로 대조할 근거가 없다 — 도면과 직접 대조한 뒤 사유와 함께 확정 | 변경: 생성 시점 대비 264/583개 값이 바뀜 — a_x: 9150.0 → 10150; b10.size_x: 9198 → 10198.0; b9.count: 493 → 551 … | 출처: 도면에서 읽기 21건 반영 (2026-10-20 15:44 심영표)",
"app_st": "n"
},
"params:lean_concrete": {
"sha": "e0f7afc31cf5d359",
"by": "심영표",
"at": "2026-10-20 15:44:37",
"why": "[검토 요약 일괄 확정] 사용자가 도면과 대조했다고 표시함. 앱 확인 근거 없음 — 앱이 독립적으로 대조할 근거가 없다 — 도면과 직접 대조한 뒤 사유와 함께 확정 | 변경: 생성 시점 대비 3/8개 값이 바뀜 — size_x: 9550 → 10550.0; z_bottom: 26108 → 25023; z_top: 26208 → 25123 | 출처: 도면에서 읽기 3건 반영 (2026-10-20 15:44 심영표)",
"app_st": "n"
},
"params:materials": {
"sha": "84f210201086bd7c",
"by": "심영표",
"at": "2026-10-20 15:44:37",
"why": "[검토 요약 일괄 확정] 사용자가 도면과 대조했다고 표시함. 앱 확인 근거 없음 — C3 현재 값이 템플릿 원본 그대로이고 새 도면 근거가 없다 | 변경: 생성 시점 값 그대로(6개 값) | 주의 표시: 템플릿 원본 그대로(새 도면 근거 없음)",
"app_st": "n"
},
"params:pier_id": {
"sha": "abc5ac4ec94f0b99",
"by": "심영표",
"at": "2026-10-20 15:44:37",
"why": "[검토 요약 일괄 확정] 사용자가 도면과 대조했다고 표시함. 앱 확인 주의 — C7 고정(F) 항목이 원본과 다르다 — 사유 기록: 도면에서 읽기 반영(심영표): pier_id | 변경: 생성 시점 대비 1/1개 값이 바뀜 — : P1 → P2",
"app_st": "w"
},
"params:piles": {
"sha": "0ba8e83ead95a4b9",
"by": "심영표",
"at": "2026-10-20 15:44:37",
"why": "[검토 요약 일괄 확정] 사용자가 도면과 대조했다고 표시함. 앱 확인 근거 없음 — 앱이 독립적으로 대조할 근거가 없다 — 도면과 직접 대조한 뒤 사유와 함께 확정 | 변경: 생성 시점 대비 2/14개 값이 바뀜 — length: 24400 → 25900; pitch_x: null → 1750.0 | 출처: 도면에서 읽기 2건 반영 (2026-10-20 15:44 심영표)",
"app_st": "n"
},
"params:rebar_marks": {
"sha": "e4ad42a5f585d89a",
"by": "심영표",
"at": "2026-10-20 15:44:37",
"why": "[검토 요약 일괄 확정] 앱 확인 일치 — C2 표 후보 36건이 현재 값과 모두 같다 | 변경: 생성 시점 대비 4/72개 값이 바뀜 — C3.dia: H29 → H25; C6.dia: H29 → H25; P4.dia: H19 → H29 … | 출처: 도면에서 읽기 4건 반영 (2026-10-20 15:44 심영표)",
"app_st": "g"
},
"params:sole_plates": {
"sha": "fcf1c4980a6058b7",
"by": "심영표",
"at": "2026-10-20 15:44:37",
"why": "[검토 요약 일괄 확정] 앱 확인 일치 — C2 표 후보 41건이 현재 값과 모두 같다 | 변경: 생성 시점 대비 6/161개 값이 바뀜 — h3: 181 → 165; table.0.W: 740 → 640; table.1.W: 740 → 640 … | 출처: 도면에서 읽기 6건 반영 (2026-10-20 15:44 심영표)",
"app_st": "g"
}
}
@@ -0,0 +1,26 @@
[
{
"source": "C0050205-028-운곡교 교각도(1)(완도방향 P2).dwg",
"source_sha256": "0efe55ad5b922918acad2c8c4aa7af8aa8a01899f31a81fb56640a45f12148ba",
"dxf": "C0050205-028-운곡교 교각도(1)(완도방향 P2).dxf",
"dxf_sha256": "3645f4bc7cfb0588f6edbe78f8ddd4e94da19d34a7ac2c35e90ff43b29ff2f21",
"engine": "ODA File Converter 27.1.0",
"label": "D1"
},
{
"source": "C0050205-029-운곡교 교각도(2)(완도방향 P2).dwg",
"source_sha256": "7ad905aa4b32aa1dff595c6317acca8ee42759b716b9d915c64ada23e670177b",
"dxf": "C0050205-029-운곡교 교각도(2)(완도방향 P2).dxf",
"dxf_sha256": "3b68da9c14c27529cf6edf9644cb3a57a7e6b6ae2bc7bfa1888f7d54cf4fea23",
"engine": "ODA File Converter 27.1.0",
"label": "D2"
},
{
"source": "C0050205-030-운곡교 교각도(3)(완도방향 P2).dwg",
"source_sha256": "edce7e03d79f3378c833badd711fe7128ba1661523c426d14978e8b02c3a94b2",
"dxf": "C0050205-030-운곡교 교각도(3)(완도방향 P2).dxf",
"dxf_sha256": "19465ba354d73fcb1b686661d3b26cce653250423cadb40e829c591655482b70",
"engine": "ODA File Converter 27.1.0",
"label": "D3"
}
]
@@ -0,0 +1 @@
[{"dwg": "D1", "layer": "CS-DIMT", "x": 11855.6, "y": 31231.1, "h": 150.0, "text": "12.400", "handle": "20B71"}, {"dwg": "D1", "layer": "CS-DIMT", "x": 18183.5, "y": 30631.1, "h": 150.0, "text": "100", "handle": "20B72"}, {"dwg": "D1", "layer": "CS-DIMT", "x": 14948.8, "y": 30631.1, "h": 150.0, "text": "20@250=5.000", "handle": "20B73"}, {"dwg": "D1", "layer": "CS-DIMT", "x": 11599.9, "y": 30631.1, "h": 150.0, "text": "6@300=1.800", "handle": "20B74"}, {"dwg": "D1", "layer": "CS-DIMT", "x": 8148.8, "y": 30631.1, "h": 150.0, "text": "20@250=5.000", "handle": "20B75"}, {"dwg": "D1", "layer": "CS-DIMT", "x": 5584.0, "y": 30631.1, "h": 150.0, "text": "100", "handle": "20B76"}, {"dwg": "D1", "layer": "CS-DIMT", "x": 4342.4, "y": 24877.4, "h": 150.0, "text": "137", "handle": "20B77"}, {"dwg": "D1", "layer": "CS-DIMT", "x": 4342.4, "y": 27639.9, "h": 150.0, "text": "138", "handle": "20B78"}, {"dwg": "D1", "layer": "CS-DIMT", "x": 4942.4, "y": 24877.4, "h": 150.0, "text": "137", "handle": "20B79"}, {"dwg": "D1", "layer": "CS-DIMT", "x": 4942.4, "y": 27639.9, "h": 150.0, "text": "138", "handle": "20B7A"}, {"dwg": "D1", "layer": "CS-DIMT", "x": 18009.0, "y": 30421.1, "h": 150.0, "text": "200", "handle": "20B7B"}, {"dwg": "D1", "layer": "CS-DIMT", "x": 6009.0, "y": 30421.1, "h": 150.0, "text": "200", "handle": "20B7C"}, {"dwg": "D1", "layer": "CS-DIMT", "x": 4732.4, "y": 24483.9, "h": 150.0, "text": "100", "handle": "20B7D"}, {"dwg": "D1", "layer": "CS-DIMT", "x": 4732.4, "y": 25798.2, "h": 150.0, "text": "21@125=2.625", "handle": "20B7E"}, {"dwg": "D1", "layer": "CS-DIMT", "x": 4714.4, "y": 28252.1, "h": 150.0, "text": "100(상면)", "handle": "20B7F"}, {"dwg": "D1", "layer": "CS-DIMT", "x": 4132.4, "y": 24483.9, "h": 150.0, "text": "100", "handle": "20B80"}, {"dwg": "D1", "layer": "CS-DIMT", "x": 4132.4, "y": 25798.2, "h": 150.0, "text": "21@125=2.625", "handle": "20B81"}, {"dwg": "D1", "layer": "CS-DIMT", "x": 4114.4, "y": 28252.1, "h": 150.0, "text": "100(하면)", "handle": "20B82"}, {"dwg": "D1", "layer": "CS-DIMT", "x": 3532.4, "y": 26156.6, "h": 150.0, "text": "3.100", "handle": "20B83"}, {"dwg": "D1", "layer": "CZ-TEX1", "x": 11401.6, "y": 32024.5, "h": 420.0, "text": "평면도", "handle": "20B84"}, {"dwg": "D1", "layer": "CZ-TEX2", "x": 12966.5, "y": 31424.5, "h": 300.0, "text": "S=1:60", "handle": "20B85"}, {"dwg": "D1", "layer": "CS-TEXT", "x": 5254.4, "y": 26630.4, "h": 150.0, "text": "OF PIER", "handle": "20B86"}, {"dwg": "D1", "layer": "CS-TEXT", "x": 5254.4, "y": 26397.2, "h": 150.0, "text": "L", "handle": "20B87"}, {"dwg": "D1", "layer": "CS-TEXT", "x": 5182.4, "y": 26361.2, "h": 150.0, "text": "C", "handle": "20B88"}, {"dwg": "D1", "layer": "CS-TEXT", "x": 5602.4, "y": 25942.3, "h": 150.0, "text": "하면", "handle": "20B89"}, {"dwg": "D1", "layer": "CS-TEXT", "x": 5602.4, "y": 26473.3, "h": 150.0, "text": "상면", "handle": "20B8A"}, {"dwg": "D1", "layer": "CS-TEXT", "x": 11405.6, "y": 28322.3, "h": 150.0, "text": "구조도", "handle": "20BB9"}, {"dwg": "D1", "layer": "CS-TEXT", "x": 12306.4, "y": 28322.3, "h": 150.0, "text": "일반도", "handle": "20BBC"}, {"dwg": "D1", "layer": "CS-DIMT", "x": 18624.2, "y": 29431.1, "h": 150.0, "text": "받침간 거리", "handle": "20BCD"}, {"dwg": "D1", "layer": "CS-DIMT", "x": 18922.8, "y": 30631.1, "h": 150.0, "text": "스 트 럽", "handle": "20BCE"}, {"dwg": "D1", "layer": "CS-DIMT", "x": 18139.2, "y": 30031.1, "h": 150.0, "text": "200", "handle": "20BD7"}, {"dwg": "D1", "layer": "CS-DIMT", "x": 5584.0, "y": 30031.1, "h": 150.0, "text": "200", "handle": "20BD8"}, {"dwg": "D1", "layer": "CS-DIMT", "x": 18633.1, "y": 30031.1, "h": 150.0, "text": "코핑부 소단", "handle": "20BDD"}, {"dwg": "D1", "layer": "CS-TEXT", "x": 10207.1, "y": 28393.5, "h": 150.0, "text": "@250", "handle": "20BE0"}, {"dwg": "D1", "layer": "CS-TEXT", "x": 8166.5, "y": 28393.5, "h": 150.0, "text": "@250", "handle": "20BE5"}, {"dwg": "D1", "layer": "CS-TEXT", "x": 6138.6, "y": 28392.9, "h": 150.0, "text": "@250", "handle": "20BE6"}, {"dwg": "D1", "layer": "CS-TEXT", "x": 12541.9, "y": 24240.8, "h": 150.0, "text": "@300", "handle": "20BEA"}, {"dwg": "D1", "layer": "CS-TEXT", "x": 10398.8, "y": 24241.3, "h": 150.0, "text": "@250", "handle": "20BF1"}, {"dwg": "D1", "layer": "CS-TEXT", "x": 8426.4, "y": 24241.3, "h": 150.0, "text": "@250", "handle": "20BF5"}, {"dwg": "D1", "layer": "CS-DIMT", "x": 6318.3, "y": 29431.1, "h": 150.0, "text": "1.223", "handle": "20C03"}, {"dwg": "D1", "layer": "CS-DIMT", "x": 8181.1, "y": 29431.1, "h": 150.0, "text": "2.502", "handle": "20C04"}, {"dwg": "D1", "layer": "CS-DIMT", "x": 10683.4, "y": 29431.1, "h": 150.0, "text": "2.502", "handle": "20C05"}, {"dwg": "D1", "layer": "CS-DIMT", "x": 13185.6, "y": 29431.1, "h": 150.0, "text": "2.502", "handle": "20C06"}, {"dwg": "D1", "layer": "CS-DIMT", "x": 15687.9, "y": 29431.1, "h": 150.0, "text": "2.502", "handle": "20C07"}, {"dwg": "D1", "layer": "CS-DIMT", "x": 17522.8, "y": 29431.1, "h": 150.0, "text": "1.Line truncated
@@ -0,0 +1,26 @@
[
{
"at": "2026-10-20 15:44:14",
"section": "params:display",
"fixed_fields": [
"display.hidden_ids"
],
"reason": "도면에서 읽기 반영(심영표): display.hidden_ids"
},
{
"at": "2026-10-20 15:44:14",
"section": "expected:pier_id",
"fixed_fields": [
"pier_id"
],
"reason": "도면에서 읽기 반영(심영표): pier_id"
},
{
"at": "2026-10-20 15:44:14",
"section": "params:pier_id",
"fixed_fields": [
"pier_id"
],
"reason": "도면에서 읽기 반영(심영표): pier_id"
}
]
@@ -0,0 +1,847 @@
{
"_schema": "pier-T-expected/1",
"_note": "독립 기대값: 도면 치수 문자·표(D1~D3)에서 직접 옮긴 값. 생성용 params.json과 별도로 관리하며 검사기는 params를 읽지 않는다. 원출처: Code/교각모델링/verify_*.py (검증서 v0.1.05).",
"pier_id": "P2",
"tol_mm": 1.0,
"G1": {
"footing": {
"dx": 10350,
"dy": 7800,
"z0": 25123,
"thickness": 2200,
"src": "D1 '9.350' '7.800' 'EL. 26.208' '2.200'"
},
"lean": {
"margin": 100,
"thickness": 100,
"src": "D1 footing +100 each side, 100 thick"
},
"column": {
"d": 2000,
"height": 12133,
"src": "D1 '2.000' '12.003'"
},
"coping": {
"dx": 12400,
"dy": 3100,
"z_top_left": 42456,
"rise_upper": 1500,
"rise_lower": 1500,
"z_top_right": 42748,
"z_top_center": 42602,
"flat_from_tip": 5100,
"end_inset": 200,
"radius": 12000,
"src": "D1 '12.400' '3.100' 'EL. 43.411' '1.500' x2 'EL. 43.698' 'EL. 43.555' '5.100' '200' 'R=12.000'"
},
"coping_outline": [
[
-1100,
39456
],
[
1100,
39456
],
[
6200,
40956
],
[
6000,
42748
],
[
3726,
42748
],
[
3726,
42675
],
[
1223,
42675
],
[
1223,
42602
],
[
-1279,
42602
],
[
-1279,
42529
],
[
-3781,
42529
],
[
-3781,
42456
],
[
-6000,
42456
],
[
-6200,
40956
]
],
"coping_outline_src": "D1 정면도 외형 (원호는 현으로 대체 후 활꼴 2개 차감)",
"dxf_arc_centres": {
"datum_x": 12159.4,
"datum_y": 16515.6,
"datum_el": 39456,
"left": [
5207.5,
6039.2
],
"right": [
19111.2,
6039.2
],
"src": "DXF ARC 1C4BF centre; datum CS-CNTL 1C546 / coping bottom line 1C4BD"
},
"piles": {
"nx": 6,
"ny": 5,
"pitch": 1550,
"edge": 800,
"d": 600,
"length": 25900,
"head_embedment": 100,
"src": "D1 '5@1.550' '4@1.550' '800' 'Ø600' 'L=24.4M'; 매입 100 (CS-CNTL)",
"pitch_x": 1750
},
"seats": {
"table": {
"1": [
42686,
180,
50,
700,
540
],
"2": [
42759,
180,
50,
700,
540
],
"3": [
42832,
180,
50,
700,
650
],
"4": [
42905,
180,
50,
700,
540
],
"5": [
42978,
180,
50,
700,
540
],
"6": [
42661,
155,
50,
700,
540
],
"7": [
42734,
155,
50,
700,
540
],
"8": [
42807,
155,
50,
700,
650
],
"9": [
42880,
155,
50,
700,
540
],
"10": [
42953,
155,
50,
700,
540
]
},
"table_columns": [
"EL.'X'",
"h1",
"h2",
"A",
"B"
],
"girders": 5,
"step_top": {
"1": 42456,
"2": 42529,
"3": 42602,
"4": 42675,
"5": 42748
},
"step_x": {
"1": [
-6000,
-3781
],
"2": [
-3781,
-1279
],
"3": [
-1279,
1223
],
"4": [
1223,
3726
],
"5": [
3726,
6000
]
},
"row_y": {
"front": -700,
"rear": 598
},
"pitch_chain": [
3,
7507
],
"pedestal_plan": [
1250,
1200
],
"pad_margin": [
200,
100
],
"rear_first_from_tip": 1223,
"src": "D2 ELEVATION TABLE; D1 EL texts + drawn steps; D1 평면도 S1/S2 + D2 TABLE S1 (1550-852 / 1550-950); '3@2.505=7.516'; 대좌 2500x1200 반쪽; '1.232'"
}
},
"G2": {
"schedule_L": {
"P1": 17377.0,
"P2": 16683.0,
"P3": 6449.0,
"P4": 5680.0,
"P5": 5680.0,
"P6": 2136
},
"schedule_n": {
"P1": 46,
"P2": 46,
"P3": 37,
"P4": 9,
"P5": 22,
"P6": 36
},
"dia": {
"P1": 32,
"P2": 32,
"P3": 19,
"P4": 29,
"P5": 29,
"P6": 16
},
"hoop_chain": {
"start": [
150,
1030
],
"groups": [
[
8,
120
],
[
22,
120
],
[
37,
300
]
]
},
"hoop_marks_by_zone": [
[
"P4",
9
],
[
"P5",
22
],
[
"P3",
37
]
],
"tie_chain": {
"start": [
150,
1030
],
"groups": [
[
8,
1800
]
]
},
"tie_offset": 22.5,
"r_outer": 870.5,
"r_inner": 825.5,
"r_hoop": 904,
"main_divisions": 46,
"bottom_above_footing": 300,
"p1_top_parts": [
300,
340,
16343
],
"no_fillet_marks": [
"P1",
"P2",
"P4",
"P5"
],
"src": "D3 L·수량; D1 '150','1.030','8@120=960','22@120=2.640','36@300=10.800','8@1.800=14.400'; HITL H2 반지름(단면 CAD)·D3 R"
},
"G3": {
"schedule": {
"B1": [
8000.0,
42
],
"B2": [
11500.0,
42
],
"B3": [
8000.0,
42
],
"B4": [
7600.0,
39
],
"B5": [
10550.0,
32
],
"B6": [
14050.0,
32
],
"B7": [
10550.0,
32
],
"B8": [
10150.0,
29
],
"B9": [
2155,
493
],
"B10": [
35684.0,
9
],
"B11": [
10350.0,
28
],
"B12": [
7800.0,
38
]
},
"dia": {
"B1": 25,
"B2": 25,
"B3": 19,
"B4": 25,
"B5": 29,
"B6": 29,
"B7": 19,
"B8": 29,
"B9": 16,
"B10": 19,
"B11": 16,
"B12": 16
},
"layer_z": {
"B2": 122,
"B4": 122,
"B6": 178,
"B8": 178,
"B3": 227.5,
"B7": 277,
"B1": 2073,
"B5": 2127
},
"rows": {
"Y_BOT": {
"ends": [
-5075,
5075
],
"start": -4875,
"pitch": 125,
"n": 79
},
"Y_250": {
"ends": [
-5075,
5075
],
"start": -4875,
"pitch": 250,
"n": 40
},
"X_BOT": {
"ends": [
-3800,
3800
],
"start": -3625,
"pitch": 125,
"n": 59
},
"X_250": {
"ends": [
-3800,
3800
],
"start": -3625,
"pitch": 250,
"n": 30
}
},
"b10_levels": {
"start": 350,
"pitch": 200,
"n": 9
},
"b10_size": [
10198,
7644
],
"b9_grid": {
"x": {
"start": -4625,
"pitch": 250,
"n": 38
},
"y": {
"start": -3500,
"pitch": 250,
"n": 29
}
},
"b9_erec": [
150,
2100
],
"b9_a": 1995,
"b9_c": 64,
"mid_levels": [
550,
950,
1350,
1750
],
"src": "D3 L·수량; D1/D2 '100','200','70@125=8.750' / '35@250' / '100','175','58@125=7.250' / '29@250'; F1 층 높이(작도점); '150','9@200=1.800'; '450','33@250=8.250' / '300','28@250=7.000'; EREC 150~2100; 중간층 작도점 [derived]"
},
"G4": {
"count": {
"C1": 12,
"C2": 12,
"C3": 12,
"C4": 12,
"C5": 12,
"C6": 12,
"C7": 12,
"C8": 12,
"C9": 60,
"C10": 21,
"C11": 60,
"C12": 18,
"C13": 9,
"C14": 41,
"C15": 13,
"C16": 13,
"S1": 50,
"S2": 105
},
"L": {
"C1": 14490,
"C2": 12082.0,
"C3": 12106,
"C4": 14490,
"C5": 12082.0,
"C6": 12106,
"C7": 13994,
"C8": 13994,
"C9": 8649.0,
"C10": 10314.0,
"C11": 8941.0,
"C12": 20513,
"C13": 29345,
"C14": 3600,
"C15": 2774.0,
"C16": 5605.0,
"S1": 3800,
"S2": 2500
},
"range": {
"C9": [
"b_sched",
2958,
1376
],
"C11": [
"b_sched",
2958,
1668
],
"C10": [
"b_sched",
3000,
3000
],
"C12": [
"a_sched",
12228,
3151
],
"C13": [
"a_sched",
12167,
12044
]
},
"range_convention": {
"b_sched": {
"a": 1407,
"c": 750,
"c_times": 2
},
"a_sched": {
"b": 1407,
"c": 580,
"c_times": 4
}
},
"dia": {
"C1": 29,
"C2": 29,
"C3": 25,
"C4": 29,
"C5": 29,
"C6": 25,
"C7": 29,
"C8": 29,
"C9": 25,
"C10": 25,
"C11": 25,
"C12": 25,
"C13": 25,
"C14": 19,
"C15": 19,
"C16": 19,
"S1": 19,
"S2": 19
},
"half_width": 1550,
"y24_chain": {
"start": [
100,
237
],
"pitch": 125,
"n": 21,
"end": 3000
},
"y13_chain": {
"start": [
100,
237
],
"pitch": 250,
"n": 10,
"end": 3000
},
"pairs": [
[
"C1",
"C4"
],
[
"C2",
"C5"
],
[
"C3",
"C6"
],
[
"C7",
"C8"
]
],
"tier_z": {
"C1": 42356,
"C4": 42356,
"C2": 42256,
"C5": 42256,
"C3": 42156,
"C6": 42156
},
"stirrup_x": {
"C10": [
-900,
-600,
-300,
0,
300,
600,
900
],
"C11": {
"start": 1150,
"pitch": 250,
"n": 20
},
"C9": {
"start": -1150,
"pitch": -250,
"n": 20
}
},
"stirrups_per_x": 3,
"c10_bottom": 39556,
"loop_z": {
"C12": {
"start": 39806,
"pitch": 250,
"n": 6
},
"C13": [
41306,
41556,
41806
]
},
"c15_top": 42648,
"c16_top": 42502,
"c14_levels": [
[
42489.7,
1
],
[
42233.7,
11
],
[
42133.7,
11
],
[
41556.2,
6
],
[
41056.2,
5
],
[
40556.2,
4
],
[
40056.2,
3
]
],
"s_per_girder": {
"S1": [
10,
50
],
"S2": [
21,
100
]
},
"step_top": {
"1": 42456,
"2": 42529,
"3": 42602,
"4": 42675,
"5": 42748
},
"src": "D3 수량·L·a/b 범위; D1 A-A 사슬 '100','137','21@125','3000' / B-B '10@250'; 정면도 단 높이·스터럽 X·루프 EL; D2 '50','50'"
},
"G5": {
"el_x": {
"1": 42686,
"2": 42759,
"3": 42832,
"4": 42905,
"5": 42978,
"6": 42661,
"7": 42734,
"8": 42807,
"9": 42880,
"10": 42953
},
"S": {
"1": -1.91,
"2": -1.907,
"3": -1.905,
"4": -1.903,
"5": -1.901,
"6": -1.91,
"7": -1.907,
"8": -1.905,
"9": -1.903,
"10": -1.901
},
"W": {
"1": 640,
"2": 640,
"3": 750,
"4": 640,
"5": 640,
"6": 640,
"7": 640,
"8": 750,
"9": 640,
"10": 640
},
"L": 800,
"T": 30,
"h3": 165,
"bearing_shrink": 100,
"colours": {
"bearing": [
0,
0,
0
],
"sole_plate": [
150,
150,
150
]
},
"src": "D2 ELEVATION TABLE (EL.'X', h3), 솔플레이트 상세 TABLE (S, L, W, T); (L-100)x(W-100)·색 = 사용자 지시 2026-10-08"
},
"rebar_palette": {
"32": [
214,
39,
40
],
"29": [
255,
127,
14
],
"25": [
188,
60,
160
],
"19": [
44,
160,
44
],
"16": [
31,
119,
180
]
},
"rebar_palette_src": "디자인지침_경로.md R8 (2026-10-07)",
"planned_fail": [
{
"gate": "G3",
"item": "B12 bar count vs schedule",
"reason": "작도 32본 채택(좌우 대칭) vs D3 38본 — 설계자 확인 대기",
"approved": "사용자 선택 2026-10-20 (심영표) — 도면에서 읽기 화면"
},
{
"gate": "G4",
"item_prefix": "C9 original length vs L",
"reason": "작도 폭 채택(K1)",
"approved": "사용자 2026-10-07"
},
{
"gate": "G4",
"item_prefix": "C10 original length vs L",
"reason": "작도 폭 채택(K1)",
"approved": "사용자 2026-10-07"
},
{
"gate": "G4",
"item_prefix": "C11 original length vs L",
"reason": "작도 폭 채택(K1)",
"approved": "사용자 2026-10-07"
},
{
"gate": "G4",
"item_prefix": "C12 original length vs L",
"reason": "작도 폭 채택(C12·C13 drawn width)",
"approved": "사용자 2026-10-07"
},
{
"gate": "G4",
"item_prefix": "C13 original length vs L",
"reason": "작도 폭 채택(C12·C13 drawn width)",
"approved": "사용자 2026-10-07"
},
{
"gate": "G3",
"item": "B9 bar count vs schedule",
"reason": "작도 551본(38×29 엇갈림) 채택 vs D3 493본 — 설계자 확인 대기",
"approved": "사용자 선택 2026-10-20 (심영표) — 도면에서 읽기 화면"
}
]
}
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,120 @@
{
"name": "운곡교P2",
"type": "T형",
"created": "2026-10-20 15:44:04",
"template": "템플릿: 운곡교P1형",
"origin": {
"label": "템플릿: 운곡교P1형",
"at": "2026-10-20 15:44:04",
"sha": {
"params:_meta": "68466a4e497800d6",
"params:lean_concrete": "8c9222a4b2112cbd",
"params:footing": "b7c5056daeed1f8b",
"params:column": "74c090c09f61aa42",
"params:coping": "9e3209026614e2d9",
"params:piles": "16b4cdea037fa977",
"params:hitl_decisions_2026_10_07": "1a6acbe25bc01948",
"params:bearing_seats": "f212a2858946a702",
"params:column_rebar": "6e5cd384a1c43c80",
"params:footing_rebar": "3d11859aa672975b",
"params:coping_rebar": "c98e1cc7779f604b",
"params:sole_plates": "8cc6a2a1a125311c",
"params:_schema": "78a2cba5e3555141",
"params:pier_id": "97086571f822df69",
"params:rebar_marks": "c5d7818e0137ed86",
"params:rebar_marks_src": "a7a01d0421958fc4",
"params:materials": "84f210201086bd7c",
"params:display": "b1b126034742709b",
"expected:_schema": "21dc6d01b07f7ac8",
"expected:_note": "624c308bbfcdf519",
"expected:pier_id": "97086571f822df69",
"expected:tol_mm": "d0ff5974b6aa52cf",
"expected:G1": "ebd00116a06211a5",
"expected:G2": "12df59aa062bde7a",
"expected:G3": "378eee3b312640dd",
"expected:G4": "9d14cf310e66f7cf",
"expected:G5": "4dd5a0aacc7137e4",
"expected:rebar_palette": "c41013bf3e985022",
"expected:rebar_palette_src": "249b3cde71fb0eb8",
"expected:planned_fail": "1c2024ffeca8d63f"
},
"fixed": {
"params:column": {
"shape": "\"circular\""
},
"params:coping": {
"form": "null"
},
"params:piles": {
"kind": "\"composite pile\""
},
"params:bearing_seats": {
"pedestal": "null",
"pedestals": "null"
},
"params:column_rebar": {
"form": "null"
},
"params:footing_rebar": {
"form": "null"
},
"params:coping_rebar": {
"form": "null",
"host": "null",
"group": "null"
},
"params:sole_plates": {
"bearing_size": "null"
},
"params:rebar_marks": {
"P1.shape": "\"XIV\"",
"P2.shape": "\"XVI\"",
"P3.shape": "\"VI\"",
"P4.shape": "\"V\"",
"P5.shape": "\"IX\"",
"P6.shape": "\"III\"",
"B1.shape": "\"III\"",
"B2.shape": "\"XII\"",
"B3.shape": "\"III\"",
"B4.shape": "\"I\"",
"B5.shape": "\"XII\"",
"B6.shape": "\"XII\"",
"B7.shape": "\"XII\"",
"B8.shape": "\"XVI\"",
"B9.shape": "\"XI\"",
"B10.shape": "\"XIII\"",
"B11.shape": "\"XII\"",
"B12.shape": "\"III\"",
"C1.shape": "\"VIII\"",
"C2.shape": "\"VIII\"",
"C3.shape": "\"VIII\"",
"C4.shape": "\"VIII\"",
"C5.shape": "\"VIII\"",
"C6.shape": "\"VIII\"",
"C7.shape": "\"VII\"",
"C8.shape": "\"VII\"",
"C9.shape": "\"IV\"",
"C10.shape": "\"IV\"",
"C11.shape": "\"IV\"",
"C12.shape": "\"X\"",
"C13.shape": "\"X\"",
"C14.shape": "\"III\"",
"C15.shape": "\"III\"",
"C16.shape": "\"II\"",
"S1.shape": "\"III\"",
"S2.shape": "\"III\""
}
}
},
"fit_answers": {
"foundation": "기초판+말뚝",
"soffit": "곡선",
"bearings": "10",
"rebar_shape": "미확인",
"rebar_method": "미확인",
"skew_deg": "",
"bearing_rot_deg": "",
"footing_rot_deg": ""
},
"fit_mismatch": []
}
@@ -0,0 +1,253 @@
[
{
"at": "2026-10-20 15:44:14",
"by": "심영표",
"count": 234,
"backup": "before_geomread_20261020_154414",
"fields": [
"params:coping.top_steps.0.x1",
"params:coping.top_steps.0.z",
"params:coping.top_steps.1.x0",
"params:coping.top_steps.1.x1",
"params:coping.top_steps.1.z",
"params:coping.top_steps.2.x0",
"params:coping.top_steps.2.x1",
"params:coping.top_steps.2.z",
"params:coping.top_steps.3.x0",
"params:coping.top_steps.3.x1",
"params:coping.top_steps.3.z",
"params:coping.top_steps.4.x0",
"params:coping.top_steps.4.z",
"params:coping.z_bottom_flat",
"params:coping_rebar.soffit_arc_centre",
"params:coping_rebar.top.tiers.1.z",
"params:coping_rebar.top.tiers.2.z",
"params:coping_rebar.top.tiers.3.z",
"params:coping_rebar.c15.z",
"params:coping_rebar.c15.x0",
"params:coping_rebar.c16.z",
"params:coping_rebar.c16.x1",
"params:coping_rebar.bottom.z_flat",
"params:coping_rebar.loops.levels",
"params:coping_rebar.stirrups.top_right",
"params:coping_rebar.stirrups.bottom",
"params:coping_rebar.c14.points",
"params:coping_rebar.c14.hooks_up",
"params:footing.size_x",
"params:footing.z_bottom",
"params:lean_concrete.size_x",
"params:lean_concrete.z_bottom",
"params:lean_concrete.z_top",
"params:column.height",
"params:piles.length",
"params:piles.pitch_x",
"params:bearing_seats.pitch_x",
"params:bearing_seats.pad_rows.front.centre_rel_girder5",
"params:bearing_seats.pad_rows.front.rotation_deg",
"params:bearing_seats.pad_rows.rear.centre_rel_girder5",
"params:bearing_seats.pad_rows.rear.rotation_deg",
"params:bearing_seats.bearings.0.centre",
"params:bearing_seats.bearings.0.rotation_deg",
"params:bearing_seats.bearings.1.centre",
"params:bearing_seats.bearings.1.rotation_deg",
"params:bearing_seats.bearings.2.centre",
"params:bearing_seats.bearings.2.rotation_deg",
"params:bearing_seats.bearings.3.centre",
"params:bearing_seats.bearings.3.rotation_deg",
"params:bearing_seats.bearings.4.centre",
"params:bearing_seats.bearings.4.rotation_deg",
"params:bearing_seats.bearings.5.centre",
"params:bearing_seats.bearings.5.rotation_deg",
"params:bearing_seats.bearings.6.centre",
"params:bearing_seats.bearings.6.rotation_deg",
"params:bearing_seats.bearings.7.centre",
"params:bearing_seats.bearings.7.rotation_deg",
"params:bearing_seats.bearings.8.centre",
"params:bearing_seats.bearings.8.rotation_deg",
"params:bearing_seats.bearings.9.centre",
"params:bearing_seats.bearings.9.rotation_deg",
"params:bearing_seats.pedestal_girder5.front_half",
"params:bearing_seats.pedestal_girder5.rear_half",
"params:bearing_seats.pedestal_girder5.rotation_deg",
"params:column_rebar.schedule.P1",
"params:column_rebar.schedule.P2",
"params:column_rebar.schedule.P3",
"params:column_rebar.schedule.P4",
"params:column_rebar.schedule.P5",
"params:footing_rebar.schedule.B1",
"params:footing_rebar.schedule.B2",
"params:footing_rebar.schedule.B3",
"params:footing_rebar.schedule.B4",
"params:footing_rebar.schedule.B5",
"params:footing_rebar.schedule.B6",
"params:footing_rebar.schedule.B7",
"params:footing_rebar.schedule.B8",
"params:footing_rebar.schedule.B9",
"params:footing_rebar.schedule.B10",
"params:footing_rebar.schedule.B11",
"params:footing_rebar.schedule.B12",
"params:coping_rebar.top.tiers.1.a",
"params:coping_rebar.top.tiers.3.a",
"params:coping_rebar.c16.x0",
"params:footing_rebar.a_x",
"params:footing_rebar.layers.bottom_Y1.pos",
"params:footing_rebar.layers.bottom_Y3.pos",
"params:footing_rebar.layers.top_Y.pos",
"params:footing_rebar.b9.grid_x",
"params:footing_rebar.b9.count",
"params:footing_rebar.b10.size_x",
"params:footing_rebar.layers.mid_Y.levels",
"params:footing_rebar.counts_check",
"params:column_rebar.main_bars.p1.hook_leg_z",
"params:column_rebar.main_bars.p1.straight_from",
"params:column_rebar.main_bars.p1.straight_len",
"params:column_rebar.main_bars.p2.z0",
"params:column_rebar.main_bars.p2.length",
"params:column_rebar.hoops.levels",
"params:column_rebar.hoops.marks",
"params:column_rebar.hoops.radius",
"params:column_rebar.hoops.radius_by_mark",
"params:column_rebar.ties.levels",
"expected:G1.coping_outline",
"expected:G1.dxf_arc_centres.datum_el",
"expected:G1.footing.dx",
"expected:G1.footing.z0",
"expected:G1.column.height",
"expected:G1.coping.z_top_left",
"expected:G1.coping.z_top_center",
"expected:G1.coping.z_top_right",
"expected:G1.piles.pitch_x",
"expected:G1.piles.length",
"expected:G1.seats.step_top",
"expected:G1.seats.step_x",
"expected:G1.seats.row_y",
"expected:G1.seats.pitch_chain",
"expected:G2.hoop_chain",
"expected:G2.hoop_marks_by_zone",
"expected:G2.r_hoop",
"expected:G2.p1_top_parts",
"expected:G3.rows",
"expected:G3.b9_grid",
"expected:G3.b10_size",
"expected:G4.tier_z",
"expected:G4.c10_bottom",
"expected:G4.loop_z",
"expected:G4.c15_top",
"expected:G4.c16_top",
"expected:G4.c14_levels",
"expected:G4.step_top",
"expected:G2.dia",
"expected:G4.dia",
"expected:G2.tie_offset",
"expected:G4.range",
"params:display.hidden_ids",
"expected:pier_id",
"params:pier_id",
"expected:G5.el_x.1",
"params:bearing_seats.bearings.0.el_x",
"expected:G1.seats.table.1",
"params:bearing_seats.bearings.0.h1",
"params:bearing_seats.bearings.0.B",
"expected:G5.h3",
"params:sole_plates.h3",
"expected:G5.el_x.2",
"params:bearing_seats.bearings.1.el_x",
"expected:G1.seats.table.2",
"params:bearing_seats.bearings.1.h1",
"params:bearing_seats.bearings.1.B",
"expected:G5.h3",
"expected:G5.el_x.3",
"params:bearing_seats.bearings.2.el_x",
"expected:G1.seats.table.3",
"params:bearing_seats.bearings.2.h1",
"params:bearing_seats.bearings.2.B",
"expected:G5.h3",
"expected:G5.el_x.4",
"params:bearing_seats.bearings.3.el_x",
"expected:G1.seats.table.4",
"params:bearing_seats.bearings.3.h1",
"params:bearing_seats.bearings.3.B",
"expected:G5.h3",
"expected:G5.el_x.5",
"params:bearing_seats.bearings.4.el_x",
"expected:G1.seats.table.5",
"params:bearing_seats.bearings.4.h1",
"params:bearing_seats.bearings.4.B",
"expected:G5.h3",
"expected:G5.el_x.6",
"params:bearing_seats.bearings.5.el_x",
"expected:G1.seats.table.6",
"params:bearing_seats.bearings.5.h1",
"expected:G5.h3",
"expected:G5.el_x.7",
"params:bearing_seats.bearings.6.el_x",
"expected:G1.seats.table.7",
"params:bearing_seats.bearings.6.h1",
"expected:G5.h3",
"expected:G5.el_x.8",
"params:bearing_seats.bearings.7.el_x",
"expected:G1.seats.table.8",
"params:bearing_seats.bearings.7.h1",
"expected:G5.h3",
"expected:G5.el_x.9",
"params:bearing_seats.bearings.8.el_x",
"expected:G1.seats.table.9",
"params:bearing_seats.bearings.8.h1",
"expected:G5.h3",
"expected:G5.el_x.10",
"params:bearing_seats.bearings.9.el_x",
"expected:G1.seats.table.10",
"params:bearing_seats.bearings.9.h1",
"expected:G5.h3",
"expected:G5.W.1",
"params:sole_plates.table.0.W",
"expected:G5.W.2",
"params:sole_plates.table.1.W",
"expected:G5.W.3",
"params:sole_plates.table.2.W",
"expected:G5.W.4",
"params:sole_plates.table.3.W",
"expected:G5.W.5",
"params:sole_plates.table.4.W",
"expected:G2.schedule_L.P1",
"expected:G2.schedule_L.P2",
"expected:G3.schedule.B5",
"expected:G3.schedule.B6",
"expected:G3.schedule.B8",
"expected:G3.schedule.B1",
"expected:G3.schedule.B2",
"expected:G3.schedule.B4",
"expected:G3.schedule.B3",
"expected:G3.schedule.B7",
"expected:G3.schedule.B10",
"expected:G3.schedule.B11",
"expected:G3.schedule.B12",
"expected:G4.L.C2",
"expected:G4.L.C5",
"expected:G2.schedule_L.P4",
"params:rebar_marks.P4",
"expected:G2.schedule_L.P5",
"params:rebar_marks.P5",
"params:rebar_marks.C3",
"params:rebar_marks.C6",
"expected:G4.L.C9",
"expected:G4.L.C10",
"expected:G4.L.C11",
"expected:G4.L.C15",
"expected:G4.L.C16",
"expected:G2.schedule_L.P3",
"expected:G2.schedule_n.P3",
"expected:G1.seats.rear_first_from_tip",
"expected:planned_fail"
]
},
{
"at": "2026-10-20 15:44:19",
"by": "심영표",
"count": 1,
"backup": "before_geomread_20261020_154419",
"fields": [
"params:coping_rebar.stirrups.top_left"
]
}
]
@@ -0,0 +1,5 @@
{
"sha": "2703b0ddfc19311a",
"at": "2026-10-20 15:44:33",
"n": 23
}
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,69 @@
{
"gate": "G1",
"checker": "g1_shape.py",
"verdict": "PASS",
"summary": {
"total": 171,
"passed": 171,
"failed": 0,
"volumes_m3": {
"lean": 7.592,
"footing": 177.606,
"column": 38.117,
"coping": 89.656
},
"pile_volume_each_m3": 7.323
},
"unplanned_fails": [],
"planned_fails": [],
"negative": {
"negH": {
"move": {
"id": "BS08",
"d": [
3,
0,
0
]
},
"new_fails": [
"rear pedestal pitch girder 2-3",
"rear pedestal pitch girder 3-4"
],
"detected": true
},
"negV": {
"move": {
"id": "BP03",
"d": [
0,
0,
2
]
},
"new_fails": [
"NO.3 pad top = EL.'X'"
],
"detected": true
}
},
"reload": {
"ok": null,
"skipped": "일괄 실행(단일 세션) — 저장·재로드 안 함"
},
"unchanged": {
"ok": null,
"compared": 0,
"diffs": [],
"missing": [],
"against": null,
"skipped": "일괄 실행(단일 세션) — 앞 게이트 객체를 다시 만들지 않음"
},
"model": null,
"mode": "batch",
"secs": 8.3,
"session_secs": 158.1,
"inputs_sha": "c29db469c248f54a",
"job_id": "0586cbb90215",
"at": "2026-10-20 15:47:23"
}
@@ -0,0 +1,15 @@
{
"id": "0586cbb90215",
"pid": 5640,
"state": "완료",
"at": "2026-10-20 15:47:23",
"log": [
"[batch] one Rhino session: build G1..G5, check G1, G2, G3, G4, G5 (no per-gate save / reload)",
"[G1] PASS checks 171/171 (planned FAIL 0, unplanned 0) negative H/V True/True (batch)",
"[G2] PASS checks 42/42 (planned FAIL 0, unplanned 0) negative H/V True/True (batch)",
"[G3] PASS checks 71/73 (planned FAIL 2, unplanned 0) negative H/V True/True (batch)",
"[G4] PASS checks 111/116 (planned FAIL 5, unplanned 0) negative H/V True/True (batch)",
"[G5] PASS checks 183/183 (planned FAIL 0, unplanned 0) negative H/V True/True (batch)",
"[batch] done in 158.3s, objects 3350, model C:\\Users\\User\\Desktop\\바이브코딩\\pier_T\\Code\\교각모델링앱\\data\\운곡교P2\\runs\\current\\G5.3dm"
]
}
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,425 @@
{
"summary": {
"total": 42,
"passed": 42,
"failed": 0,
"min_cover": {
"P1": 113.5,
"P2": 158.5,
"P3": 91.5,
"P4": 98.7,
"P5": 81.5,
"P6": 74.0
}
},
"results": [
{
"check": "C8",
"item": "P1 bar count",
"expected": 46,
"actual": 46,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C8",
"item": "P1 pipes closed & paired with centrelines",
"detail": "pipes 46 / centrelines 46",
"result": "PASS"
},
{
"check": "C8",
"item": "P2 bar count",
"expected": 46,
"actual": 46,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C8",
"item": "P2 pipes closed & paired with centrelines",
"detail": "pipes 46 / centrelines 46",
"result": "PASS"
},
{
"check": "C8",
"item": "P3 bar count",
"expected": 37,
"actual": 37,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C8",
"item": "P3 pipes closed & paired with centrelines",
"detail": "pipes 74 / centrelines 74",
"result": "PASS"
},
{
"check": "C8",
"item": "P4 bar count",
"expected": 9,
"actual": 9,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C8",
"item": "P4 pipes closed & paired with centrelines",
"detail": "pipes 18 / centrelines 18",
"result": "PASS"
},
{
"check": "C8",
"item": "P5 bar count",
"expected": 22,
"actual": 22,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C8",
"item": "P5 pipes closed & paired with centrelines",
"detail": "pipes 22 / centrelines 22",
"result": "PASS"
},
{
"check": "C8",
"item": "P6 bar count",
"expected": 36,
"actual": 36,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C8",
"item": "P6 pipes closed & paired with centrelines",
"detail": "pipes 36 / centrelines 36",
"result": "PASS"
},
{
"check": "C8",
"item": "P1 original length (+coupler b) vs schedule L (worst of 46)",
"expected": 0,
"actual": 0.071,
"diff": 0.071,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P1 curve length - L (record, fillets shorten hooks)",
"detail": "min 0.1 / max 0.1 mm",
"result": "INFO"
},
{
"check": "C8",
"item": "P1 curve length (+coupler b) vs L (no fillet)",
"expected": 0,
"actual": 0.071,
"diff": 0.071,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P2 original length (+coupler b) vs schedule L (worst of 46)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P2 curve length - L (record, fillets shorten hooks)",
"detail": "min 0.0 / max 0.0 mm",
"result": "INFO"
},
{
"check": "C8",
"item": "P2 curve length (+coupler b) vs L (no fillet)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P3 original length (+coupler b) vs schedule L (worst of 37)",
"expected": 0,
"actual": 1.0,
"diff": 1.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P3 curve length - L (record, fillets shorten hooks)",
"detail": "min -493.4 / max -493.4 mm",
"result": "INFO"
},
{
"check": "C8",
"item": "P4 original length (+coupler b) vs schedule L (worst of 9)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P4 curve length - L (record, fillets shorten hooks)",
"detail": "min -0.0 / max -0.0 mm",
"result": "INFO"
},
{
"check": "C8",
"item": "P4 curve length (+coupler b) vs L (no fillet)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P5 original length (+coupler b) vs schedule L (worst of 22)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P5 curve length - L (record, fillets shorten hooks)",
"detail": "min -0.0 / max -0.0 mm",
"result": "INFO"
},
{
"check": "C8",
"item": "P5 curve length (+coupler b) vs L (no fillet)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P6 original length (+coupler b) vs schedule L (worst of 36)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P6 curve length - L (record, fillets shorten hooks)",
"detail": "min -20.6 / max -20.6 mm",
"result": "INFO"
},
{
"check": "C8",
"item": "P1 top EL",
"expected": 42106,
"actual": 42106.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P1 radius (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 0.5,
"result": "PASS"
},
{
"check": "C8",
"item": "P1 angle vs i*360/46 (worst, deg)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 0.01,
"result": "PASS"
},
{
"check": "C8",
"item": "P2 top EL",
"expected": 42106,
"actual": 42106.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P2 radius (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 0.5,
"result": "PASS"
},
{
"check": "C8",
"item": "P2 angle vs i*360/46 (worst, deg)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 0.01,
"result": "PASS"
},
{
"check": "C8",
"item": "P1 hook leg EL (footing bottom + 300)",
"expected": 25423,
"actual": 25423.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P2 bottom EL",
"expected": 25423,
"actual": 25423.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P4 radius",
"expected": 904,
"actual": 904.0,
"diff": -0.0,
"tol": 0.5,
"result": "PASS"
},
{
"check": "C8",
"item": "P5 radius",
"expected": 904,
"actual": 904.0,
"diff": -0.0,
"tol": 0.5,
"result": "PASS"
},
{
"check": "C8",
"item": "hoop level count 68",
"detail": "68",
"result": "PASS"
},
{
"check": "C8",
"item": "hoop levels vs dim chain (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "hoop marks by zone (P4 x9, P5 x22, P3 x37)",
"detail": "",
"result": "PASS"
},
{
"check": "C8",
"item": "tie levels vs chain + 22.5 (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "concrete union for cover",
"detail": "1 brep",
"result": "INFO"
},
{
"check": "C8",
"item": "P1 sample points outside concrete",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C8",
"item": "P2 sample points outside concrete",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C8",
"item": "P3 sample points outside concrete",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C8",
"item": "P4 sample points outside concrete",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C8",
"item": "P5 sample points outside concrete",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C8",
"item": "P6 sample points outside concrete",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C8",
"item": "min cover to concrete surface per mark (record)",
"detail": "{\"P1\": 113.5, \"P2\": 158.5, \"P3\": 91.5, \"P4\": 98.7, \"P5\": 81.5, \"P6\": 74.0}",
"result": "INFO"
},
{
"check": "C8",
"item": "clearance P1 outer surface vs hoop inner surface (record)",
"detail": "3.0 mm",
"result": "INFO"
}
]
}
@@ -0,0 +1,71 @@
{
"gate": "G2",
"checker": "g2_column_rebar.py",
"verdict": "PASS",
"summary": {
"total": 42,
"passed": 42,
"failed": 0,
"min_cover": {
"P1": 113.5,
"P2": 158.5,
"P3": 91.5,
"P4": 98.7,
"P5": 81.5,
"P6": 74.0
}
},
"unplanned_fails": [],
"planned_fails": [],
"negative": {
"negH": {
"move": {
"mark": "P2",
"d": [
5,
0,
0
]
},
"new_fails": [
"P2 radius (worst)"
],
"detected": true
},
"negV": {
"move": {
"mark": "P3",
"d": [
0,
0,
5
]
},
"new_fails": [
"hoop level count 68",
"hoop levels vs dim chain (worst)",
"hoop marks by zone (P4 x9, P5 x22, P3 x37)"
],
"detected": true
}
},
"reload": {
"ok": null,
"skipped": "일괄 실행(단일 세션) — 저장·재로드 안 함"
},
"unchanged": {
"ok": null,
"compared": 0,
"diffs": [],
"missing": [],
"against": null,
"skipped": "일괄 실행(단일 세션) — 앞 게이트 객체를 다시 만들지 않음"
},
"model": null,
"mode": "batch",
"secs": 42.4,
"session_secs": 158.1,
"inputs_sha": "c29db469c248f54a",
"job_id": "0586cbb90215",
"at": "2026-10-20 15:47:23"
}
@@ -0,0 +1,15 @@
{
"id": "0586cbb90215",
"pid": 5640,
"state": "완료",
"at": "2026-10-20 15:47:23",
"log": [
"[batch] one Rhino session: build G1..G5, check G1, G2, G3, G4, G5 (no per-gate save / reload)",
"[G1] PASS checks 171/171 (planned FAIL 0, unplanned 0) negative H/V True/True (batch)",
"[G2] PASS checks 42/42 (planned FAIL 0, unplanned 0) negative H/V True/True (batch)",
"[G3] PASS checks 71/73 (planned FAIL 2, unplanned 0) negative H/V True/True (batch)",
"[G4] PASS checks 111/116 (planned FAIL 5, unplanned 0) negative H/V True/True (batch)",
"[G5] PASS checks 183/183 (planned FAIL 0, unplanned 0) negative H/V True/True (batch)",
"[batch] done in 158.3s, objects 3350, model C:\\Users\\User\\Desktop\\바이브코딩\\pier_T\\Code\\교각모델링앱\\data\\운곡교P2\\runs\\current\\G5.3dm"
]
}
@@ -0,0 +1,425 @@
{
"summary": {
"total": 42,
"passed": 41,
"failed": 1,
"min_cover": {
"P1": 113.5,
"P2": 153.5,
"P3": 91.5,
"P4": 98.7,
"P5": 81.5,
"P6": 74.0
}
},
"results": [
{
"check": "C8",
"item": "P1 bar count",
"expected": 46,
"actual": 46,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C8",
"item": "P1 pipes closed & paired with centrelines",
"detail": "pipes 46 / centrelines 46",
"result": "PASS"
},
{
"check": "C8",
"item": "P2 bar count",
"expected": 46,
"actual": 46,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C8",
"item": "P2 pipes closed & paired with centrelines",
"detail": "pipes 46 / centrelines 46",
"result": "PASS"
},
{
"check": "C8",
"item": "P3 bar count",
"expected": 37,
"actual": 37,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C8",
"item": "P3 pipes closed & paired with centrelines",
"detail": "pipes 74 / centrelines 74",
"result": "PASS"
},
{
"check": "C8",
"item": "P4 bar count",
"expected": 9,
"actual": 9,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C8",
"item": "P4 pipes closed & paired with centrelines",
"detail": "pipes 18 / centrelines 18",
"result": "PASS"
},
{
"check": "C8",
"item": "P5 bar count",
"expected": 22,
"actual": 22,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C8",
"item": "P5 pipes closed & paired with centrelines",
"detail": "pipes 22 / centrelines 22",
"result": "PASS"
},
{
"check": "C8",
"item": "P6 bar count",
"expected": 36,
"actual": 36,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C8",
"item": "P6 pipes closed & paired with centrelines",
"detail": "pipes 36 / centrelines 36",
"result": "PASS"
},
{
"check": "C8",
"item": "P1 original length (+coupler b) vs schedule L (worst of 46)",
"expected": 0,
"actual": 0.071,
"diff": 0.071,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P1 curve length - L (record, fillets shorten hooks)",
"detail": "min 0.1 / max 0.1 mm",
"result": "INFO"
},
{
"check": "C8",
"item": "P1 curve length (+coupler b) vs L (no fillet)",
"expected": 0,
"actual": 0.071,
"diff": 0.071,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P2 original length (+coupler b) vs schedule L (worst of 46)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P2 curve length - L (record, fillets shorten hooks)",
"detail": "min 0.0 / max 0.0 mm",
"result": "INFO"
},
{
"check": "C8",
"item": "P2 curve length (+coupler b) vs L (no fillet)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P3 original length (+coupler b) vs schedule L (worst of 37)",
"expected": 0,
"actual": 1.0,
"diff": 1.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P3 curve length - L (record, fillets shorten hooks)",
"detail": "min -493.4 / max -493.4 mm",
"result": "INFO"
},
{
"check": "C8",
"item": "P4 original length (+coupler b) vs schedule L (worst of 9)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P4 curve length - L (record, fillets shorten hooks)",
"detail": "min -0.0 / max -0.0 mm",
"result": "INFO"
},
{
"check": "C8",
"item": "P4 curve length (+coupler b) vs L (no fillet)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P5 original length (+coupler b) vs schedule L (worst of 22)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P5 curve length - L (record, fillets shorten hooks)",
"detail": "min -0.0 / max -0.0 mm",
"result": "INFO"
},
{
"check": "C8",
"item": "P5 curve length (+coupler b) vs L (no fillet)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P6 original length (+coupler b) vs schedule L (worst of 36)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P6 curve length - L (record, fillets shorten hooks)",
"detail": "min -20.6 / max -20.6 mm",
"result": "INFO"
},
{
"check": "C8",
"item": "P1 top EL",
"expected": 42106,
"actual": 42106.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P1 radius (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 0.5,
"result": "PASS"
},
{
"check": "C8",
"item": "P1 angle vs i*360/46 (worst, deg)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 0.01,
"result": "PASS"
},
{
"check": "C8",
"item": "P2 top EL",
"expected": 42106,
"actual": 42106.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P2 radius (worst)",
"expected": 0,
"actual": 5.0,
"diff": 5.0,
"tol": 0.5,
"result": "FAIL"
},
{
"check": "C8",
"item": "P2 angle vs i*360/46 (worst, deg)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 0.01,
"result": "PASS"
},
{
"check": "C8",
"item": "P1 hook leg EL (footing bottom + 300)",
"expected": 25423,
"actual": 25423.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P2 bottom EL",
"expected": 25423,
"actual": 25423.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P4 radius",
"expected": 904,
"actual": 904.0,
"diff": -0.0,
"tol": 0.5,
"result": "PASS"
},
{
"check": "C8",
"item": "P5 radius",
"expected": 904,
"actual": 904.0,
"diff": -0.0,
"tol": 0.5,
"result": "PASS"
},
{
"check": "C8",
"item": "hoop level count 68",
"detail": "68",
"result": "PASS"
},
{
"check": "C8",
"item": "hoop levels vs dim chain (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "hoop marks by zone (P4 x9, P5 x22, P3 x37)",
"detail": "",
"result": "PASS"
},
{
"check": "C8",
"item": "tie levels vs chain + 22.5 (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "concrete union for cover",
"detail": "1 brep",
"result": "INFO"
},
{
"check": "C8",
"item": "P1 sample points outside concrete",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C8",
"item": "P2 sample points outside concrete",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C8",
"item": "P3 sample points outside concrete",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C8",
"item": "P4 sample points outside concrete",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C8",
"item": "P5 sample points outside concrete",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C8",
"item": "P6 sample points outside concrete",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C8",
"item": "min cover to concrete surface per mark (record)",
"detail": "{\"P1\": 113.5, \"P2\": 153.5, \"P3\": 91.5, \"P4\": 98.7, \"P5\": 81.5, \"P6\": 74.0}",
"result": "INFO"
},
{
"check": "C8",
"item": "clearance P1 outer surface vs hoop inner surface (record)",
"detail": "3.0 mm",
"result": "INFO"
}
]
}
@@ -0,0 +1,425 @@
{
"summary": {
"total": 42,
"passed": 39,
"failed": 3,
"min_cover": {
"P1": 113.5,
"P2": 158.5,
"P3": 91.5,
"P4": 98.7,
"P5": 81.5,
"P6": 74.0
}
},
"results": [
{
"check": "C8",
"item": "P1 bar count",
"expected": 46,
"actual": 46,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C8",
"item": "P1 pipes closed & paired with centrelines",
"detail": "pipes 46 / centrelines 46",
"result": "PASS"
},
{
"check": "C8",
"item": "P2 bar count",
"expected": 46,
"actual": 46,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C8",
"item": "P2 pipes closed & paired with centrelines",
"detail": "pipes 46 / centrelines 46",
"result": "PASS"
},
{
"check": "C8",
"item": "P3 bar count",
"expected": 37,
"actual": 37,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C8",
"item": "P3 pipes closed & paired with centrelines",
"detail": "pipes 74 / centrelines 74",
"result": "PASS"
},
{
"check": "C8",
"item": "P4 bar count",
"expected": 9,
"actual": 9,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C8",
"item": "P4 pipes closed & paired with centrelines",
"detail": "pipes 18 / centrelines 18",
"result": "PASS"
},
{
"check": "C8",
"item": "P5 bar count",
"expected": 22,
"actual": 22,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C8",
"item": "P5 pipes closed & paired with centrelines",
"detail": "pipes 22 / centrelines 22",
"result": "PASS"
},
{
"check": "C8",
"item": "P6 bar count",
"expected": 36,
"actual": 36,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C8",
"item": "P6 pipes closed & paired with centrelines",
"detail": "pipes 36 / centrelines 36",
"result": "PASS"
},
{
"check": "C8",
"item": "P1 original length (+coupler b) vs schedule L (worst of 46)",
"expected": 0,
"actual": 0.071,
"diff": 0.071,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P1 curve length - L (record, fillets shorten hooks)",
"detail": "min 0.1 / max 0.1 mm",
"result": "INFO"
},
{
"check": "C8",
"item": "P1 curve length (+coupler b) vs L (no fillet)",
"expected": 0,
"actual": 0.071,
"diff": 0.071,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P2 original length (+coupler b) vs schedule L (worst of 46)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P2 curve length - L (record, fillets shorten hooks)",
"detail": "min 0.0 / max 0.0 mm",
"result": "INFO"
},
{
"check": "C8",
"item": "P2 curve length (+coupler b) vs L (no fillet)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P3 original length (+coupler b) vs schedule L (worst of 37)",
"expected": 0,
"actual": 1.0,
"diff": 1.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P3 curve length - L (record, fillets shorten hooks)",
"detail": "min -493.4 / max -493.4 mm",
"result": "INFO"
},
{
"check": "C8",
"item": "P4 original length (+coupler b) vs schedule L (worst of 9)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P4 curve length - L (record, fillets shorten hooks)",
"detail": "min -0.0 / max -0.0 mm",
"result": "INFO"
},
{
"check": "C8",
"item": "P4 curve length (+coupler b) vs L (no fillet)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P5 original length (+coupler b) vs schedule L (worst of 22)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P5 curve length - L (record, fillets shorten hooks)",
"detail": "min -0.0 / max -0.0 mm",
"result": "INFO"
},
{
"check": "C8",
"item": "P5 curve length (+coupler b) vs L (no fillet)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P6 original length (+coupler b) vs schedule L (worst of 36)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P6 curve length - L (record, fillets shorten hooks)",
"detail": "min -20.6 / max -20.6 mm",
"result": "INFO"
},
{
"check": "C8",
"item": "P1 top EL",
"expected": 42106,
"actual": 42106.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P1 radius (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 0.5,
"result": "PASS"
},
{
"check": "C8",
"item": "P1 angle vs i*360/46 (worst, deg)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 0.01,
"result": "PASS"
},
{
"check": "C8",
"item": "P2 top EL",
"expected": 42106,
"actual": 42106.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P2 radius (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 0.5,
"result": "PASS"
},
{
"check": "C8",
"item": "P2 angle vs i*360/46 (worst, deg)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 0.01,
"result": "PASS"
},
{
"check": "C8",
"item": "P1 hook leg EL (footing bottom + 300)",
"expected": 25423,
"actual": 25423.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P2 bottom EL",
"expected": 25423,
"actual": 25423.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "P4 radius",
"expected": 904,
"actual": 904.0,
"diff": -0.0,
"tol": 0.5,
"result": "PASS"
},
{
"check": "C8",
"item": "P5 radius",
"expected": 904,
"actual": 904.0,
"diff": -0.0,
"tol": 0.5,
"result": "PASS"
},
{
"check": "C8",
"item": "hoop level count 68",
"detail": "69",
"result": "FAIL"
},
{
"check": "C8",
"item": "hoop levels vs dim chain (worst)",
"expected": 0,
"actual": 300.0,
"diff": 300.0,
"tol": 1.0,
"result": "FAIL"
},
{
"check": "C8",
"item": "hoop marks by zone (P4 x9, P5 x22, P3 x37)",
"detail": "",
"result": "FAIL"
},
{
"check": "C8",
"item": "tie levels vs chain + 22.5 (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C8",
"item": "concrete union for cover",
"detail": "1 brep",
"result": "INFO"
},
{
"check": "C8",
"item": "P1 sample points outside concrete",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C8",
"item": "P2 sample points outside concrete",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C8",
"item": "P3 sample points outside concrete",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C8",
"item": "P4 sample points outside concrete",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C8",
"item": "P5 sample points outside concrete",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C8",
"item": "P6 sample points outside concrete",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C8",
"item": "min cover to concrete surface per mark (record)",
"detail": "{\"P1\": 113.5, \"P2\": 158.5, \"P3\": 91.5, \"P4\": 98.7, \"P5\": 81.5, \"P6\": 74.0}",
"result": "INFO"
},
{
"check": "C8",
"item": "clearance P1 outer surface vs hoop inner surface (record)",
"detail": "3.0 mm",
"result": "INFO"
}
]
}
@@ -0,0 +1,707 @@
{
"summary": {
"total": 73,
"passed": 71,
"failed": 2,
"cover": {
"B1": 87.5,
"B2": 87.5,
"B3": 90.5,
"B4": 87.5,
"B5": 58.5,
"B6": 57.5,
"B7": 90.5,
"B8": 85.5,
"B9": 69.5,
"B10": 66.5,
"B11": 92.0,
"B12": 92.0
}
},
"results": [
{
"check": "C9",
"item": "B1 bar count vs schedule",
"expected": 42,
"actual": 42,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B1 pipes closed & paired",
"detail": "42/42",
"result": "PASS"
},
{
"check": "C9",
"item": "B1 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B1 curve length - L (bend fillets)",
"detail": "min -48.3 / max -48.3",
"result": "INFO"
},
{
"check": "C9",
"item": "B2 bar count vs schedule",
"expected": 42,
"actual": 42,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B2 pipes closed & paired",
"detail": "42/42",
"result": "PASS"
},
{
"check": "C9",
"item": "B2 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B2 curve length - L (bend fillets)",
"detail": "min -48.3 / max -48.3",
"result": "INFO"
},
{
"check": "C9",
"item": "B3 bar count vs schedule",
"expected": 42,
"actual": 42,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B3 pipes closed & paired",
"detail": "42/42",
"result": "PASS"
},
{
"check": "C9",
"item": "B3 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B3 curve length - L (bend fillets)",
"detail": "min -36.7 / max -36.7",
"result": "INFO"
},
{
"check": "C9",
"item": "B4 bar count vs schedule",
"expected": 39,
"actual": 39,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B4 pipes closed & paired",
"detail": "39/39",
"result": "PASS"
},
{
"check": "C9",
"item": "B4 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B4 curve length - L (bend fillets)",
"detail": "min 0.0 / max 0.0",
"result": "INFO"
},
{
"check": "C9",
"item": "B5 bar count vs schedule",
"expected": 32,
"actual": 32,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B5 pipes closed & paired",
"detail": "32/32",
"result": "PASS"
},
{
"check": "C9",
"item": "B5 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B5 curve length - L (bend fillets)",
"detail": "min -56.0 / max -56.0",
"result": "INFO"
},
{
"check": "C9",
"item": "B6 bar count vs schedule",
"expected": 32,
"actual": 32,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B6 pipes closed & paired",
"detail": "32/32",
"result": "PASS"
},
{
"check": "C9",
"item": "B6 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B6 curve length - L (bend fillets)",
"detail": "min -56.0 / max -56.0",
"result": "INFO"
},
{
"check": "C9",
"item": "B7 bar count vs schedule",
"expected": 32,
"actual": 32,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B7 pipes closed & paired",
"detail": "32/32",
"result": "PASS"
},
{
"check": "C9",
"item": "B7 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B7 curve length - L (bend fillets)",
"detail": "min -36.7 / max -36.7",
"result": "INFO"
},
{
"check": "C9",
"item": "B8 bar count vs schedule",
"expected": 29,
"actual": 29,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B8 pipes closed & paired",
"detail": "29/29",
"result": "PASS"
},
{
"check": "C9",
"item": "B8 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B8 curve length - L (bend fillets)",
"detail": "min 0.0 / max 0.0",
"result": "INFO"
},
{
"check": "C9",
"item": "B9 bar count vs schedule",
"expected": 493,
"actual": 551,
"diff": 58,
"tol": 0,
"result": "FAIL"
},
{
"check": "C9",
"item": "B9 pipes closed & paired",
"detail": "551/551",
"result": "PASS"
},
{
"check": "C9",
"item": "B9 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B9 curve length - L (bend fillets)",
"detail": "min -10.3 / max -10.3",
"result": "INFO"
},
{
"check": "C9",
"item": "B10 bar count vs schedule",
"expected": 9,
"actual": 9,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B10 pipes closed & paired",
"detail": "9/9",
"result": "PASS"
},
{
"check": "C9",
"item": "B10 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B10 curve length - L (bend fillets)",
"detail": "min -73.4 / max -73.4",
"result": "INFO"
},
{
"check": "C9",
"item": "B11 bar count vs schedule",
"expected": 28,
"actual": 28,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B11 pipes closed & paired",
"detail": "28/28",
"result": "PASS"
},
{
"check": "C9",
"item": "B11 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B11 curve length - L (bend fillets)",
"detail": "min -20.6 / max -20.6",
"result": "INFO"
},
{
"check": "C9",
"item": "B12 bar count vs schedule",
"expected": 38,
"actual": 32,
"diff": -6,
"tol": 0,
"result": "FAIL"
},
{
"check": "C9",
"item": "B12 pipes closed & paired",
"detail": "32/32",
"result": "PASS"
},
{
"check": "C9",
"item": "B12 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B12 curve length - L (bend fillets)",
"detail": "min -20.6 / max -20.6",
"result": "INFO"
},
{
"check": "C9",
"item": "B1 layer z (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B2 layer z (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B3 layer z (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B4 layer z (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B5 layer z (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B6 layer z (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B7 layer z (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B8 layer z (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "bottom Y-bars B2+B4 positions vs chain (worst, n=81/81)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "bottom X-bars B6+B8 positions vs chain (worst, n=61/61)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B3 positions vs chain (worst, n=42/42)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B1 positions vs chain (worst, n=42/42)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B7 positions vs chain (worst, n=32/32)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B5 positions vs chain (worst, n=32/32)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B2 at ends and alternate from -4875",
"detail": "",
"result": "PASS"
},
{
"check": "C9",
"item": "B6 at ends and alternate from -3625",
"detail": "",
"result": "PASS"
},
{
"check": "C9",
"item": "B11 mid levels 550/950/1350/1750 [derived]",
"detail": "[550, 950, 1350, 1750]",
"result": "PASS"
},
{
"check": "C9",
"item": "B12 mid levels 550/950/1350/1750 [derived]",
"detail": "[550, 950, 1350, 1750]",
"result": "PASS"
},
{
"check": "C9",
"item": "B10 levels vs chain (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B10 centreline size X",
"expected": 10198,
"actual": 10198.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B10 centreline size Y",
"expected": 7644,
"actual": 7644.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B9 positions = checkerboard of 38x29 grid",
"detail": "551 / 551",
"result": "PASS"
},
{
"check": "C9",
"item": "B9 bottom z (worst of all)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B9 vertical extent a (bottom leg z to top of straight)",
"expected": 1995,
"actual": 1995.0,
"diff": -0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B1 sample points outside footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B2 sample points outside footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B3 sample points outside footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B4 sample points outside footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B5 sample points outside footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B6 sample points outside footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B7 sample points outside footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B8 sample points outside footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B9 sample points outside footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B10 sample points outside footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B11 sample points outside footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B12 sample points outside footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "min cover to concrete exterior per mark",
"detail": "{\"B1\": 87.5, \"B2\": 87.5, \"B3\": 90.5, \"B4\": 87.5, \"B5\": 58.5, \"B6\": 57.5, \"B7\": 90.5, \"B8\": 85.5, \"B9\": 69.5, \"B10\": 66.5, \"B11\": 92.0, \"B12\": 92.0}",
"result": "INFO"
},
{
"check": "C9",
"item": "rebar pipe colour by diameter mismatches (all rebar)",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
}
]
}
@@ -0,0 +1,84 @@
{
"gate": "G3",
"checker": "g3_footing_rebar.py",
"verdict": "PASS",
"summary": {
"total": 73,
"passed": 71,
"failed": 2,
"cover": {
"B1": 87.5,
"B2": 87.5,
"B3": 90.5,
"B4": 87.5,
"B5": 58.5,
"B6": 57.5,
"B7": 90.5,
"B8": 85.5,
"B9": 69.5,
"B10": 66.5,
"B11": 92.0,
"B12": 92.0
}
},
"unplanned_fails": [],
"planned_fails": [
{
"item": "B9 bar count vs schedule",
"reason": "작도 551본(38×29 엇갈림) 채택 vs D3 493본 — 설계자 확인 대기"
},
{
"item": "B12 bar count vs schedule",
"reason": "작도 32본 채택(좌우 대칭) vs D3 38본 — 설계자 확인 대기"
}
],
"negative": {
"negH": {
"move": {
"mark": "B4",
"d": [
5,
0,
0
]
},
"new_fails": [
"bottom Y-bars B2+B4 positions vs chain (worst, n=81/81)"
],
"detected": true
},
"negV": {
"move": {
"mark": "B9",
"d": [
0,
0,
5
]
},
"new_fails": [
"B9 bottom z (worst of all)"
],
"detected": true
}
},
"reload": {
"ok": null,
"skipped": "일괄 실행(단일 세션) — 저장·재로드 안 함"
},
"unchanged": {
"ok": null,
"compared": 0,
"diffs": [],
"missing": [],
"against": null,
"skipped": "일괄 실행(단일 세션) — 앞 게이트 객체를 다시 만들지 않음"
},
"model": null,
"mode": "batch",
"secs": 42.1,
"session_secs": 158.1,
"inputs_sha": "c29db469c248f54a",
"job_id": "0586cbb90215",
"at": "2026-10-20 15:47:23"
}
@@ -0,0 +1,15 @@
{
"id": "0586cbb90215",
"pid": 5640,
"state": "완료",
"at": "2026-10-20 15:47:23",
"log": [
"[batch] one Rhino session: build G1..G5, check G1, G2, G3, G4, G5 (no per-gate save / reload)",
"[G1] PASS checks 171/171 (planned FAIL 0, unplanned 0) negative H/V True/True (batch)",
"[G2] PASS checks 42/42 (planned FAIL 0, unplanned 0) negative H/V True/True (batch)",
"[G3] PASS checks 71/73 (planned FAIL 2, unplanned 0) negative H/V True/True (batch)",
"[G4] PASS checks 111/116 (planned FAIL 5, unplanned 0) negative H/V True/True (batch)",
"[G5] PASS checks 183/183 (planned FAIL 0, unplanned 0) negative H/V True/True (batch)",
"[batch] done in 158.3s, objects 3350, model C:\\Users\\User\\Desktop\\바이브코딩\\pier_T\\Code\\교각모델링앱\\data\\운곡교P2\\runs\\current\\G5.3dm"
]
}
@@ -0,0 +1,707 @@
{
"summary": {
"total": 73,
"passed": 70,
"failed": 3,
"cover": {
"B1": 87.5,
"B2": 87.5,
"B3": 90.5,
"B4": 87.5,
"B5": 58.5,
"B6": 57.5,
"B7": 90.5,
"B8": 85.5,
"B9": 69.5,
"B10": 66.5,
"B11": 92.0,
"B12": 92.0
}
},
"results": [
{
"check": "C9",
"item": "B1 bar count vs schedule",
"expected": 42,
"actual": 42,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B1 pipes closed & paired",
"detail": "42/42",
"result": "PASS"
},
{
"check": "C9",
"item": "B1 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B1 curve length - L (bend fillets)",
"detail": "min -48.3 / max -48.3",
"result": "INFO"
},
{
"check": "C9",
"item": "B2 bar count vs schedule",
"expected": 42,
"actual": 42,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B2 pipes closed & paired",
"detail": "42/42",
"result": "PASS"
},
{
"check": "C9",
"item": "B2 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B2 curve length - L (bend fillets)",
"detail": "min -48.3 / max -48.3",
"result": "INFO"
},
{
"check": "C9",
"item": "B3 bar count vs schedule",
"expected": 42,
"actual": 42,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B3 pipes closed & paired",
"detail": "42/42",
"result": "PASS"
},
{
"check": "C9",
"item": "B3 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B3 curve length - L (bend fillets)",
"detail": "min -36.7 / max -36.7",
"result": "INFO"
},
{
"check": "C9",
"item": "B4 bar count vs schedule",
"expected": 39,
"actual": 39,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B4 pipes closed & paired",
"detail": "39/39",
"result": "PASS"
},
{
"check": "C9",
"item": "B4 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B4 curve length - L (bend fillets)",
"detail": "min 0.0 / max 0.0",
"result": "INFO"
},
{
"check": "C9",
"item": "B5 bar count vs schedule",
"expected": 32,
"actual": 32,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B5 pipes closed & paired",
"detail": "32/32",
"result": "PASS"
},
{
"check": "C9",
"item": "B5 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B5 curve length - L (bend fillets)",
"detail": "min -56.0 / max -56.0",
"result": "INFO"
},
{
"check": "C9",
"item": "B6 bar count vs schedule",
"expected": 32,
"actual": 32,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B6 pipes closed & paired",
"detail": "32/32",
"result": "PASS"
},
{
"check": "C9",
"item": "B6 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B6 curve length - L (bend fillets)",
"detail": "min -56.0 / max -56.0",
"result": "INFO"
},
{
"check": "C9",
"item": "B7 bar count vs schedule",
"expected": 32,
"actual": 32,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B7 pipes closed & paired",
"detail": "32/32",
"result": "PASS"
},
{
"check": "C9",
"item": "B7 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B7 curve length - L (bend fillets)",
"detail": "min -36.7 / max -36.7",
"result": "INFO"
},
{
"check": "C9",
"item": "B8 bar count vs schedule",
"expected": 29,
"actual": 29,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B8 pipes closed & paired",
"detail": "29/29",
"result": "PASS"
},
{
"check": "C9",
"item": "B8 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B8 curve length - L (bend fillets)",
"detail": "min 0.0 / max 0.0",
"result": "INFO"
},
{
"check": "C9",
"item": "B9 bar count vs schedule",
"expected": 493,
"actual": 551,
"diff": 58,
"tol": 0,
"result": "FAIL"
},
{
"check": "C9",
"item": "B9 pipes closed & paired",
"detail": "551/551",
"result": "PASS"
},
{
"check": "C9",
"item": "B9 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B9 curve length - L (bend fillets)",
"detail": "min -10.3 / max -10.3",
"result": "INFO"
},
{
"check": "C9",
"item": "B10 bar count vs schedule",
"expected": 9,
"actual": 9,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B10 pipes closed & paired",
"detail": "9/9",
"result": "PASS"
},
{
"check": "C9",
"item": "B10 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B10 curve length - L (bend fillets)",
"detail": "min -73.4 / max -73.4",
"result": "INFO"
},
{
"check": "C9",
"item": "B11 bar count vs schedule",
"expected": 28,
"actual": 28,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B11 pipes closed & paired",
"detail": "28/28",
"result": "PASS"
},
{
"check": "C9",
"item": "B11 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B11 curve length - L (bend fillets)",
"detail": "min -20.6 / max -20.6",
"result": "INFO"
},
{
"check": "C9",
"item": "B12 bar count vs schedule",
"expected": 38,
"actual": 32,
"diff": -6,
"tol": 0,
"result": "FAIL"
},
{
"check": "C9",
"item": "B12 pipes closed & paired",
"detail": "32/32",
"result": "PASS"
},
{
"check": "C9",
"item": "B12 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B12 curve length - L (bend fillets)",
"detail": "min -20.6 / max -20.6",
"result": "INFO"
},
{
"check": "C9",
"item": "B1 layer z (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B2 layer z (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B3 layer z (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B4 layer z (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B5 layer z (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B6 layer z (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B7 layer z (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B8 layer z (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "bottom Y-bars B2+B4 positions vs chain (worst, n=81/81)",
"expected": 0,
"actual": 5.0,
"diff": 5.0,
"tol": 1.0,
"result": "FAIL"
},
{
"check": "C9",
"item": "bottom X-bars B6+B8 positions vs chain (worst, n=61/61)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B3 positions vs chain (worst, n=42/42)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B1 positions vs chain (worst, n=42/42)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B7 positions vs chain (worst, n=32/32)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B5 positions vs chain (worst, n=32/32)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B2 at ends and alternate from -4875",
"detail": "",
"result": "PASS"
},
{
"check": "C9",
"item": "B6 at ends and alternate from -3625",
"detail": "",
"result": "PASS"
},
{
"check": "C9",
"item": "B11 mid levels 550/950/1350/1750 [derived]",
"detail": "[550, 950, 1350, 1750]",
"result": "PASS"
},
{
"check": "C9",
"item": "B12 mid levels 550/950/1350/1750 [derived]",
"detail": "[550, 950, 1350, 1750]",
"result": "PASS"
},
{
"check": "C9",
"item": "B10 levels vs chain (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B10 centreline size X",
"expected": 10198,
"actual": 10198.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B10 centreline size Y",
"expected": 7644,
"actual": 7644.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B9 positions = checkerboard of 38x29 grid",
"detail": "551 / 551",
"result": "PASS"
},
{
"check": "C9",
"item": "B9 bottom z (worst of all)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B9 vertical extent a (bottom leg z to top of straight)",
"expected": 1995,
"actual": 1995.0,
"diff": -0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B1 sample points outside footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B2 sample points outside footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B3 sample points outside footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B4 sample points outside footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B5 sample points outside footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B6 sample points outside footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B7 sample points outside footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B8 sample points outside footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B9 sample points outside footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B10 sample points outside footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B11 sample points outside footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B12 sample points outside footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "min cover to concrete exterior per mark",
"detail": "{\"B1\": 87.5, \"B2\": 87.5, \"B3\": 90.5, \"B4\": 87.5, \"B5\": 58.5, \"B6\": 57.5, \"B7\": 90.5, \"B8\": 85.5, \"B9\": 69.5, \"B10\": 66.5, \"B11\": 92.0, \"B12\": 92.0}",
"result": "INFO"
},
{
"check": "C9",
"item": "rebar pipe colour by diameter mismatches (all rebar)",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
}
]
}
@@ -0,0 +1,707 @@
{
"summary": {
"total": 73,
"passed": 70,
"failed": 3,
"cover": {
"B1": 87.5,
"B2": 87.5,
"B3": 90.5,
"B4": 87.5,
"B5": 58.5,
"B6": 57.5,
"B7": 90.5,
"B8": 85.5,
"B9": 64.5,
"B10": 66.5,
"B11": 92.0,
"B12": 92.0
}
},
"results": [
{
"check": "C9",
"item": "B1 bar count vs schedule",
"expected": 42,
"actual": 42,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B1 pipes closed & paired",
"detail": "42/42",
"result": "PASS"
},
{
"check": "C9",
"item": "B1 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B1 curve length - L (bend fillets)",
"detail": "min -48.3 / max -48.3",
"result": "INFO"
},
{
"check": "C9",
"item": "B2 bar count vs schedule",
"expected": 42,
"actual": 42,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B2 pipes closed & paired",
"detail": "42/42",
"result": "PASS"
},
{
"check": "C9",
"item": "B2 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B2 curve length - L (bend fillets)",
"detail": "min -48.3 / max -48.3",
"result": "INFO"
},
{
"check": "C9",
"item": "B3 bar count vs schedule",
"expected": 42,
"actual": 42,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B3 pipes closed & paired",
"detail": "42/42",
"result": "PASS"
},
{
"check": "C9",
"item": "B3 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B3 curve length - L (bend fillets)",
"detail": "min -36.7 / max -36.7",
"result": "INFO"
},
{
"check": "C9",
"item": "B4 bar count vs schedule",
"expected": 39,
"actual": 39,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B4 pipes closed & paired",
"detail": "39/39",
"result": "PASS"
},
{
"check": "C9",
"item": "B4 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B4 curve length - L (bend fillets)",
"detail": "min 0.0 / max 0.0",
"result": "INFO"
},
{
"check": "C9",
"item": "B5 bar count vs schedule",
"expected": 32,
"actual": 32,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B5 pipes closed & paired",
"detail": "32/32",
"result": "PASS"
},
{
"check": "C9",
"item": "B5 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B5 curve length - L (bend fillets)",
"detail": "min -56.0 / max -56.0",
"result": "INFO"
},
{
"check": "C9",
"item": "B6 bar count vs schedule",
"expected": 32,
"actual": 32,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B6 pipes closed & paired",
"detail": "32/32",
"result": "PASS"
},
{
"check": "C9",
"item": "B6 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B6 curve length - L (bend fillets)",
"detail": "min -56.0 / max -56.0",
"result": "INFO"
},
{
"check": "C9",
"item": "B7 bar count vs schedule",
"expected": 32,
"actual": 32,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B7 pipes closed & paired",
"detail": "32/32",
"result": "PASS"
},
{
"check": "C9",
"item": "B7 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B7 curve length - L (bend fillets)",
"detail": "min -36.7 / max -36.7",
"result": "INFO"
},
{
"check": "C9",
"item": "B8 bar count vs schedule",
"expected": 29,
"actual": 29,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B8 pipes closed & paired",
"detail": "29/29",
"result": "PASS"
},
{
"check": "C9",
"item": "B8 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B8 curve length - L (bend fillets)",
"detail": "min 0.0 / max 0.0",
"result": "INFO"
},
{
"check": "C9",
"item": "B9 bar count vs schedule",
"expected": 493,
"actual": 551,
"diff": 58,
"tol": 0,
"result": "FAIL"
},
{
"check": "C9",
"item": "B9 pipes closed & paired",
"detail": "551/551",
"result": "PASS"
},
{
"check": "C9",
"item": "B9 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B9 curve length - L (bend fillets)",
"detail": "min -10.3 / max -10.3",
"result": "INFO"
},
{
"check": "C9",
"item": "B10 bar count vs schedule",
"expected": 9,
"actual": 9,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B10 pipes closed & paired",
"detail": "9/9",
"result": "PASS"
},
{
"check": "C9",
"item": "B10 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B10 curve length - L (bend fillets)",
"detail": "min -73.4 / max -73.4",
"result": "INFO"
},
{
"check": "C9",
"item": "B11 bar count vs schedule",
"expected": 28,
"actual": 28,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B11 pipes closed & paired",
"detail": "28/28",
"result": "PASS"
},
{
"check": "C9",
"item": "B11 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B11 curve length - L (bend fillets)",
"detail": "min -20.6 / max -20.6",
"result": "INFO"
},
{
"check": "C9",
"item": "B12 bar count vs schedule",
"expected": 38,
"actual": 32,
"diff": -6,
"tol": 0,
"result": "FAIL"
},
{
"check": "C9",
"item": "B12 pipes closed & paired",
"detail": "32/32",
"result": "PASS"
},
{
"check": "C9",
"item": "B12 original length vs L (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B12 curve length - L (bend fillets)",
"detail": "min -20.6 / max -20.6",
"result": "INFO"
},
{
"check": "C9",
"item": "B1 layer z (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B2 layer z (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B3 layer z (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B4 layer z (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B5 layer z (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B6 layer z (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B7 layer z (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B8 layer z (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "bottom Y-bars B2+B4 positions vs chain (worst, n=81/81)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "bottom X-bars B6+B8 positions vs chain (worst, n=61/61)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B3 positions vs chain (worst, n=42/42)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B1 positions vs chain (worst, n=42/42)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B7 positions vs chain (worst, n=32/32)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B5 positions vs chain (worst, n=32/32)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B2 at ends and alternate from -4875",
"detail": "",
"result": "PASS"
},
{
"check": "C9",
"item": "B6 at ends and alternate from -3625",
"detail": "",
"result": "PASS"
},
{
"check": "C9",
"item": "B11 mid levels 550/950/1350/1750 [derived]",
"detail": "[550, 950, 1350, 1750]",
"result": "PASS"
},
{
"check": "C9",
"item": "B12 mid levels 550/950/1350/1750 [derived]",
"detail": "[550, 950, 1350, 1750]",
"result": "PASS"
},
{
"check": "C9",
"item": "B10 levels vs chain (worst)",
"expected": 0,
"actual": 0.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B10 centreline size X",
"expected": 10198,
"actual": 10198.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B10 centreline size Y",
"expected": 7644,
"actual": 7644.0,
"diff": 0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B9 positions = checkerboard of 38x29 grid",
"detail": "551 / 551",
"result": "PASS"
},
{
"check": "C9",
"item": "B9 bottom z (worst of all)",
"expected": 0,
"actual": 5.0,
"diff": 5.0,
"tol": 1.0,
"result": "FAIL"
},
{
"check": "C9",
"item": "B9 vertical extent a (bottom leg z to top of straight)",
"expected": 1995,
"actual": 1995.0,
"diff": -0.0,
"tol": 1.0,
"result": "PASS"
},
{
"check": "C9",
"item": "B1 sample points outside footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B2 sample points outside footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B3 sample points outside footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B4 sample points outside footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B5 sample points outside footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B6 sample points outside footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B7 sample points outside footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B8 sample points outside footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B9 sample points outside footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B10 sample points outside footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B11 sample points outside footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "B12 sample points outside footing",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
},
{
"check": "C9",
"item": "min cover to concrete exterior per mark",
"detail": "{\"B1\": 87.5, \"B2\": 87.5, \"B3\": 90.5, \"B4\": 87.5, \"B5\": 58.5, \"B6\": 57.5, \"B7\": 90.5, \"B8\": 85.5, \"B9\": 64.5, \"B10\": 66.5, \"B11\": 92.0, \"B12\": 92.0}",
"result": "INFO"
},
{
"check": "C9",
"item": "rebar pipe colour by diameter mismatches (all rebar)",
"expected": 0,
"actual": 0,
"diff": 0,
"tol": 0,
"result": "PASS"
}
]
}
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,103 @@
{
"gate": "G4",
"checker": "g4_coping_rebar.py",
"verdict": "PASS",
"summary": {
"total": 116,
"passed": 111,
"failed": 5,
"cover": {
"C1": 85.2,
"C2": 85.4,
"C3": 87.2,
"C4": 85.2,
"C5": 85.4,
"C6": 87.2,
"C7": 84.4,
"C8": 84.4,
"C9": 87.5,
"C10": 87.5,
"C11": 87.5,
"C12": 87.4,
"C13": 87.4,
"C14": 90.5,
"C15": 90.5,
"C16": 90.5,
"S1": 40.5,
"S2": 90.5
}
},
"unplanned_fails": [],
"planned_fails": [
{
"item": "C9 original length vs L (drawn widths ['1160.0', '1740.0'], K1 decision)",
"reason": "작도 폭 채택(K1)"
},
{
"item": "C10 original length vs L (drawn widths ['1160.0', '1740.0'], K1 decision)",
"reason": "작도 폭 채택(K1)"
},
{
"item": "C11 original length vs L (drawn widths ['1160.0', '1740.0'], K1 decision)",
"reason": "작도 폭 채택(K1)"
},
{
"item": "C12 original length vs L (drawn widths ['1106.0', '1686.0'], K1 decision)",
"reason": "작도 폭 채택(C12·C13 drawn width)"
},
{
"item": "C13 original length vs L (drawn widths ['1106.0', '1686.0'], K1 decision)",
"reason": "작도 폭 채택(C12·C13 drawn width)"
}
],
"negative": {
"negH": {
"move": {
"mark": "C11",
"d": [
5,
0,
0
]
},
"new_fails": [
"C11 stirrup X positions",
"C11 3 stirrups per position"
],
"detected": true
},
"negV": {
"move": {
"mark": "S1",
"d": [
0,
0,
5
]
},
"new_fails": [
"S1 EL = step top - 50 (worst)"
],
"detected": true
}
},
"reload": {
"ok": null,
"skipped": "일괄 실행(단일 세션) — 저장·재로드 안 함"
},
"unchanged": {
"ok": null,
"compared": 0,
"diffs": [],
"missing": [],
"against": null,
"skipped": "일괄 실행(단일 세션) — 앞 게이트 객체를 다시 만들지 않음"
},
"model": null,
"mode": "batch",
"secs": 48.9,
"session_secs": 158.1,
"inputs_sha": "c29db469c248f54a",
"job_id": "0586cbb90215",
"at": "2026-10-20 15:47:23"
}
@@ -0,0 +1,15 @@
{
"id": "0586cbb90215",
"pid": 5640,
"state": "완료",
"at": "2026-10-20 15:47:23",
"log": [
"[batch] one Rhino session: build G1..G5, check G1, G2, G3, G4, G5 (no per-gate save / reload)",
"[G1] PASS checks 171/171 (planned FAIL 0, unplanned 0) negative H/V True/True (batch)",
"[G2] PASS checks 42/42 (planned FAIL 0, unplanned 0) negative H/V True/True (batch)",
"[G3] PASS checks 71/73 (planned FAIL 2, unplanned 0) negative H/V True/True (batch)",
"[G4] PASS checks 111/116 (planned FAIL 5, unplanned 0) negative H/V True/True (batch)",
"[G5] PASS checks 183/183 (planned FAIL 0, unplanned 0) negative H/V True/True (batch)",
"[batch] done in 158.3s, objects 3350, model C:\\Users\\User\\Desktop\\바이브코딩\\pier_T\\Code\\교각모델링앱\\data\\운곡교P2\\runs\\current\\G5.3dm"
]
}
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,61 @@
{
"gate": "G5",
"checker": "g5_bearings.py",
"verdict": "PASS",
"summary": {
"total": 183,
"passed": 183,
"failed": 0
},
"unplanned_fails": [],
"planned_fails": [],
"negative": {
"negH": {
"move": {
"id": "BB05",
"d": [
5,
0,
0
]
},
"new_fails": [
"NO.5 bearing plan centre offset from pad (mm)"
],
"detected": true
},
"negV": {
"move": {
"id": "SP08",
"d": [
0,
0,
5
]
},
"new_fails": [
"NO.8 sole plate bottom = bearing top"
],
"detected": true
}
},
"reload": {
"ok": null,
"skipped": "일괄 실행(단일 세션) — 저장·재로드 안 함"
},
"unchanged": {
"ok": null,
"compared": 0,
"diffs": [],
"missing": [],
"against": null,
"skipped": "일괄 실행(단일 세션) — 앞 게이트 객체를 다시 만들지 않음"
},
"model": "C:\\Users\\User\\Desktop\\바이브코딩\\pier_T\\Code\\교각모델링앱\\data\\운곡교P2\\runs\\current\\G5.3dm",
"mode": "batch",
"secs": 0.7,
"session_secs": 158.1,
"inputs_sha": "c29db469c248f54a",
"job_id": "0586cbb90215",
"at": "2026-10-20 15:47:23"
}
@@ -0,0 +1,15 @@
{
"id": "0586cbb90215",
"pid": 5640,
"state": "완료",
"at": "2026-10-20 15:47:23",
"log": [
"[batch] one Rhino session: build G1..G5, check G1, G2, G3, G4, G5 (no per-gate save / reload)",
"[G1] PASS checks 171/171 (planned FAIL 0, unplanned 0) negative H/V True/True (batch)",
"[G2] PASS checks 42/42 (planned FAIL 0, unplanned 0) negative H/V True/True (batch)",
"[G3] PASS checks 71/73 (planned FAIL 2, unplanned 0) negative H/V True/True (batch)",
"[G4] PASS checks 111/116 (planned FAIL 5, unplanned 0) negative H/V True/True (batch)",
"[G5] PASS checks 183/183 (planned FAIL 0, unplanned 0) negative H/V True/True (batch)",
"[batch] done in 158.3s, objects 3350, model C:\\Users\\User\\Desktop\\바이브코딩\\pier_T\\Code\\교각모델링앱\\data\\운곡교P2\\runs\\current\\G5.3dm"
]
}
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,37 @@
{
"G1": {
"decision": "승인",
"by": "심영표",
"note": "일괄 실행 자동 승인",
"at": "2026-10-20 15:47:23",
"inputs_sha": "c29db469c248f54a"
},
"G2": {
"decision": "승인",
"by": "심영표",
"note": "일괄 실행 자동 승인",
"at": "2026-10-20 15:47:23",
"inputs_sha": "c29db469c248f54a"
},
"G3": {
"decision": "승인",
"by": "심영표",
"note": "일괄 실행 자동 승인",
"at": "2026-10-20 15:47:23",
"inputs_sha": "c29db469c248f54a"
},
"G4": {
"decision": "승인",
"by": "심영표",
"note": "일괄 실행 자동 승인",
"at": "2026-10-20 15:47:23",
"inputs_sha": "c29db469c248f54a"
},
"G5": {
"decision": "승인",
"by": "심영표",
"note": "일괄 실행 자동 승인",
"at": "2026-10-20 15:47:23",
"inputs_sha": "c29db469c248f54a"
}
}
@@ -0,0 +1,22 @@
{
"state": "완료",
"by": "심영표",
"pid": 5640,
"started": "2026-10-20 15:44:44",
"at": "2026-10-20 15:47:23",
"log": [
"G1~G5 단일 세션 실행 (게이트 검사·음성 시험만, 중간 저장·재로드 없음)",
"[batch] one Rhino session: build G1..G5, check G1, G2, G3, G4, G5 (no per-gate save / reload)",
"[G1] PASS checks 171/171 (planned FAIL 0, unplanned 0) negative H/V True/True (batch)",
"[G2] PASS checks 42/42 (planned FAIL 0, unplanned 0) negative H/V True/True (batch)",
"[G3] PASS checks 71/73 (planned FAIL 2, unplanned 0) negative H/V True/True (batch)",
"[G4] PASS checks 111/116 (planned FAIL 5, unplanned 0) negative H/V True/True (batch)",
"[G5] PASS checks 183/183 (planned FAIL 0, unplanned 0) negative H/V True/True (batch)",
"[batch] done in 158.3s, objects 3350, model C:\\Users\\User\\Desktop\\바이브코딩\\pier_T\\Code\\교각모델링앱\\data\\운곡교P2\\runs\\current\\G5.3dm",
"G1 PASS 171/171 (계획 FAIL 0) → 승인",
"G2 PASS 42/42 (계획 FAIL 0) → 승인",
"G3 PASS 71/73 (계획 FAIL 2) → 승인",
"G4 PASS 111/116 (계획 FAIL 5) → 승인",
"G5 PASS 183/183 (계획 FAIL 0) → 승인"
]
}
@@ -0,0 +1,309 @@
{
"_schema": "variability/1",
"status": "초안 — 템플릿 담당자 확정 전",
"grades": {
"V1": "값 변수",
"V2": "목록 변수",
"V3": "생성 변수",
"F": "고정"
},
"sections": {
"params:_meta": {
"grade": "F",
"source": [
"템플릿 고정"
],
"fixed_fields": [],
"note": "참고 정보(게이트가 쓰지 않음)",
"info": true
},
"params:lean_concrete": {
"grade": "V1",
"source": [
"표 밖 치수"
],
"fixed_fields": [],
"note": "버림콘크리트 치수·EL",
"info": false
},
"params:footing": {
"grade": "V1",
"source": [
"표 밖 치수"
],
"fixed_fields": [],
"note": "기초 치수·EL (rot_deg = 기초 회전 각도 값)",
"info": false
},
"params:column": {
"grade": "V1",
"source": [
"표 밖 치수"
],
"fixed_fields": [
"shape"
],
"note": "기둥 지름·높이 (단면 형식 shape는 고정)",
"info": false
},
"params:coping": {
"grade": "V2",
"source": [
"표 밖 치수"
],
"fixed_fields": [
"form"
],
"note": "코핑 외곽·치수 (형식 form은 고정)",
"info": false
},
"params:piles": {
"grade": "V1",
"source": [
"표 밖 치수"
],
"fixed_fields": [
"kind"
],
"note": "말뚝 개수·간격·길이 (말뚝 유무는 템플릿 형식)",
"info": false
},
"params:hitl_decisions_2026_10_07": {
"grade": "F",
"source": [
"템플릿 고정"
],
"fixed_fields": [],
"note": "참고 정보(게이트가 쓰지 않음)",
"info": true
},
"params:bearing_seats": {
"grade": "V1",
"source": [
"표",
"표 밖 치수"
],
"fixed_fields": [
"pedestal",
"pedestals"
],
"note": "받침 표 값 + 평면 위치 (대좌 구조는 고정)",
"info": false
},
"params:column_rebar": {
"grade": "V2",
"source": [
"표 밖 치수"
],
"fixed_fields": [
"form"
],
"note": "기둥 철근 사슬·위치",
"info": false
},
"params:footing_rebar": {
"grade": "V2",
"source": [
"표 밖 치수"
],
"fixed_fields": [
"form"
],
"note": "기초 철근 위치 사슬",
"info": false
},
"params:coping_rebar": {
"grade": "V2",
"source": [
"표 밖 치수"
],
"fixed_fields": [
"form",
"host",
"group"
],
"note": "코핑 철근",
"info": false
},
"params:sole_plates": {
"grade": "V1",
"source": [
"표"
],
"fixed_fields": [
"bearing_size"
],
"note": "솔플레이트 표 값 (받침 크기 규칙은 고정)",
"info": false
},
"params:_schema": {
"grade": "F",
"source": [
"템플릿 고정"
],
"fixed_fields": [],
"note": "참고 정보(게이트가 쓰지 않음)",
"info": true
},
"params:pier_id": {
"grade": "F",
"source": [
"템플릿 고정"
],
"fixed_fields": [],
"note": "교각 식별자",
"info": false
},
"params:rebar_marks": {
"grade": "V1",
"source": [
"표"
],
"fixed_fields": [
"*.shape"
],
"note": "재료표 직경·형상 (마크 체계의 형상은 고정)",
"info": false
},
"params:rebar_marks_src": {
"grade": "F",
"source": [
"템플릿 고정"
],
"fixed_fields": [],
"note": "참고 정보(게이트가 쓰지 않음)",
"info": true
},
"params:materials": {
"grade": "V1",
"source": [
"표 밖 치수"
],
"fixed_fields": [],
"note": "재료 강도 주기",
"info": false
},
"params:display": {
"grade": "F",
"source": [
"템플릿 고정"
],
"fixed_fields": [],
"note": "표시·색 설정",
"info": false
},
"expected:_schema": {
"grade": "F",
"source": [
"템플릿 고정"
],
"fixed_fields": [],
"note": "참고 정보(게이트가 쓰지 않음)",
"info": true
},
"expected:_note": {
"grade": "F",
"source": [
"템플릿 고정"
],
"fixed_fields": [],
"note": "참고 정보(게이트가 쓰지 않음)",
"info": true
},
"expected:pier_id": {
"grade": "F",
"source": [
"템플릿 고정"
],
"fixed_fields": [],
"note": "교각 식별자",
"info": false
},
"expected:tol_mm": {
"grade": "V1",
"source": [
"사람 입력"
],
"fixed_fields": [],
"note": "허용 오차",
"info": false
},
"expected:G1": {
"grade": "V2",
"source": [
"표",
"표 밖 치수"
],
"fixed_fields": [],
"note": "독립 기대값 (params와 따로 도면에서 옮긴 값)",
"info": false
},
"expected:G2": {
"grade": "V2",
"source": [
"표",
"표 밖 치수"
],
"fixed_fields": [],
"note": "독립 기대값 (params와 따로 도면에서 옮긴 값)",
"info": false
},
"expected:G3": {
"grade": "V2",
"source": [
"표",
"표 밖 치수"
],
"fixed_fields": [],
"note": "독립 기대값 (params와 따로 도면에서 옮긴 값)",
"info": false
},
"expected:G4": {
"grade": "V2",
"source": [
"표",
"표 밖 치수"
],
"fixed_fields": [],
"note": "독립 기대값 (params와 따로 도면에서 옮긴 값)",
"info": false
},
"expected:G5": {
"grade": "V2",
"source": [
"표",
"표 밖 치수"
],
"fixed_fields": [],
"note": "독립 기대값 (params와 따로 도면에서 옮긴 값)",
"info": false
},
"expected:rebar_palette": {
"grade": "V1",
"source": [
"사람 입력"
],
"fixed_fields": [],
"note": "철근 직경별 색 (사람 결정 기록)",
"info": false
},
"expected:rebar_palette_src": {
"grade": "F",
"source": [
"템플릿 고정"
],
"fixed_fields": [],
"note": "참고 정보(게이트가 쓰지 않음)",
"info": true
},
"expected:planned_fail": {
"grade": "V1",
"source": [
"사람 입력"
],
"fixed_fields": [],
"note": "계획된 FAIL (사람 결정 기록)",
"info": false
}
}
}