핵심 요약
- 최신 작업트리를 반영한 뒤 실제로 다시 측정했다. 기준 코드는
7b4354f62, 전체 100개를 실행했고 성적은 동일한 평가 가능 88개로 비교했다. - FAIL은 7→2개(2.3%)다. SUCCESS 70개, ACCEPTABLE 16개이며 새로운 FAIL은 없다. 이전 실패 5개의 추가 겹침은 모두 0으로 줄었다.
- 남은 두 건은 글자 넘침이 아니다.
6248263은 부모–자식 도형이 분리 대상에서 제외되고,6690122는 가로 이동 여유가 부족하다. 둘 다 원래 겹친 쌍의 면적 증가가 FAIL 사유이며 넘침 0·폰트 배율 1.0이다. - 이전 진단을 정정했다.
6248263의 ‘6개 노드를 더 옮길 수 있다’는 단서는 실제 실행과 다른 부모 관계에서 나온 값이다. 이번에는 원안에서 확정한 관계까지 맞춰 확인했다. 알고리즘 수정은 하지 않았다.
현재 FAIL
2
동일한 평가 가능 88개에서 FAIL인 케이스 수
이전 7−5
현재 FAIL 비율
2.3%
FAIL ÷ 동일 평가 가능 88개
이전 8%
평가 제외
12
전체 100개 중 성적 분모에서 빠진 케이스
분모 88
2026-08-31 신규 실측 스냅샷이다. 자동 갱신되지 않으며, 알고리즘 수정 없이 측정만 다시 한 결과다.
코드와 측정 결과의 시점을 맞췄다
원본 저장소의 feat/post-replace-relayout 변경을 현재 작업트리에 반영했다. 96b2b3340 → 7b4354f62이며, 글자 영역을 이동 판단에 반영하는 수정이 포함된다. 원본에 있던 별도의 미추적 보고서 작업은 건드리지 않았다.
최신 코드가 있는 원본 폴더에도 기본 평가표는 7 FAIL인 옛 결과가 남아 있었다. 이를 현재 결과로 재사용하지 않고 100개를 376회 신규 렌더했다. 최종 글자 영역 측정은 2026-08-31 09:25:01~09:25:28 KST, 공식 채점은 09:25:46 KST, 네 장 교차 채점은 09:25:59 KST다.
전체 100개 중 평가 제외 12개를 빼고 동일한 88개만 비교했다. Original·Before·Expected 문서와 그 측정값의 해시도 이전 분석과 일치한다. 따라서 이번 7→2는 케이스를 빼거나 정답을 바꿔 얻은 개선이 아니다. 아래 표의 ‘이전’은 직전 7 FAIL 분석이다.
현행 코호트별 판정
| 범위 | 평가 수 | SUCCESS | ACCEPTABLE | 이전 FAIL | FAIL | FAIL 비율 |
|---|---|---|---|---|---|---|
| 전체 | 88 | 70 | 16 | 7 | 2 | 2.3% |
| 기존 84개 | 73 | 59 | 13 | 6 | 1 | 1.4% |
| 추가 16개 | 15 | 11 | 3 | 1 | 1 | 6.7% |
기존 84개 묶음의 평가 대상 73개에서 FAIL이 6→1개, 추가 16개 묶음의 평가 대상 15개에서는 1개 그대로다. 이번 비교는 각 묶음의 분모와 케이스 ID가 같으며, 더 오래된 84개·14 FAIL 결과와 직접 섞지 않았다.
이전 실패 7개 중 5개가 해소됐다
아래는 이전 FAIL 7개의 원안 대비 추가 겹침 면적을 두 버전에서 비교한 것이다. ‘이전 결과’와 ‘최신 결과’ 모두 재배치 후 After이며, 대치 직후 Before를 뜻하지 않는다. 추가 겹침은 10→2쌍, 쌍별 면적 합은 70,002→4,032px²다. 가장 컸던 6478618도 추가 겹침 0이 됐다.
이 면적은 충돌 쌍별 증가분을 합한 값이므로 같은 위치가 중복 집계될 수 있다. 사용자 불편이나 망가진 화면 비율로 해석하지 않는다. 남은 두 값이 작게 보이더라도 현행 엄격 판정에서는 FAIL이다.
이전 FAIL 7개 재검증
| 케이스 | 이전 추가 겹침 px² | 최신 추가 겹침 px² | 최신 쌍 수 | 최소 폰트 배율 | 최신 판정 |
|---|---|---|---|---|---|
| 6.48M | 44.82K | 0 | 0 | 1 | SUCCESS |
| 6.57M | 9.07K | 0 | 0 | 1 | SUCCESS |
| 5.84M | 6.1K | 0 | 0 | 1 | ACCEPTABLE |
| 6.69M | 3.63K | 3.63K | 1 | 1 | FAIL |
| 5.65M | 3.17K | 0 | 0 | 1 | ACCEPTABLE |
| 6.72M | 2.81K | 0 | 0 | 0.7 | ACCEPTABLE |
| 6.25M | 399 | 399 | 1 | 1 | FAIL |
실측 글자 영역과 이동 판단의 불일치는 개선됐다
이전 분석의 다섯 글자 충돌은 프레임으로는 안 겹치지만 실제 글자는 겹치는 경우였다. 최신 placementBoxMap은 글머리 기호를 포함한 실제 글자 영역을 이동 대상·유닛 점유 범위·간격·장애물 여유 계산에 사용한다. 크기 변경 후와 외곽선 보정 후에도 측정값으로 이동 단계를 다시 실행한다.
이번 신규 렌더에서 5647291, 5836322, 6478618, 6567992, 6720819 모두 원안 대비 추가 겹침 0을 확인했다. 아래 표의 프레임·글자 겹침과 침범 깊이는 이전 분석의 역사 자료이고 현재 증상이 아니다.
6478618의 사진·카드까지 포함한 4쌍은 모두 해소됐다. 6720819는 최소 폰트 0.70을 유지한 ACCEPTABLE이므로 ‘겹침 해소’와 ‘원래 글자 크기 유지’를 혼동하지 않는다. 폰트 하한을 더 낮춘 결과는 아니다. 별도로 6425597도 ACCEPTABLE→SUCCESS가 됐다.
해소된 글자 충돌의 이전 측정값
| 케이스 | 프레임 겹침 px² | 실측 겹침 px² | 세로 침범 px | 별도 유닛 | 최신 추가 겹침 px² |
|---|---|---|---|---|---|
| 6.48M | 0 | 25.71K | 28.7 | 예 | 0 |
| 6.57M | 0 | 9.07K | 18.3 | 예 | 0 |
| 5.84M | 0 | 6.1K | 12.3 | 예 | 0 |
| 5.65M | 0 | 3.17K | 39.6 | 예 | 0 |
| 6.72M | 0 | 2.81K | 9.6 | 예 | 0 |
위 표의 프레임·글자 겹침과 침범 깊이는 이전 분석의 역사 자료이며 현재 증상이 아니다.
남은 FAIL은 서로 다른 두 처리 경계에 있다
6690122 · 완전 분리를 요구하는 가로 이동 후보
배경 도형과 이미지의 기존 겹침이 14,712.83→18,345.99px², 약 3,633px² 증가했다. Before의 넘침 32,405px²는 없어졌고, 폰트는 1.0이다.
최종 문서에서 실제 실행과 같은 관계를 넣고 진단하면 세로 후보는 가로 충돌로 분류한다. 가로 후보는 대상 1쌍을 찾지만 여유 부족으로 이동 0이다. 두 유닛의 가로 침범은 126.71px이고 최소 간격 0.5px를 더해 127.21px를 떼려 한다. 하지만 왼쪽 도형의 왼쪽 여유는 108px, 오른쪽 이미지의 오른쪽 여유는 0px다. 한쪽 이동도 양쪽 분담도 후보가 만들어지지 않는다.
이미지에는 위상상 pinned=true가 표시되지만 이번 중단을 직접 설명하는 근거는 여유 검사에서 후보 0개인 사실이다. ‘고정 플래그 때문에 막혔다’고 단정하지 않는다. 다음 검토는 모든 겹침을 0으로 만드는 것보다 원안의 의도된 겹침을 보존하면서 증가분만 되돌리는 배치가 가능한지다. 아직 그 후보의 유효성은 실측하지 않았다.
6248263 · 부모–자식 도형은 분리 대상에서 빠진다
두 배경 도형의 기존 겹침이 22,688.50→23,087.87px², 399.37px² 증가하여 최종 지표에는 399px²로 기록된다. Before의 넘침 18,914px²는 없어졌고, 폰트는 1.0이다.
실제 진입점은 원안에서 텍스트 소속과 도형의 부모 관계를 확정한다. 이 케이스에서는 작은 제목 배경이 큰 본문 배경의 자식이다. method7과 method8은 이 관계를 보고 겹침 1쌍을 동일·계층 관련 유닛으로 묶어 분리 대상에서 제외한다. 세로 이동 그룹 0개·가로 대상 0개·이동 0이며, 공간 부족이 원인은 아니다.
이전 보고서 정정: 원안 부모 관계를 전달하지 않은 독립 method7 실행에서는 두 도형을 별개로 보아 6개 노드를 이동시켰다. 같은 실험에 실제 관계를 전달하면 이동 0이 재현된다. 따라서 이를 ‘추가 실행만 하면 해결되는 종료 순서 문제’의 증거로 사용할 수 없다. 부모–자식의 의도된 겹침을 어떻게 보존할지부터 검토해야 한다.
공통점 · 후보 허용과 최종 채점은 같은 질문이 아니다
공통 신규 겹침 게이트는 입력에 이미 있던 노드 쌍이면 면적 성장만으로 거부하지 않는다. 두 케이스 모두 Before→After 게이트의 x·y 신규 쌍 목록은 비어 있다. 반면 최종 지표는 Original보다 늘어난 면적도 신규 겹침으로 센다. 이 차이는 코드에 명시된 정책이며, 게이트 통과가 최종 PASS를 보장하지 않는 이유다. 다만 최초 증가분을 만든 정확한 내부 단계까지는 이번 진단으로 단정하지 않는다.
다음 수정은 글자 축소보다 관계·겹침 보존에 집중한다
두 FAIL 모두 Sol Expected에서는 SUCCESS·넘침 0·추가 겹침 0·폰트 1.0이다. 참고 가능한 배치는 있지만 자동 알고리즘이 현재 제약과 후보만으로 도달할 수 있다는 증명은 아니다. 아래는 수정 전 검증 제안이며 이번에는 적용하지 않았다.
399px²를 작다는 이유로 무시하거나 폰트 하한을 낮추어 FAIL 수만 줄이지 않는다. 먼저 관계와 의도된 겹침 보존 목표를 명확히 하고, 동일 88개에서 실제 문서·글자 영역을 다시 확인해야 한다.
수정 전 확인할 순서
- 6248263 — 관계 보존: 부모–자식 도형의 겹침을 무조건 분리하지 않으면서 증가분을 제한하는 조건을 검토한다. 원안 관계를 전달한 회귀 케이스로 먼저 고정한다.
- 6690122 — 후보 목표: 완전 분리 127.21px를 요구하는 후보 외에 원안 대비 증가분을 줄이는 합법적 후보가 있는지 확인한다. 이미지·주변 요소·넘침이 악화되지 않아야 한다.
- 이전 해소 5개 — 회귀 방지: 실측 글자 점유 범위를 계속 사용하고, 6720819의 폰트를 현재 0.70보다 더 줄이지 않는다.
- 검증 운영: 코드 버전·입력 해시·최종 문서 해시·측정 시각을 한 묶음으로 저장한다. 전체 100개를 실행하되 성적 분모 88개를 유지한다.
무엇을 검증했고 무엇이 남았나
- 신규 측정 완료: 현재 코드로 100개·376회 렌더, 최종 문서–측정 해시 100/100 일치. 공식 평가와 88개×4장 교차 채점이 일치하며 UNKNOWN은 0이다. 이전과 비교해 신규 FAIL 0, 폰트 배율 악화 0이다.
- 코드 검증: 실측 배치 회귀 테스트 10/10 통과. 전체 포맷 검사·린트·앱 타입 검사 통과. 처음 타입 검사에서 빠져 있던 무추적
wasm-fx/pkg를 원본에서 가져온 뒤 재검사했다. 전체 테스트 스위트는 이번에 다시 돌리지 않았다. - 평가 제외: Sol UNSOLVABLE 11개 + 외곽선 위상 미지원
68589811개다.6553655의 제외는 시각 품질 RETRY_REQUIRED이며 모든 배치가 불가능하다는 증명이 아니다. 성적 2.3%의 분모는 100개가 아니라 88개다. - 판정 범위: FAIL은 원안 대비 넘침 악화, 신규·증가 겹침, 최소 폰트 0.70 미만 중 하나다. SUCCESS는 FAIL이 아니고 폰트 ≥0.90 및 유휴 여백 ≤원안이어야 한다. 폰트·여백 허용 오차는 0.0005다. 수치 SUCCESS가 모든 디자인 품질을 보장하지 않는다.
- 남은 질문:
6248263의 부모 관계를 유지하면서 의도된 겹침 증가만 제한할 수 있는가?6690122에서 완전 분리보다 작은 보정으로 원안 수준을 회복할 수 있는가? 새 후보 적용·전체 화면 육안 검수·정확한 내부 단계별 변이 추적은 아직 하지 않았다. - 주의:
actualOutlineFit.resolved는 넘침 해결을 뜻할 수 있으며 전체 판정의 SUCCESS 보증이 아니다. 이번 분석은 이미지를 닮게 다시 디자인한 결과가 아니라 현재 알고리즘의 실패 경로 진단이다.
출처
경로는 모두 miricanvas-iui 기준. 이 보고서는 2026-08-31 09:25 KST 신규 실측 스냅샷이다.
- 측정값
evaluation.json100개 공식 평가 ·panes.json88개 네 장 비교 ·diagnosis.json두 FAIL 상세 근거- 검산
report-audit.sql— 케이스 ID로 연결한 읽기 전용 집계- 기준 코드
7b4354f62·feat/post-replace-relayout(96b2b3340 → 7b4354f62)